module Dustbag::Parser::Node::ClassMethods
Public Instance Methods
child(name)
click to toggle source
# File lib/dustbag/parser/node.rb, line 91 def child(name) if name.is_a? Hash define_method(name[:name]) do (name[:class] || Dustbag.const_get(name[:node])).new(subnode(name[:node])) end else node_name = xml_node_name(attr) define_method(name) do Dustbag.const_get(node_name).new(subnode(node_name)) end end end
children(*attrs)
click to toggle source
# File lib/dustbag/parser/node.rb, line 72 def children(*attrs) attrs.each do |attr| if attr.is_a?(Hash) attr.each do |key, value| node_name = xml_node_name(key) define_method(key) do value.new(subnode(node_name)) end end else node_name = xml_node_name(attr) define_method(attr) do Dustbag.const_get(node_name).new(subnode(node_name)) end end end end
numeric_attributes(*attrs)
click to toggle source
# File lib/dustbag/parser/node.rb, line 54 def numeric_attributes(*attrs) attrs.each do |attr| node_name = xml_node_name(attr) if attr.is_a?(Hash) attr.each do |key, value| define_method(key) do subnode_text(value).to_i end end else define_method(attr) do subnode_text(node_name).to_i end end end end
text_attributes(*attrs)
click to toggle source
# File lib/dustbag/parser/node.rb, line 36 def text_attributes(*attrs) attrs.each do |attr| node_name = xml_node_name(attr) if attr.is_a?(Hash) attr.each do |key, value| define_method(key) do subnode_text(value) end end else define_method(attr) do subnode_text(node_name) end end end end
Private Instance Methods
xml_node_name(attr)
click to toggle source
# File lib/dustbag/parser/node.rb, line 106 def xml_node_name(attr) attr.to_s.split('_').map(&:capitalize).join('') end