Class: HeadMusic::Analysis::DiatonicInterval::Parser
- Inherits:
-
Object
- Object
- HeadMusic::Analysis::DiatonicInterval::Parser
- Defined in:
- lib/head_music/analysis/diatonic_interval/parser.rb
Constant Summary collapse
- NUMBER_NAMES =
HeadMusic::Analysis::DiatonicInterval::NUMBER_NAMES
Instance Attribute Summary collapse
-
#identifier ⇒ Object
readonly
Returns the value of attribute identifier.
Instance Method Summary collapse
- #degree_name ⇒ Object
- #expand(identifier) ⇒ Object
- #higher_letter ⇒ Object
-
#initialize(identifier) ⇒ Parser
constructor
A new instance of Parser.
- #quality_abbreviations ⇒ Object
- #quality_for(abbreviation) ⇒ Object
- #quality_name ⇒ Object
- #steps ⇒ Object
- #words ⇒ Object
Constructor Details
#initialize(identifier) ⇒ Parser
Returns a new instance of Parser.
6 7 8 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 6 def initialize(identifier) @identifier = (identifier) end |
Instance Attribute Details
#identifier ⇒ Object (readonly)
Returns the value of attribute identifier.
4 5 6 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 4 def identifier @identifier end |
Instance Method Details
#degree_name ⇒ Object
18 19 20 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 18 def degree_name words.last end |
#expand(identifier) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 30 def (identifier) if /[A-Z]\d{1,2}/i.match?(identifier) number = NUMBER_NAMES[identifier.gsub(/[A-Z]/i, "").to_i - 1] return [quality_for(identifier[0]), number].join("_").to_sym end identifier end |
#higher_letter ⇒ Object
26 27 28 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 26 def higher_letter HeadMusic::Rudiment::Pitch.middle_c.letter_name.steps_up(steps) end |
#quality_abbreviations ⇒ Object
38 39 40 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 38 def quality_abbreviations HeadMusic::Analysis::DiatonicInterval::QUALITY_ABBREVIATIONS end |
#quality_for(abbreviation) ⇒ Object
42 43 44 45 46 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 42 def quality_for(abbreviation) quality_abbreviations[abbreviation.to_sym] || quality_abbreviations[abbreviation.upcase.to_sym] || quality_abbreviations[abbreviation.downcase.to_sym] end |
#quality_name ⇒ Object
14 15 16 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 14 def quality_name words[0..-2].join(" ").to_sym end |
#steps ⇒ Object
22 23 24 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 22 def steps NUMBER_NAMES.index(degree_name) end |
#words ⇒ Object
10 11 12 |
# File 'lib/head_music/analysis/diatonic_interval/parser.rb', line 10 def words identifier.to_s.split(/[_ ]+/) end |