class EimXML::OpenDSL
Public Class Methods
new() { |self| ... }
click to toggle source
# File lib/eim_xml/dsl.rb, line 90 def initialize @_container = nil yield(self) if block_given? end
register(*args)
click to toggle source
# File lib/eim_xml/dsl.rb, line 86 def self.register(*args) register_base(self, binding, *args) end
register_base(dsl, binding, *args)
click to toggle source
# File lib/eim_xml/dsl.rb, line 78 def self.register_base(dsl, binding, *args) args.each do |klass, name| name ||= klass.name.downcase[/(?:.*\:\:)?(.*)$/, 1] eval("def #{name}(*a, &p);_build(#{klass}, *a, &p);end", binding) eval("def self.#{name}(*a, &p);self.new.#{name}(*a, &p);end", binding) end end
Public Instance Methods
add(v)
click to toggle source
# File lib/eim_xml/dsl.rb, line 95 def add(v) @_container.add(v) end
Also aliased as: <<
container()
click to toggle source
# File lib/eim_xml/dsl.rb, line 100 def container; @_container; end
Private Instance Methods
_build(klass, *arg, &proc)
click to toggle source
# File lib/eim_xml/dsl.rb, line 64 def _build(klass, *arg, &proc) e = klass.new(*arg) oc = @_container oc << e if oc.is_a?(Element) @_container = e begin proc.call(self) if proc e ensure @_container = oc end end