Class: MultiEnumerator::MultiEnumerator
- Inherits:
-
Enumerator
- Object
- Enumerator
- MultiEnumerator::MultiEnumerator
- Defined in:
- lib/multi_enumerator/multi_enumerator.rb
Instance Attribute Summary collapse
-
#enums ⇒ Object
readonly
Returns the value of attribute enums.
Instance Method Summary collapse
- #each {|a, b, c, ...| ... } ⇒ Object
-
#initialize(*args) ⇒ MultiEnumerator
constructor
A new instance of MultiEnumerator.
- #inspect ⇒ Object
Constructor Details
#initialize(*args) ⇒ MultiEnumerator
Returns a new instance of MultiEnumerator.
9 10 11 12 13 |
# File 'lib/multi_enumerator/multi_enumerator.rb', line 9 def initialize(*args) @options = args.last.is_a?(::Hash) ? args.pop : {} @options[:rewind] = true unless @options.key?(:rewind) @enums = args.flatten.freeze end |
Instance Attribute Details
#enums ⇒ Object (readonly)
Returns the value of attribute enums.
3 4 5 |
# File 'lib/multi_enumerator/multi_enumerator.rb', line 3 def enums @enums end |
Instance Method Details
#each {|a, b, c, ...| ... } ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/multi_enumerator/multi_enumerator.rb', line 16 def each return to_enum(:each) unless block_given? @enums.each(&:rewind) if @options[:rewind] loop do entry = @enums.map do |enum| begin enum.next rescue => ex ex end end break if entry.all?{|item| item.is_a? ::StopIteration } if @options.key?(:ljust_with) entry.map!{|item| item.is_a?(::StopIteration) ? @options[:ljust_with] : item } end yield *entry end self end |
#inspect ⇒ Object
42 43 44 |
# File 'lib/multi_enumerator/multi_enumerator.rb', line 42 def inspect "#<#{self.class.name}: #{@enums.inspect}>" end |