Object
# File lib/cartesian_iterator.rb, line 10 10: def dup 11: Marshal.load(Marshal.dump(self)) 12: end
# File lib/cartesian_iterator.rb, line 48 48: def each 49: return false if @tot_iter < 1 50: 51: elems = [] 52: for list in @lists 53: elems << list.restart_and_raw_next 54: end 55: if RUBY_VERSION <= '1.9.1'; yield(*elems.map {|x| x }); else; yield(*elems); end # Yeah, v.map{|x|x} should be equal to v, but strangely it is NOT in Ruby versions prior to 1.9.2. 56: 57: last_list_index = @lists.size-1 58: n = last_list_index 59: loop do 60: if elems[n] = @lists[n].raw_next 61: if RUBY_VERSION <= '1.9.1'; yield(*elems.map {|x| x }); else; yield(*elems); end # See previous comment. 62: n = last_list_index 63: next 64: elsif n > 0 65: elems[n] = @lists[n].restart_and_raw_next 66: n -= 1 67: else 68: return true 69: end 70: end 71: end
# File lib/cartesian_iterator.rb, line 14 14: def equal(other) 15: self.instance_variables.each do |var_name| 16: return false if self.instance_variable_get(var_name) != other.instance_variable_get(var_name) 17: end 18: true 19: end
# File lib/cartesian_iterator.rb, line 43 43: def left_product(other) 44: (result = self.dup).left_product!(other) 45: result 46: end
# File lib/cartesian_iterator.rb, line 30 30: def left_product!(other) 31: @lists.unshift other.to_a.dup 32: @tot_iter *= @lists[1].size 33: self 34: end
# File lib/cartesian_iterator.rb, line 36 36: def product(other) 37: (result = self.dup).product!(other) 38: result 39: end
# File lib/cartesian_iterator.rb, line 22 22: def product!(other) 23: @lists << other.to_a.dup 24: @tot_iter *= @lists[1].size 25: self 26: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.