Sha256: 43f54e445ca395964f2db325b7417a0fc6fb4a4dd745f13018d650dcc1893320
Contents?: true
Size: 907 Bytes
Versions: 3
Compression:
Stored size: 907 Bytes
Contents
module FacturaePrint module XMLObjectifier def self.build(node, options={}) options = {:collection_nodes => []}.merge(options) return node.text if node.text? children = get_node_children(node) return nil if children.empty? && node.content.empty? if children.size == 1 && children.first.text? children.first.text else object = options.delete(:object) || OpenStruct.new children.each do |child| value = if options[:collection_nodes].include?(child.name) get_node_children(child).map{|c| build(c, options)} else build(child, options) end object.send("#{child.name.underscore}=", value) end object end end private def self.get_node_children(node) node.children.reject { |c| c.blank? } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
facturae_print-0.0.4 | lib/facturae_print/xml_objectifier.rb |
facturae_print-0.0.3 | lib/facturae_print/xml_objectifier.rb |
facturae_print-0.0.2 | lib/facturae_print/xml_objectifier.rb |