class Muxml::Base
Attributes
xml[R]
Public Class Methods
has_many(relation, options)
click to toggle source
# File lib/muxml/base.rb, line 51 def has_many(relation, options) @@relations[self] ||= {many: {}, one: {} } @@relations[self][:many][relation] = options end
has_one(relation, options)
click to toggle source
# File lib/muxml/base.rb, line 56 def has_one(relation, options) @@relations[self] ||= {many: {}, one: {} } @@relations[self][:one][relation] = options end
new(document = nil, element = nil)
click to toggle source
# File lib/muxml/base.rb, line 9 def initialize(document = nil, element = nil) if @@xml_files.has_key?(self.class) document = @@xml_files[self.class][:file].to_s element = @@xml_files[self.class][:root] end case document when String xml = REXML::Document.new File.new(document) when REXML::Element xml = document else raise ArgumentError, 'invalid element' end unless element.nil? @xml = xml.elements[element] else @xml = xml end end
xml_document(file, root)
click to toggle source
# File lib/muxml/base.rb, line 47 def xml_document(file, root) @@xml_files[self] = {file: file, root: root} end
Public Instance Methods
method_missing(sym, *args, &block)
click to toggle source
for call attributes of xml just prefix with attribute_
# File lib/muxml/base.rb, line 32 def method_missing(sym, *args, &block) if sym.to_s.start_with?('attribute_') attribute = sym.to_s.sub(/^attribute_/, '') return @xml.attributes[attribute] elsif @@relations.has_key?(self.class) if @@relations[self.class][:many].has_key?(sym) return Relation::Many.new(self, sym, @@relations[self.class][:many][sym].dup) elsif @@relations[self.class][:one].has_key?(sym) return Relation::One.new(self, sym, @@relations[self.class][:one][sym].dup) end end raise NoMethodError, "undefined method `#{sym}' for #{self}" end