Sha256: 7d565e1785390612deb7c8466fccb83a7418bc6187befc849e30af2c77503d60

Contents?: true

Size: 706 Bytes

Versions: 1

Compression:

Stored size: 706 Bytes

Contents

class HeadMusic::Composition
  attr_reader :name, :key_signature, :meter, :measures

  def initialize(name:, key_signature: nil, meter: nil)
    ensure_attributes(name, key_signature, meter)
    add_measure
  end

  def add_measure
    add_measures(1)
  end

  def add_measures(number)
    @measures ||= []
    number.times do
      @measures << HeadMusic::Measure.new(self)
    end
  end

  private

  def ensure_attributes(name, key_signature, meter)
    @name = name
    @key_signature = HeadMusic::KeySignature.get(key_signature) if key_signature
    @key_signature ||= HeadMusic::KeySignature.default
    @meter = HeadMusic::Meter.get(meter) if meter
    @meter ||= HeadMusic::Meter.default
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
head_music-0.7.0 lib/head_music/composition.rb