class Muxml::Base::Relation::Many

Public Class Methods

new(obj, relation, options = {}) click to toggle source
# File lib/muxml/relation.rb, line 34
def initialize(obj, relation, options = {})
  @obj = obj
  @relation = relation
  @tag = options.delete(:tag) || relation
  @class_name = options.delete(:class_name)
  @query = options.delete(:select)
  @options = options

  raise ArgumentError, "#{obj.class.to_s} :class_name is nil" if @class_name.nil?
  raise ArgumentError, "#{obj.class.to_s} :tag is nil" if @tag.nil?
  unless @query.nil?
    attributes = @query.map{|k,v| "@#{k}='#{v}'"}.join
    @find_query = "#{@tag}[#{attributes}]"
  else
    @find_query = "#{@tag}"
  end
  
end

Public Instance Methods

each() { |const.new(element)| ... } click to toggle source
# File lib/muxml/relation.rb, line 53
def each
  @obj.xml.elements.each("#{@find_query}") { |element|
    yield  Object.const_get(@class_name).new(element)
  }
end