module Gabc::WordNode

Public Instance Methods

create_word() click to toggle source
# File lib/lygre/gabcsemantics.rb, line 81
def create_word
  w = []

  each_element do |ele|
    next unless ele.is_a? SyllableNode
    w << GabcSyllable.new do |s|
      s.lyrics = ele.lyrics.text_value
      s.notes = collect_notes ele
    end
  end

  return GabcWord.new w
end

Private Instance Methods

collect_notes(node, arr=[]) click to toggle source

recursively collects notes from a node

# File lib/lygre/gabcsemantics.rb, line 98
def collect_notes(node, arr=[])
  node.each_element do |ele|
    if ele.is_a? NoteNode then
      arr << GabcNote.new do |n|
        n.pitch = ele.note_pitch.text_value.downcase.to_sym
        n.text_value = ele.text_value
      end
    elsif ele.is_a? DivisioNode then
      arr << GabcDivisio.new do |d|
        d.type = ele.text_value
        d.text_value = ele.text_value
      end
    elsif ele.is_a? ClefNode then
      arr << GabcClef.new do |c|
        c.pitch = ele.clef_symbol.text_value.to_sym
        c.bemol = ele.bemol.text_value == 'b'
        c.line = ele.line_number.text_value.to_i
        c.text_value = ele.text_value
      end
    else
      collect_notes ele, arr
    end
  end

  return arr
end