summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy
diff options
context:
space:
mode:
Diffstat (limited to 'debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy')
-rw-r--r--debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake7
-rw-r--r--debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb163
-rw-r--r--debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb53
3 files changed, 0 insertions, 223 deletions
diff --git a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake b/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake
deleted file mode 100644
index 682134c..0000000
--- a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake
+++ /dev/null
@@ -1,7 +0,0 @@
-MRuby::Gem::Specification.new('mruby-enum-lazy') do |spec|
- spec.license = 'MIT'
- spec.author = 'mruby developers'
- spec.summary = 'Enumerator::Lazy class'
- spec.add_dependency('mruby-enumerator', :core => 'mruby-enumerator')
- spec.add_dependency('mruby-enum-ext', :core => 'mruby-enum-ext')
-end
diff --git a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb b/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb
deleted file mode 100644
index c98681e..0000000
--- a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-module Enumerable
-
- # = Enumerable#lazy implementation
- #
- # Enumerable#lazy returns an instance of Enumerator::Lazy.
- # You can use it just like as normal Enumerable object,
- # except these methods act as 'lazy':
- #
- # - map collect
- # - select find_all
- # - reject
- # - grep
- # - drop
- # - drop_while
- # - take_while
- # - flat_map collect_concat
- # - zip
- def lazy
- Enumerator::Lazy.new(self)
- end
-end
-
-class Enumerator
- # == Acknowledgements
- #
- # Based on https://github.com/yhara/enumerable-lazy
- # Inspired by https://github.com/antimon2/enumerable_lz
- # http://jp.rubyist.net/magazine/?0034-Enumerable_lz (ja)
- class Lazy < Enumerator
- def initialize(obj, &block)
- super(){|yielder|
- begin
- obj.each{|x|
- if block
- block.call(yielder, x)
- else
- yielder << x
- end
- }
- rescue StopIteration
- end
- }
- end
-
- def to_enum(meth=:each, *args, &block)
- unless self.respond_to?(meth)
- raise NoMethodError, "undefined method #{meth}"
- end
- lz = Lazy.new(self, &block)
- lz.obj = self
- lz.meth = meth
- lz.args = args
- lz
- end
- alias enum_for to_enum
-
- def map(&block)
- Lazy.new(self){|yielder, val|
- yielder << block.call(val)
- }
- end
- alias collect map
-
- def select(&block)
- Lazy.new(self){|yielder, val|
- if block.call(val)
- yielder << val
- end
- }
- end
- alias find_all select
-
- def reject(&block)
- Lazy.new(self){|yielder, val|
- unless block.call(val)
- yielder << val
- end
- }
- end
-
- def grep(pattern)
- Lazy.new(self){|yielder, val|
- if pattern === val
- yielder << val
- end
- }
- end
-
- def drop(n)
- dropped = 0
- Lazy.new(self){|yielder, val|
- if dropped < n
- dropped += 1
- else
- yielder << val
- end
- }
- end
-
- def drop_while(&block)
- dropping = true
- Lazy.new(self){|yielder, val|
- if dropping
- if not block.call(val)
- yielder << val
- dropping = false
- end
- else
- yielder << val
- end
- }
- end
-
- def take(n)
- if n == 0
- return Lazy.new(self){raise StopIteration}
- end
- taken = 0
- Lazy.new(self){|yielder, val|
- yielder << val
- taken += 1
- if taken >= n
- raise StopIteration
- end
- }
- end
-
- def take_while(&block)
- Lazy.new(self){|yielder, val|
- if block.call(val)
- yielder << val
- else
- raise StopIteration
- end
- }
- end
-
- def flat_map(&block)
- Lazy.new(self){|yielder, val|
- ary = block.call(val)
- # TODO: check ary is an Array
- ary.each{|x|
- yielder << x
- }
- }
- end
- alias collect_concat flat_map
-
- def zip(*args, &block)
- enums = [self] + args
- Lazy.new(self){|yielder, val|
- ary = enums.map{|e| e.next}
- if block
- yielder << block.call(ary)
- else
- yielder << ary
- end
- }
- end
-
- alias force to_a
- end
-end
diff --git a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb b/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
deleted file mode 100644
index 940d070..0000000
--- a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-assert("Enumerator::Lazy") do
- a = [1, 2]
- assert_equal Enumerator::Lazy, a.lazy.class
-end
-
-assert("Enumerator::Lazy laziness") do
- a = Object.new
- def a.each
- return to_enum :each unless block_given?
- self.b << 10
- yield 1
- self.b << 20
- yield 2
- self.b << 30
- yield 3
- self.b << 40
- yield 4
- self.b << 50
- yield 5
- end
- def a.b(b=nil)
- @b = b if b
- @b
- end
-
- a.b([])
- assert_equal [1,2], a.each.lazy.take(2).force
- assert_equal [10,20], a.b
-
- a.b([])
- assert_equal [2,4], a.each.lazy.select{|x|x%2==0}.take(2).force
- assert_equal [10,20,30,40], a.b
-
- a.b([])
- assert_equal [1], a.each.lazy.take_while{|x|x<2}.take(1).force
- assert_equal [10], a.b
-
- a.b([])
- assert_equal [1], a.each.lazy.take_while{|x|x<2}.take(4).force
- assert_equal [10,20], a.b
-end
-
-assert("Enumrator::Lazy#to_enum") do
- lazy_enum = (0..Float::INFINITY).lazy.to_enum(:each_slice, 2)
- assert_kind_of Enumerator::Lazy, lazy_enum
- assert_equal [0*1, 2*3, 4*5, 6*7], lazy_enum.map { |a| a.first * a.last }.first(4)
-end
-
-assert("Enumerator::Lazy#zip with cycle") do
- e1 = [1, 2, 3].cycle
- e2 = [:a, :b].cycle
- assert_equal [[1,:a],[2,:b],[3,:a]], e1.lazy.zip(e2).first(3)
-end