Sha256: f05d66b0db025e22948bd98dfc3be9814f29bc5207d59f8224e8d1fde52e38b9

Contents?: true

Size: 802 Bytes

Versions: 16

Compression:

Stored size: 802 Bytes

Contents

class HeadMusic::Instrument
  INSTRUMENTS = {
    violin: {
      name: "violin",
      family: :string,
      default_clef: :treble
    },
    piano: {
      name: "piano",
      family: :string,
      default_system: [:treble, :bass]
    }
  }

  def self.get(name)
    @instruments ||= {}
    key = HeadMusic::Utilities::HashKey.for(name)
    @instruments[key] ||= new(name.to_s)
  end

  attr_reader :name
  delegate :to_s, to: :name

  def initialize(name)
    @name = name.to_s
  end

  def data
    @data ||= INSTRUMENTS[hash_key]
  end

  def hash_key
    HeadMusic::Utilities::HashKey.for(name)
  end

  def family
    data[:family]
  end

  def default_system
    data[:default_system]
  end

  def default_clef
    data[:default_clef]
  end

  def ==(other)
    to_s == other.to_s
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
head_music-0.11.9 lib/head_music/instrument.rb
head_music-0.11.8 lib/head_music/instrument.rb
head_music-0.11.7 lib/head_music/instrument.rb
head_music-0.11.6 lib/head_music/instrument.rb
head_music-0.11.5 lib/head_music/instrument.rb
head_music-0.11.4 lib/head_music/instrument.rb
head_music-0.11.3 lib/head_music/instrument.rb
head_music-0.11.2 lib/head_music/instrument.rb
head_music-0.11.1 lib/head_music/instrument.rb
head_music-0.10.0 lib/head_music/instrument.rb
head_music-0.8.0 lib/head_music/instrument.rb
head_music-0.7.0 lib/head_music/instrument.rb
head_music-0.6.4 lib/head_music/instrument.rb
head_music-0.6.3 lib/head_music/instrument.rb
head_music-0.6.1 lib/head_music/instrument.rb
head_music-0.6.0 lib/head_music/instrument.rb