class MusicalScore::Note::Notation::Notation

Attributes

articulation[RW]
dynamics[RW]
tie[RW]
tuplet[RW]

Public Class Methods

create_by_hash(doc) click to toggle source
# File lib/musical_score/note/notation/notation.rb, line 84
def self.create_by_hash(doc)
    articulation = doc.has_key?("articulations") ? doc["articulations"][0].keys[0].to_sym : nil
    dynamics     = doc.has_key?("dynamics") ? doc["dynamics"][0].keys[0].to_sym : nil
    tie_arg      = doc.has_key?("tied") ? doc.dig("tied", 0, "type").to_sym : nil
    tie          = tie_arg ? MusicalScore::Note::Notation::Tie.new(tie_arg) : nil
    tuplet_arg   = doc.has_key?("tuplet") ? doc.dig("tuplet", 0, "type").to_sym : nil
    tuplet = tuplet_arg ? MusicalScore::Note::Notation::Tuplet.new(tuplet_arg) : nil
    return MusicalScore::Note::Notation::Notation.new(articulation: articulation, dynamics: dynamics, tie: tie, tuplet: tuplet)
end
create_by_xml(xml_doc) click to toggle source
# File lib/musical_score/note/notation/notation.rb, line 73
def self.create_by_xml(xml_doc)
    articulation = xml_doc.elements["articulations"] ? xml_doc.elements["articulations"].elements[1].name.to_sym : nil
    dynamics     = xml_doc.elements["dynamics"] ? xml_doc.elements["dynamics"].elements[1].name.to_sym : nil
    tie_arg      = xml_doc.elements["tied"] ? xml_doc.elements["tied"].attributes["type"].to_sym : nil
    tie = tie_arg ? MusicalScore::Note::Notation::Tie.new(tie_arg) : nil
    tuplet_arg   = xml_doc.elements["tuplet"] ? xml_doc.elements["tuplet"].attributes["type"].to_sym : nil
    tuplet = tuplet_arg ? MusicalScore::Note::Notation::Tuplet.new(tuplet_arg) : nil
    return MusicalScore::Note::Notation::Notation.new(articulation: articulation, dynamics: dynamics, tie: tie, tuplet: tuplet)
end
new( articulation: nil, dynamics: nil, tie: nil, tuplet: nil, **rest_args ) click to toggle source
# File lib/musical_score/note/notation/notation.rb, line 59
def initialize(
    articulation: nil,
    dynamics: nil,
    tie: nil,
    tuplet: nil,
    **rest_args
    )
    @articulation = articulation
    @dynamics     = dynamics
    @tie          = tie
    @tuplet       = tuplet
end

Public Instance Methods

export_xml() click to toggle source
# File lib/musical_score/note/notation/notation.rb, line 94
def export_xml
    notations_element    = REXML::Element.new('notations')
    articulation_element = REXML::Element.new('articulations')
    dynamics_element     = REXML::Element.new('dynamics')

    if (@articulation)
        articulation_element.add_element(REXML::Element.new(@articulation.to_s))
        notations_element.add_element(articulation_element)
    end
    if (@dynamics)
        dynamics_element.add_element(REXML::Element.new(@dynamics.to_s))
        notations_element.add_element(dynamics_element)
    end

    notations_element.add_element(@tie.export_xml) if @tie
    notations_element.add_element(@tuplet.export_xml) if @tuplet

    return notations_element
end