class EimXML::BaseDSL
Public Class Methods
register(*args)
click to toggle source
# File lib/eim_xml/dsl.rb 51 def self.register(*args) 52 args.each do |klass, name| 53 name ||= klass.name.downcase[/(?:.*\:\:)?(.*)$/, 1] 54 eval("def #{name}(*a, &p);_build(#{klass}, *a, &p);end", binding) 55 eval("def self.#{name}(*a, &p);new.#{name}(*a, &p);end", binding) 56 end 57 end
Public Instance Methods
add(v)
click to toggle source
# File lib/eim_xml/dsl.rb 11 def add(v) 12 @_container << v 13 end
Also aliased as: <<
import_variables(src)
click to toggle source
# File lib/eim_xml/dsl.rb 16 def import_variables(src) 17 src.instance_variables.each do |v| 18 instance_variable_set(v, src.instance_variable_get(v)) unless v=~/\A@_[^_]/ 19 end 20 self 21 end
Private Instance Methods
_build(klass, *arg, &proc)
click to toggle source
# File lib/eim_xml/dsl.rb 23 def _build(klass, *arg, &proc) 24 e = klass.new(*arg) 25 @_container << e if @_container 26 if proc 27 oc = @_container 28 @_container = e 29 begin 30 instance_eval(&proc) 31 ensure 32 @_container = oc 33 end 34 end 35 e 36 end
_push(container) { || ... }
click to toggle source
# File lib/eim_xml/dsl.rb 39 def _push(container) 40 oc = @_container 41 @_container = container 42 begin 43 yield if block_given? 44 container 45 ensure 46 @_container = oc 47 end 48 end