Module: Enumerable
- Defined in:
- lib/enumerable_lz.rb,
lib/enumerable_lz/filter_18.rb,
lib/enumerable_lz/transform_18.rb,
lib/enumerable_lz/enumerable_ex.rb
Overview
for Ruby1.8.7
Defined Under Namespace
Modules: EnumerableLz Classes: Enumerator
Fundamental Method Summary collapse
-
#filter(pattern = nil) {|el| ... } ⇒ Enumerator::Filter
Filter by pattern or block.
-
#filter_with_initproc(init_proc, pattern = nil) {|el| ... } ⇒ Enumerator::Filter
deprecated
Deprecated.
Use filter.with_initializer instead of this method
-
#transform {|el| ... } ⇒ Enumerator::Transform
Transform by block.
Expanded Method Summary collapse
-
#drop_lz(n) ⇒ Enumerator::Filter
lazy equivalent of ‘Enumerable#drop`.
-
#drop_while_lz {|el| ... } ⇒ Enumerator::Filter
lazy equivalent of ‘Enumerable#drop_while`.
-
#grep_lz(pattern) {|el| ... } ⇒ Enumerator::Filter, Enumerator::Transform
lazy equivalent of ‘Enumerable#grep`.
-
#map_lz {|el| ... } ⇒ Enumerator::Transform
(also: #collect_lz)
lazy equivalent of ‘Enumerable#map`.
-
#reject_lz {|el| ... } ⇒ Enumerator::Filter
lazy equivalent of ‘Enumerable#reject`.
-
#select_lz {|el| ... } ⇒ Enumerator::Filter
(also: #find_all_lz)
lazy equivalent of ‘Enumerable#select`.
-
#take_lz(n) ⇒ Enumerator::Filter
lazy equivalent of ‘Enumerable#take`.
-
#take_while_lz {|el| ... } ⇒ Enumerator::Filter
lazy equivalent of ‘Enumerable#take_while`.
Instance Method Details
#drop_lz(n) ⇒ Enumerator::Filter
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#drop`
48 49 50 51 52 53 54 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 48 def drop_lz n raise ArgumentError, "attempt to take negative size" if n < 0 # each_with_index.filter{|el,idx|idx >= n}.transform{|el,idx|el} # cnt = 0 # filter_with_initproc(Proc.new{cnt=0}) {|el| (cnt+=1) > n} filter.with_index {|el, i| i >= n} end |
#drop_while_lz {|el| ... } ⇒ Enumerator::Filter
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#drop_while`
60 61 62 63 64 65 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 60 def drop_while_lz &block return self if !block_given? flg = false # filter_with_initproc(Proc.new{flg=false}) {|el|flg || (!block.call(el) ? flg = true : false)} filter.with_initializer(Proc.new{flg=false}) {|el|flg || (!block.call(el) ? flg = true : false)} end |
#filter {|el| ... } ⇒ Enumerator::Filter #filter(pattern) ⇒ Enumerator::Filter
Filter by pattern or block
31 32 33 |
# File 'lib/enumerable_lz.rb', line 31 def filter pattern = nil, &block Enumerator::Filter.new self, pattern||block end |
#filter_with_initproc(init_proc, pattern = nil) {|el| ... } ⇒ Enumerator::Filter
Use filter.with_initializer instead of this method
39 40 41 |
# File 'lib/enumerable_lz.rb', line 39 def filter_with_initproc init_proc, pattern = nil, &block filter.with_initializer init_proc, pattern = nil, &block end |
#grep_lz(pattern) ⇒ Enumerator::Filter #grep_lz(pattern) {|el| ... } ⇒ Enumerator::Transform
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#grep`
32 33 34 35 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 32 def grep_lz pattern, &block enum = filter pattern block_given? ? enum.transform(&block) : enum end |
#map_lz {|el| ... } ⇒ Enumerator::Transform Also known as: collect_lz
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#map`
42 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 42 self.__send__(:alias_method, :map_lz, :transform) |
#reject_lz {|el| ... } ⇒ Enumerator::Filter
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#reject`
19 20 21 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 19 def reject_lz &block filter {|e|!block.call(e)} end |
#select_lz {|el| ... } ⇒ Enumerator::Filter Also known as: find_all_lz
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#select`
10 11 12 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 10 def select_lz &block filter &block end |
#take_lz(n) ⇒ Enumerator::Filter
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#take`
70 71 72 73 74 75 76 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 70 def take_lz n raise ArgumentError, "attempt to take negative size" if n < 0 # each_with_index.filter{|el,idx|throw :do_break if idx >= n;true}.transform{|el,idx|el} # cnt = 0 # filter_with_initproc(Proc.new{cnt=0}) {|el| throw :do_break if (cnt+=1) > n;true} filter.with_index {|el, i| throw :do_break if i >= n; true} end |
#take_while_lz {|el| ... } ⇒ Enumerator::Filter
available only requiring “enumerable_lz/enumerable_ex”
lazy equivalent of ‘Enumerable#take_while`
82 83 84 85 |
# File 'lib/enumerable_lz/enumerable_ex.rb', line 82 def take_while_lz &block return self if !block_given? filter {|el|throw :do_break unless block.call(el); true} end |
#transform {|el| ... } ⇒ Enumerator::Transform
Transform by block
48 49 50 |
# File 'lib/enumerable_lz.rb', line 48 def transform &block Enumerator::Transform.new self, &block end |