class AdfBuilder::Builder
Public Class Methods
new()
click to toggle source
# File lib/adf_builder.rb, line 34 def initialize @doc = self.init_doc @base = Base.new(@doc) end
update_node(parent_node, key, value, params={})
click to toggle source
we will either create a new node with the value or replace the one if it is available
# File lib/adf_builder.rb, line 118 def self.update_node(parent_node, key, value, params={}) key = key.to_s value = value.to_s if parent_node.locate(key).size > 0 node = parent_node.locate(key).first node.replace_text(value) else node = (Ox::Element.new(key) << value) parent_node << node end AdfBuilder::Builder.update_params(node, key, params) end
update_params(node, key, params)
click to toggle source
update the params by first checking if they are valid params and then checking if the values are valid if necessary
# File lib/adf_builder.rb, line 133 def self.update_params(node, key, params) return true if params.empty? key = key.to_sym valid_values = params[:valid_values] valid_parameters = params[:valid_parameters] _params = AdfBuilder::Builder.whitelabel_params(params,valid_parameters, key) _params.each do |k,v| node[k] = v if valid_values[key][k] == true or valid_values[key][k].include? v.to_s end end
valid_child?(parent, tag_name, index)
click to toggle source
# File lib/adf_builder.rb, line 149 def self.valid_child?(parent, tag_name, index) child = parent.locate(tag_name)[index] return !child.nil?,child end
whitelabel_params(opts, valid_parameters, key)
click to toggle source
clear out the opts that don't match valid keys
# File lib/adf_builder.rb, line 145 def self.whitelabel_params(opts, valid_parameters, key) opts.slice(*valid_parameters[key]) end
Public Instance Methods
init_doc()
click to toggle source
all the files will start with this same header
# File lib/adf_builder.rb, line 103 def init_doc doc = Ox::Document.new instruct = Ox::Instruct.new('ADF') instruct[:version] = '1.0' doc << instruct doc << Ox::Raw.new("\n") instruct = Ox::Instruct.new(:xml) instruct[:version] = '1.0' doc << instruct adf = Ox::Element.new("adf") doc << adf doc end
minimal_lead()
click to toggle source
def an example of minimal XML taken from ADF spec file adfxml.info/adf_spec.pdf
# File lib/adf_builder.rb, line 49 def minimal_lead prospect = Ox::Element.new("prospect") request_date = Ox::Element.new("requestdate") request_date << '2000-03-30T15:30:20-08:00' vehicle = Ox::Element.new('vehicle') year = Ox::Element.new("year") year << '1999' make = Ox::Element.new("make") make << 'Chevrolet' model = Ox::Element.new("model") model << 'Blazer' vehicle << year << make << model customer = Ox::Element.new("customer") contact = Ox::Element.new("contact") name = Ox::Element.new("name") name[:part] = 'full' name << 'John Doe' phone = Ox::Element.new("phone") phone << '393-999-3922' contact << name << phone customer << contact vendor = Ox::Element.new("vendor") contact = Ox::Element.new("contact") name = Ox::Element.new("name") name[:part] = 'full' name << 'Acura of Bellevue' contact << name vendor << contact prospect << request_date << vehicle << customer << vendor @doc.remove_children_by_path("adf/prospect") @doc.adf << prospect Ox.dump(@doc, {}) end
prospect()
click to toggle source
# File lib/adf_builder.rb, line 39 def prospect @base.prospect end
reset_doc()
click to toggle source
go back to the initial structure
# File lib/adf_builder.rb, line 98 def reset_doc @doc.adf.prospect.remove_children_by_path("*") end
to_xml()
click to toggle source
output the XML
# File lib/adf_builder.rb, line 44 def to_xml Ox.dump(@doc, {}) end