Sha256: a0ce3efdd9d0d4bd91e2d88fa08e0e6b6991ade8e41446174aaaa7ac8cf29123
Contents?: true
Size: 1.31 KB
Versions: 3
Compression:
Stored size: 1.31 KB
Contents
class HeadMusic::Placement include Comparable attr_reader :voice, :position, :rhythmic_value, :pitch delegate :composition, to: :voice delegate :spelling, to: :pitch, allow_nil: true def initialize(voice, position, rhythmic_value, pitch = nil) ensure_attributes(voice, position, rhythmic_value, pitch) end def note? pitch end def rest? !note? end def next_position @next_position ||= position + rhythmic_value end def <=>(other) self.position <=> other.position end def during?(other_placement) (other_placement.position >= position && other_placement.position < next_position) || (other_placement.next_position > position && other_placement.next_position <= next_position) || (other_placement.position <= position && other_placement.next_position >= next_position) end def to_s "#{pitch ? pitch : 'rest'} at #{position}" end private def ensure_attributes(voice, position, rhythmic_value, pitch) @voice = voice ensure_position(position) @rhythmic_value = HeadMusic::RhythmicValue.get(rhythmic_value) @pitch = HeadMusic::Pitch.get(pitch) end def ensure_position(position) if position.is_a?(HeadMusic::Position) @position = position else @position = HeadMusic::Position.new(composition, position) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
head_music-0.17.0 | lib/head_music/placement.rb |
head_music-0.16.2 | lib/head_music/placement.rb |
head_music-0.16.0 | lib/head_music/placement.rb |