Module: Enumerable

Defined in:
lib/enumerable_lz/filter.rb,
lib/enumerable_lz.rb,
lib/enumerable_lz/filter_18.rb,
lib/enumerable_lz/transform.rb,
lib/enumerable_lz/filter_mrb.rb,
lib/enumerable_lz/transform_18.rb,
lib/enumerable_lz/enumerable_ex.rb,
lib/enumerable_lz/transform_mrb.rb

Overview

for MacRuby

Defined Under Namespace

Modules: EnumerableLz Classes: Filter, Transform

Instance Method Summary collapse

Instance Method Details

#drop_lz(n) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
26
27
# File 'lib/enumerable_lz/enumerable_ex.rb', line 22

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}
end

#drop_while_lz(&block) ⇒ Object



29
30
31
32
33
# File 'lib/enumerable_lz/enumerable_ex.rb', line 29

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)}
end

#filter(pattern = nil, &block) ⇒ Object



3
4
5
# File 'lib/enumerable_lz/filter.rb', line 3

def filter pattern = nil, &block
  Filter.new self, pattern||block
end

#filter_with_initproc(init_proc, pattern = nil, &block) ⇒ Object



7
8
9
# File 'lib/enumerable_lz/filter.rb', line 7

def filter_with_initproc init_proc, pattern = nil, &block
  Filter.new self, init_proc, pattern||block
end

#grep_lz(pattern, &block) ⇒ Object



14
15
16
17
# File 'lib/enumerable_lz/enumerable_ex.rb', line 14

def grep_lz pattern, &block
  enum = filter pattern
  block_given? ? enum.transform(&block) : enum
end

#map_lzObject Also known as: collect_lz



19
20
21
# File 'lib/enumerable_lz/enumerable_ex.rb', line 19

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

#reject_lz(&block) ⇒ Object



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

def reject_lz &block
  filter {|e|!block.call(e)}
end

#select_lz(&block) ⇒ Object Also known as: find_all_lz



4
5
6
# File 'lib/enumerable_lz/enumerable_ex.rb', line 4

def select_lz &block
  filter &block
end

#take_lz(n) ⇒ Object

Raises:

  • (ArgumentError)


35
36
37
38
39
40
# File 'lib/enumerable_lz/enumerable_ex.rb', line 35

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}
end

#take_while_lz(&block) ⇒ Object



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

def take_while_lz &block
  return self if !block_given?
  filter {|el|throw :do_break unless block.call(el);true}
end

#transform(&block) ⇒ Object



3
4
5
# File 'lib/enumerable_lz/transform.rb', line 3

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