Class: MusicalScore::Attribute::Clef

Inherits:
ElementBase show all
Includes:
Contracts
Defined in:
lib/musical_score/attribute/clef.rb

Constant Summary collapse

@@sign =
%i(G F C percussion TAB jianpu none)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sign, line = 0, clef_octave_change = 0) ⇒ Clef

Returns a new instance of Clef.



15
16
17
18
19
# File 'lib/musical_score/attribute/clef.rb', line 15

def initialize(sign, line = 0, clef_octave_change = 0)
    @sign               = sign.to_sym
    @line               = line
    @clef_octave_change = clef_octave_change
end

Instance Attribute Details

#clef_octave_changeObject (readonly)

Returns the value of attribute clef_octave_change.



7
8
9
# File 'lib/musical_score/attribute/clef.rb', line 7

def clef_octave_change
  @clef_octave_change
end

#lineObject (readonly)

Returns the value of attribute line.



7
8
9
# File 'lib/musical_score/attribute/clef.rb', line 7

def line
  @line
end

#signObject (readonly)

Returns the value of attribute sign.



7
8
9
# File 'lib/musical_score/attribute/clef.rb', line 7

def sign
  @sign
end

Class Method Details

.create_by_hash(doc) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/musical_score/attribute/clef.rb', line 31

def self.create_by_hash(doc)
    sign = doc["sign"][0].to_sym
    line = doc.has_key?("line") ? doc["line"][0].to_i : 0
    clef_octave_change = doc.has_key?("clef-octave-change") ? doc["clef-octave-change"][0].to_i : 0
    clef = MusicalScore::Attribute::Clef.new(sign, line, clef_octave_change)
    return clef
end

.create_by_xml(xml_doc) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/musical_score/attribute/clef.rb', line 22

def self.create_by_xml(xml_doc)
    sign = xml_doc.elements["sign"].text.to_sym
    line = xml_doc.elements["line"] ? xml_doc.elements["line"].text.to_i : 0
    clef_octave_change = xml_doc.elements["clef-octave-change"] ? xml_doc.elements["clef-octave-change"].text.to_i : 0
    clef = MusicalScore::Attribute::Clef.new(sign, line, clef_octave_change)
    return clef
end

Instance Method Details

#export_xmlObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/musical_score/attribute/clef.rb', line 39

def export_xml
    clef_element  = REXML::Element.new('clef')
    sign_element = REXML::Element.new('sign').add_text(@sign.to_s)
    line_element = @line != 0 ? REXML::Element.new('line').add_text(@line.to_s) : nil
    clef_octave_change_element = @clef_octave_change != 0 ? REXML::Element.new('clef-octave-change').add_text(@clef_octave_change.to_s) : nil

    clef_element.add_element(sign_element)
    clef_element.add_element(line_element) if line_element
    clef_element.add_element(clef_octave_change_element) if clef_octave_change_element

    return clef_element
end