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