class Musicality::CompoundSequence
Public Class Methods
new(combine_method, sequences)
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 4 def initialize combine_method, sequences @seqs = sequences @comb_meth = combine_method end
Public Instance Methods
at(offset) { |combine(map {|e| next })| ... }
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 9 def at offset if offset.is_a? Enumerable return enum_for(:at,offset) unless block_given? enums = @seqs.map {|s| s.at(offset) } offset.size.times { yield combine(enums.map {|e| e.next }) } else vals = @seqs.map {|s| s.at(offset) } return combine(vals) end end
over(range) { |combine(map {|e| next })| ... }
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 26 def over range return enum_for(:over,range) unless block_given? enums = @seqs.map {|s| s.over(range) } range.size.times { yield combine(enums.map {|e| e.next }) } end
take(n) { |combine(map {|e| next })| ... }
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 20 def take n return enum_for(:take,n) unless block_given? enums = @seqs.map {|s| s.take(n) } n.times { yield combine(enums.map {|e| e.next }) } end
take_back(n) { |combine(map {|e| next })| ... }
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 32 def take_back n return enum_for(:take_back,n) unless block_given? enums = @seqs.map {|s| s.take_back(n) } n.times { yield combine(enums.map {|e| e.next }) } end
Private Instance Methods
combine(vals)
click to toggle source
# File lib/musicality/composition/util/compound_sequence.rb, line 39 def combine vals vals[1..-1].inject(vals.first,@comb_meth) end