Sha256: a648045d2a985f2dd372a2b14f9d32bb11f54df4ef7784d6c660bb9539ca8241
Contents?: true
Size: 755 Bytes
Versions: 1
Compression:
Stored size: 755 Bytes
Contents
class HeadMusic::Accidental ACCIDENTAL_SEMITONES = { '#' => 1, '##' => 2, 'b' => -1, 'bb' => -2 } attr_reader :string def self.get(identifier) @accidentals ||= {} for_symbol(identifier) || for_interval(identifier) end def self.for_symbol(identifier) @accidentals[identifier.to_s] ||= new(identifier.to_s) if ACCIDENTAL_SEMITONES.keys.include?(identifier.to_s) end def self.for_interval(semitones) @accidentals[semitones.to_i] ||= ACCIDENTAL_SEMITONES.key(semitones.to_i) end def initialize(string) @string = string end def to_s string end def ==(value) to_s == value.to_s end def semitones ACCIDENTAL_SEMITONES.fetch(string, 0) end private_class_method :new end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
head_music-0.1.5 | lib/head_music/accidental.rb |