Sha256: 2ee20d0a8e37c5045ee0d965888295cac3403dc0fd69bbe31adeeccd7f1a42a7

Contents?: true

Size: 706 Bytes

Versions: 2

Compression:

Stored size: 706 Bytes

Contents

# frozen_string_literal: true

# An instrument can be assigned to a staff.
class HeadMusic::Instrument
  include HeadMusic::Named

  INSTRUMENTS = {
    violin: {
      name: 'violin',
      family: :string,
      default_clef: :treble,
    },
    piano: {
      name: 'piano',
      family: :string,
      default_system: %i[treble bass],
    },
  }.freeze

  def self.get(name)
    get_by_name(name)
  end

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

  def data
    @data ||= INSTRUMENTS[hash_key]
  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

2 entries across 2 versions & 1 rubygems

Version Path
head_music-0.24.0 lib/head_music/instrument.rb
head_music-0.23.4 lib/head_music/instrument.rb