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

Expanded Method Summary collapse

Instance Method Details

#drop_lz(n) ⇒ Enumerator::Filter

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#drop`

Returns:

Raises:

  • (ArgumentError)


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

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#drop_while`

Yields:

  • (el)

Returns:



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

Overloads:

  • #filter {|el| ... } ⇒ Enumerator::Filter

    filter by block

    Yields:

    • (el)

      filterring block.

    Yield Parameters:

    • el

      each element of original Enumerable

    Yield Returns:

    • (Boolean)

    Returns:

  • #filter(pattern) ⇒ Enumerator::Filter

    filter by pattern

    Parameters:

    • pattern (#===)

      filterring pattern. (uses === method)

    Returns:

Yields:

  • (el)

Returns:



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

Deprecated.

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

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#grep`

Overloads:

Yields:

  • (el)

Returns:



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

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#map`

Yields:

  • (el)

Returns:



42
# File 'lib/enumerable_lz/enumerable_ex.rb', line 42

self.__send__(:alias_method, :map_lz, :transform)

#reject_lz {|el| ... } ⇒ Enumerator::Filter

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#reject`

Yields:

  • (el)

Returns:



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

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#select`

Yields:

  • (el)

Returns:



10
11
12
# File 'lib/enumerable_lz/enumerable_ex.rb', line 10

def select_lz &block
  filter &block
end

#take_lz(n) ⇒ Enumerator::Filter

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#take`

Returns:

Raises:

  • (ArgumentError)


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

Note:

available only requiring “enumerable_lz/enumerable_ex”

lazy equivalent of ‘Enumerable#take_while`

Yields:

  • (el)

Returns:



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

Yields:

  • (el)

    transform block.

Yield Parameters:

  • el

    each element of original Enumerable

Yield Returns:

  • (Object)

Returns:



48
49
50
# File 'lib/enumerable_lz.rb', line 48

def transform &block
  Enumerator::Transform.new self, &block
end