class PolyrexBuilder
Public Class Methods
new(rows=[], parents: [], summary: {}, rootname: 'items', debug: false)
click to toggle source
# File lib/polyrex-builder.rb, line 13 def initialize(rows=[], parents: [], summary: {}, rootname: 'items', debug: false) @debug = debug records = rows.map {|x| pxify(x, parents) } summary.merge!({recordx_type: 'polyrex'}) h = {rootname.to_sym => {summary: summary, records: records }} @a = RexleBuilder.new(h, debug: false).to_a end
Public Instance Methods
to_a()
click to toggle source
# File lib/polyrex-builder.rb, line 26 def to_a() @a end
to_xml()
click to toggle source
# File lib/polyrex-builder.rb, line 30 def to_xml() doc = Rexle.new(@a) schema = PolyrexSchema.new.parse(doc.root.xml).to_schema doc.root.element('summary').add Rexle::Element.new('schema').add_text(schema) doc.xml pretty: true end
Private Instance Methods
pxify(a, parents=[])
click to toggle source
# File lib/polyrex-builder.rb, line 41 def pxify(a, parents=[]) name = parents.length <= 1 ? parents.first : parents.shift raw_records = a raw_summary = raw_records.first h = raw_records.first summary = h.merge({schema: "%s[%s]" % [name, h.keys.join(', ')]}) record = if raw_records[1] then { summary: summary, records: raw_records[1].map{|x| pxify(x,parents.clone) } } else {summary: summary} end {name => record} end