module MusicXML::Node::JsonExport
Public Instance Methods
json_key()
click to toggle source
# File lib/musicxml/node/json_export.rb, line 8 def json_key self.class.name.split('::').last.gsub(/^([A-Z])/) { $1.downcase } end
json_values()
click to toggle source
# File lib/musicxml/node/json_export.rb, line 12 def json_values output = {} load_plural_attrs(output) load_singular_attrs(output) load_plural_nodes(output) load_singular_nodes(output) output end
to_json()
click to toggle source
# File lib/musicxml/node/json_export.rb, line 4 def to_json { json_key => json_values }.to_json end
Private Instance Methods
jsify(name)
click to toggle source
# File lib/musicxml/node/json_export.rb, line 23 def jsify(name) name.to_s.gsub(/(_[a-z])/) { $1.upcase[1..-1] } end
load_plural_attrs(output)
click to toggle source
# File lib/musicxml/node/json_export.rb, line 27 def load_plural_attrs(output) self.class.config.plural_attrs.each do |name| output[jsify(name)] = send(name) || [] end end
load_plural_nodes(output)
click to toggle source
# File lib/musicxml/node/json_export.rb, line 33 def load_plural_nodes(output) self.class.config.plural_nodes.each do |name| nodes = send(name) output[jsify(name)] = nodes ? nodes.map(&:json_values) : [] end end
load_singular_attrs(output)
click to toggle source
# File lib/musicxml/node/json_export.rb, line 40 def load_singular_attrs(output) (self.class.config.properties + self.class.config.singular_attrs).each do |name| output[jsify(name)] = send(name) end end
load_singular_nodes(output)
click to toggle source
# File lib/musicxml/node/json_export.rb, line 46 def load_singular_nodes(output) self.class.config.singular_nodes.each do |name| node = send(name) output[jsify(name)] = node ? node.json_values : nil end end