Sha256: 3f3ea44dfa0387d0022722a17be2120a8c00591a3aef0038c03ae93d9b60930e
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
require 'xommelier/xml/element' module Xommelier module Xml class Element module DSL def element(name, options = {}) self.elements[name] = DEFAULT_ELEMENT_OPTIONS.merge(options) define_element_accessors(name) end def attribute(name, options = {}) self.attributes[name] = DEFAULT_OPTIONS.merge(options) define_attribute_accessors(name) end def text(options = {}) define_text_accessors end private def define_text_accessors define_method(:text) { @text ||= '' } define_method(:text=) { |value| @text = value } end def define_element_accessors(name) case elements[name][:count] when :one, :may define_method(name) { @elements[name] } define_method("#{name}=") { |value| @elements[name] = value } when :many define_method(name) { @elements[name] ||= [] } define_method("#{name}=") do |value| @elements[name] ||= [] @elements[name] += Array(value) end end end def define_attribute_accessors(name) define_method(name) { @attributes[name] } define_method("#{name}=") { |value| @attributes[name] = value } end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
xommelier-0.0.1 | lib/xommelier/xml/element/dsl.rb |