Class: Enumerator::Chain

Inherits:
Object show all
Includes:
Enumerable
Defined in:
ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb

Constant Summary

Constants included from Enumerable

Enumerable::NONE

Instance Method Summary collapse

Methods included from Enumerable

#+, #all?, #any?, #chain, #collect, #count, #cycle, #detect, #drop, #drop_while, #each_cons, #each_slice, #each_with_index, #each_with_object, #entries, #find_all, #find_index, #first, #flat_map, #grep, #group_by, #hash, #include?, #inject, #lazy, #max, #max_by, #min, #min_by, #minmax, #minmax_by, #none?, #one?, #partition, #reject, #reverse_each, #sort, #sort_by, #take, #take_while, #to_h, to_h, #uniq, #zip

Constructor Details

#initialize(*args) ⇒ Chain

Returns a new instance of Chain.



19
20
21
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 19

def initialize(*args)
  @enums = args
end

Instance Method Details

#__copy_enumsObject



54
55
56
57
58
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 54

def __copy_enums
  @enums.each_with_object([]) do |e, a|
    a << e.clone
  end
end

#each(&block) ⇒ Object



27
28
29
30
31
32
33
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 27

def each(&block)
  return to_enum unless block_given?

  @enums.each { |e| e.each(&block) }

  self
end

#initialize_copy(orig) ⇒ Object



23
24
25
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 23

def initialize_copy(orig)
  @enums = orig.__copy_enums
end

#inspectObject



50
51
52
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 50

def inspect
  "#<#{self.class}: #{@enums.inspect}>"
end

#rewindObject



42
43
44
45
46
47
48
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 42

def rewind
  @enums.reverse_each do |e|
    e.rewind if e.respond_to?(:rewind)
  end

  self
end

#sizeObject



35
36
37
38
39
40
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb', line 35

def size
  @enums.reduce(0) do |a, e|
    return nil unless e.respond_to?(:size)
    a + e.size
  end
end