adf_builder 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +0 -7
- data/Gemfile.lock +49 -35
- data/README.md +95 -351
- data/adf_builder.gemspec +5 -1
- data/lib/adf_builder/base/base.rb +4 -4
- data/lib/adf_builder/base/prospect.rb +6 -23
- data/lib/adf_builder/base/request_date.rb +8 -6
- data/lib/adf_builder/customer/customer.rb +12 -20
- data/lib/adf_builder/customer/timeframe.rb +14 -14
- data/lib/adf_builder/dsl.rb +26 -0
- data/lib/adf_builder/nodes/customer.rb +58 -0
- data/lib/adf_builder/nodes/node.rb +76 -0
- data/lib/adf_builder/nodes/prospect.rb +32 -0
- data/lib/adf_builder/nodes/vehicle.rb +25 -0
- data/lib/adf_builder/provider/provider.rb +21 -23
- data/lib/adf_builder/serializer.rb +81 -0
- data/lib/adf_builder/shared/contact.rb +18 -16
- data/lib/adf_builder/shared/id.rb +7 -9
- data/lib/adf_builder/validations.rb +38 -0
- data/lib/adf_builder/vehicles/colorcombinations.rb +14 -15
- data/lib/adf_builder/vehicles/price.rb +19 -18
- data/lib/adf_builder/vehicles/vehicles.rb +56 -56
- data/lib/adf_builder/vendor/vendor.rb +10 -13
- data/lib/adf_builder/version.rb +1 -1
- data/lib/adf_builder.rb +46 -34
- metadata +67 -7
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AdfBuilder
|
|
4
|
+
module Validations
|
|
5
|
+
def self.included(base)
|
|
6
|
+
base.extend(ClassMethods)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module ClassMethods
|
|
10
|
+
def validates_inclusion_of(attribute, in:)
|
|
11
|
+
@validations ||= []
|
|
12
|
+
@validations << { type: :inclusion, attribute: attribute, in: binding.local_variable_get(:in) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def validations
|
|
16
|
+
@validations || []
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def validate!
|
|
21
|
+
self.class.validations.each do |validation|
|
|
22
|
+
value = @attributes[validation[:attribute]]
|
|
23
|
+
next if value.nil? # Allow nil unless presence validation is added
|
|
24
|
+
|
|
25
|
+
next unless validation[:type] == :inclusion
|
|
26
|
+
|
|
27
|
+
allowed = validation[:in]
|
|
28
|
+
unless allowed.include?(value)
|
|
29
|
+
raise AdfBuilder::Error,
|
|
30
|
+
"Invalid value for #{validation[:attribute]}: #{value}. Allowed: #{allowed.join(", ")}"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Recursively validate children
|
|
35
|
+
@children.each(&:validate!)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class ColorCombinations
|
|
3
|
-
|
|
4
|
-
FREE_TEXT_OPTIONAL_TAGS = [:interiorcolor, :exteriorcolor, :preference]
|
|
5
|
+
FREE_TEXT_OPTIONAL_TAGS = %i[interiorcolor exteriorcolor preference].freeze
|
|
5
6
|
|
|
6
7
|
def initialize(vehicle)
|
|
7
8
|
@vehicle = vehicle
|
|
@@ -9,23 +10,21 @@ module AdfBuilder
|
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def add(interior_color, exterior_color, preference)
|
|
12
|
-
@color_combination = Ox::Element.new(
|
|
13
|
+
@color_combination = Ox::Element.new("colorcombination")
|
|
13
14
|
@color_combination <<
|
|
14
|
-
(Ox::Element.new(
|
|
15
|
-
(Ox::Element.new(
|
|
16
|
-
(Ox::Element.new(
|
|
17
|
-
|
|
15
|
+
(Ox::Element.new("interiorcolor") << interior_color) <<
|
|
16
|
+
(Ox::Element.new("exteriorcolor") << exterior_color) <<
|
|
17
|
+
(Ox::Element.new("preference") << preference.to_s)
|
|
18
|
+
@vehicle << @color_combination
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def update_tags(index, tags)
|
|
21
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@vehicle,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
-
end
|
|
22
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@vehicle, "colorcombination", index)
|
|
23
|
+
return unless valid
|
|
24
|
+
|
|
25
|
+
tags.each do |key, value|
|
|
26
|
+
AdfBuilder::Builder.update_node(vehicle, key, value) if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
|
28
27
|
end
|
|
29
28
|
end
|
|
30
29
|
end
|
|
31
|
-
end
|
|
30
|
+
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Price
|
|
3
|
-
|
|
4
5
|
VALID_PARAMETERS = {
|
|
5
|
-
price: [
|
|
6
|
-
}
|
|
6
|
+
price: %i[type currency delta relativeto source]
|
|
7
|
+
}.freeze
|
|
7
8
|
|
|
8
9
|
VALID_VALUES = {
|
|
9
10
|
price: {
|
|
@@ -13,30 +14,30 @@ module AdfBuilder
|
|
|
13
14
|
relativeto: %w[msrp invoice],
|
|
14
15
|
source: true
|
|
15
16
|
}
|
|
16
|
-
}
|
|
17
|
+
}.freeze
|
|
17
18
|
|
|
18
|
-
def initialize(parent_node, value, params={})
|
|
19
|
+
def initialize(parent_node, value, params = {})
|
|
19
20
|
@parent_node = parent_node
|
|
20
|
-
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
|
21
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
21
22
|
validate_currency(params)
|
|
22
|
-
AdfBuilder::Builder.update_node(@parent_node, :price, value,
|
|
23
|
+
AdfBuilder::Builder.update_node(@parent_node, :price, value, params)
|
|
23
24
|
@price = @parent_node.price
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
def update(value, params={})
|
|
27
|
-
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
|
28
|
-
AdfBuilder::Builder.update_node(@parent_node, :price, value,
|
|
27
|
+
def update(value, params = {})
|
|
28
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
29
|
+
AdfBuilder::Builder.update_node(@parent_node, :price, value, params)
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def validate_currency(params)
|
|
32
33
|
code = params[:currency]
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
return unless code
|
|
35
|
+
|
|
36
|
+
json = JSON.parse(File.read("./lib/adf_builder/data/iso-4217-currency-codes.json"))
|
|
37
|
+
codes = json.map { |j| j["Alphabetic_Code"] }.reject(&:nil?)
|
|
38
|
+
return if codes.include? code
|
|
39
|
+
|
|
40
|
+
params.delete(:currency)
|
|
40
41
|
end
|
|
41
42
|
end
|
|
42
|
-
end
|
|
43
|
+
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Vehicles
|
|
3
5
|
VALID_PARAMETERS = {
|
|
4
|
-
vehicle: [
|
|
5
|
-
odometer: [
|
|
6
|
-
imagetag: [
|
|
7
|
-
}
|
|
6
|
+
vehicle: %i[interest status],
|
|
7
|
+
odometer: %i[status units],
|
|
8
|
+
imagetag: %i[width height alttext]
|
|
9
|
+
}.freeze
|
|
8
10
|
|
|
9
11
|
VALID_VALUES = {
|
|
10
12
|
vehicle: {
|
|
@@ -20,12 +22,12 @@ module AdfBuilder
|
|
|
20
22
|
height: true,
|
|
21
23
|
alttext: true
|
|
22
24
|
}
|
|
23
|
-
}
|
|
25
|
+
}.freeze
|
|
24
26
|
|
|
25
|
-
FREE_TEXT_OPTIONAL_TAGS = [
|
|
26
|
-
|
|
27
|
+
FREE_TEXT_OPTIONAL_TAGS = %i[year make model vin stock
|
|
28
|
+
trim doors bodystyle transmission pricecomments comments].freeze
|
|
27
29
|
|
|
28
|
-
CONDITIONS = %w[excellent good fair poor unknown]
|
|
30
|
+
CONDITIONS = %w[excellent good fair poor unknown].freeze
|
|
29
31
|
|
|
30
32
|
def initialize(prospect)
|
|
31
33
|
@prospect = prospect
|
|
@@ -34,12 +36,12 @@ module AdfBuilder
|
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
def add_color_combination(v_index, interior_color, exterior_color, preference)
|
|
37
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", v_index)
|
|
40
|
+
return unless valid
|
|
41
|
+
|
|
42
|
+
cc = ColorCombinations.new(vehicle)
|
|
43
|
+
cc.add(interior_color, exterior_color, preference)
|
|
44
|
+
@color_combinations.push(cc)
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
def color_combination(index)
|
|
@@ -50,74 +52,72 @@ module AdfBuilder
|
|
|
50
52
|
@prices[index]
|
|
51
53
|
end
|
|
52
54
|
|
|
53
|
-
def add(year, make, model, params={})
|
|
54
|
-
vehicle = Ox::Element.new(
|
|
55
|
+
def add(year, make, model, params = {})
|
|
56
|
+
vehicle = Ox::Element.new("vehicle")
|
|
55
57
|
|
|
56
|
-
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
|
58
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
57
59
|
AdfBuilder::Builder.update_params(vehicle, :vehicle, params)
|
|
58
60
|
|
|
59
|
-
vehicle << (Ox::Element.new(
|
|
60
|
-
vehicle << (Ox::Element.new(
|
|
61
|
-
vehicle << (Ox::Element.new(
|
|
61
|
+
vehicle << (Ox::Element.new("year") << year.to_s)
|
|
62
|
+
vehicle << (Ox::Element.new("make") << make)
|
|
63
|
+
vehicle << (Ox::Element.new("model") << model)
|
|
62
64
|
|
|
63
65
|
@prospect << vehicle
|
|
64
66
|
end
|
|
65
67
|
|
|
66
|
-
def update_odometer(index, value, params={})
|
|
67
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
def update_odometer(index, value, params = {})
|
|
69
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
70
|
+
return unless valid
|
|
71
|
+
|
|
72
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
73
|
+
AdfBuilder::Builder.update_node(vehicle, "odometer", value, params)
|
|
72
74
|
end
|
|
73
75
|
|
|
74
76
|
def update_condition(index, value)
|
|
75
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
78
|
+
return unless valid && CONDITIONS.include?(value)
|
|
79
|
+
|
|
80
|
+
AdfBuilder::Builder.update_node(vehicle, "condition", value)
|
|
79
81
|
end
|
|
80
82
|
|
|
81
|
-
def update_imagetag(index, value, params={})
|
|
82
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
def update_imagetag(index, value, params = {})
|
|
84
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
85
|
+
return unless valid
|
|
86
|
+
|
|
87
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
88
|
+
AdfBuilder::Builder.update_node(vehicle, "imagetag", value, params)
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
def update_tags_with_free_text(index, tags)
|
|
90
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
end
|
|
92
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
93
|
+
return unless valid
|
|
94
|
+
|
|
95
|
+
tags.each do |key, value|
|
|
96
|
+
AdfBuilder::Builder.update_node(vehicle, key, value) if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
def add_id(index, value, source=nil, sequence=1)
|
|
101
|
-
if @prospect.locate("vehicle").empty?
|
|
100
|
+
def add_id(index, value, source = nil, sequence = 1)
|
|
101
|
+
if @prospect.locate("vehicle").empty? || @prospect.vehicle(index).nil?
|
|
102
102
|
false
|
|
103
103
|
else
|
|
104
104
|
Id.new.add(@prospect.vehicle(index), value, source, sequence)
|
|
105
105
|
end
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
-
def add_price(index, value, params={})
|
|
109
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
def add_price(index, value, params = {})
|
|
109
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
110
|
+
return unless valid
|
|
111
|
+
|
|
112
|
+
price = Price.new(vehicle, value, params)
|
|
113
|
+
@prices.push(price)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
def add_comments(index, value)
|
|
117
|
-
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect, "vehicle", index)
|
|
118
|
+
return unless valid
|
|
119
|
+
|
|
120
|
+
AdfBuilder::Builder.update_node(vehicle, "comments", value)
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
|
-
end
|
|
123
|
+
end
|
|
@@ -1,34 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Vendor
|
|
3
5
|
def initialize(prospect)
|
|
4
|
-
@vendor = Ox::Element.new(
|
|
6
|
+
@vendor = Ox::Element.new("vendor")
|
|
5
7
|
@contact = nil
|
|
6
8
|
prospect << @vendor
|
|
7
9
|
end
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
@contact
|
|
11
|
-
end
|
|
11
|
+
attr_reader :contact
|
|
12
12
|
|
|
13
|
-
def add(name, contact_name, opts={})
|
|
14
|
-
@vendor << (Ox::Element.new(
|
|
13
|
+
def add(name, contact_name, opts = {})
|
|
14
|
+
@vendor << (Ox::Element.new("vendorname") << name)
|
|
15
15
|
@contact = Contact.new(@vendor, contact_name, opts)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def add_url(url)
|
|
19
|
-
if @vendor.locate("url").size
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
@vendor << (Ox::Element.new('url') << url)
|
|
19
|
+
@vendor.remove_children(@vendor.url) if @vendor.locate("url").size.positive?
|
|
20
|
+
@vendor << (Ox::Element.new("url") << url)
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
def add_id(index, value, source=nil, sequence=1)
|
|
23
|
+
def add_id(index, value, source = nil, sequence = 1)
|
|
26
24
|
if @prospect.locate("vendor").empty?
|
|
27
25
|
false
|
|
28
26
|
else
|
|
29
27
|
Id.new.add(@prospect.vendor(index), value, source, sequence)
|
|
30
28
|
end
|
|
31
29
|
end
|
|
32
|
-
|
|
33
30
|
end
|
|
34
|
-
end
|
|
31
|
+
end
|
data/lib/adf_builder/version.rb
CHANGED
data/lib/adf_builder.rb
CHANGED
|
@@ -1,39 +1,50 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require "ox"
|
|
4
|
+
require "json"
|
|
5
5
|
|
|
6
6
|
require_relative "adf_builder/version"
|
|
7
7
|
|
|
8
8
|
# CUSTOMER
|
|
9
|
-
require_relative
|
|
10
|
-
require_relative
|
|
9
|
+
require_relative "adf_builder/customer/customer"
|
|
10
|
+
require_relative "adf_builder/customer/timeframe"
|
|
11
11
|
|
|
12
12
|
# BASE
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
15
|
-
require_relative
|
|
13
|
+
require_relative "adf_builder/base/base"
|
|
14
|
+
require_relative "adf_builder/base/prospect"
|
|
15
|
+
require_relative "adf_builder/base/request_date"
|
|
16
16
|
|
|
17
17
|
# PROVIDER
|
|
18
|
-
require_relative
|
|
18
|
+
require_relative "adf_builder/provider/provider"
|
|
19
19
|
|
|
20
20
|
# SHARED
|
|
21
|
-
require_relative
|
|
22
|
-
require_relative
|
|
21
|
+
require_relative "adf_builder/shared/id"
|
|
22
|
+
require_relative "adf_builder/shared/contact"
|
|
23
23
|
|
|
24
24
|
# VEHICLES
|
|
25
|
-
require_relative
|
|
26
|
-
require_relative
|
|
27
|
-
require_relative
|
|
25
|
+
require_relative "adf_builder/vehicles/vehicles"
|
|
26
|
+
require_relative "adf_builder/vehicles/colorcombinations"
|
|
27
|
+
require_relative "adf_builder/vehicles/price"
|
|
28
28
|
|
|
29
29
|
# VENDOR
|
|
30
|
-
require_relative
|
|
30
|
+
require_relative "adf_builder/vendor/vendor"
|
|
31
|
+
|
|
32
|
+
# v1.0 DSL
|
|
33
|
+
# v1.0 DSL
|
|
34
|
+
require_relative "adf_builder/validations"
|
|
35
|
+
require_relative "adf_builder/nodes/node"
|
|
36
|
+
require_relative "adf_builder/nodes/prospect"
|
|
37
|
+
require_relative "adf_builder/nodes/vehicle"
|
|
38
|
+
require_relative "adf_builder/nodes/customer"
|
|
39
|
+
require_relative "adf_builder/serializer"
|
|
40
|
+
require_relative "adf_builder/dsl"
|
|
31
41
|
|
|
32
42
|
module AdfBuilder
|
|
33
43
|
class Error < StandardError; end
|
|
44
|
+
|
|
34
45
|
class Builder
|
|
35
46
|
def initialize
|
|
36
|
-
@doc =
|
|
47
|
+
@doc = init_doc
|
|
37
48
|
@base = Base.new(@doc)
|
|
38
49
|
end
|
|
39
50
|
|
|
@@ -51,17 +62,17 @@ module AdfBuilder
|
|
|
51
62
|
prospect = Ox::Element.new("prospect")
|
|
52
63
|
|
|
53
64
|
request_date = Ox::Element.new("requestdate")
|
|
54
|
-
request_date <<
|
|
65
|
+
request_date << "2000-03-30T15:30:20-08:00"
|
|
55
66
|
|
|
56
|
-
vehicle = Ox::Element.new(
|
|
67
|
+
vehicle = Ox::Element.new("vehicle")
|
|
57
68
|
year = Ox::Element.new("year")
|
|
58
|
-
year <<
|
|
69
|
+
year << "1999"
|
|
59
70
|
|
|
60
71
|
make = Ox::Element.new("make")
|
|
61
|
-
make <<
|
|
72
|
+
make << "Chevrolet"
|
|
62
73
|
|
|
63
74
|
model = Ox::Element.new("model")
|
|
64
|
-
model <<
|
|
75
|
+
model << "Blazer"
|
|
65
76
|
|
|
66
77
|
vehicle << year << make << model
|
|
67
78
|
|
|
@@ -70,11 +81,11 @@ module AdfBuilder
|
|
|
70
81
|
contact = Ox::Element.new("contact")
|
|
71
82
|
|
|
72
83
|
name = Ox::Element.new("name")
|
|
73
|
-
name[:part] =
|
|
74
|
-
name <<
|
|
84
|
+
name[:part] = "full"
|
|
85
|
+
name << "John Doe"
|
|
75
86
|
|
|
76
87
|
phone = Ox::Element.new("phone")
|
|
77
|
-
phone <<
|
|
88
|
+
phone << "393-999-3922"
|
|
78
89
|
|
|
79
90
|
contact << name << phone
|
|
80
91
|
customer << contact
|
|
@@ -83,8 +94,8 @@ module AdfBuilder
|
|
|
83
94
|
|
|
84
95
|
contact = Ox::Element.new("contact")
|
|
85
96
|
name = Ox::Element.new("name")
|
|
86
|
-
name[:part] =
|
|
87
|
-
name <<
|
|
97
|
+
name[:part] = "full"
|
|
98
|
+
name << "Acura of Bellevue"
|
|
88
99
|
|
|
89
100
|
contact << name
|
|
90
101
|
vendor << contact
|
|
@@ -104,11 +115,11 @@ module AdfBuilder
|
|
|
104
115
|
def init_doc
|
|
105
116
|
doc = Ox::Document.new
|
|
106
117
|
instruct = Ox::Instruct.new(:xml)
|
|
107
|
-
instruct[:version] =
|
|
118
|
+
instruct[:version] = "1.0"
|
|
108
119
|
doc << instruct
|
|
109
120
|
doc << Ox::Raw.new("")
|
|
110
|
-
instruct = Ox::Instruct.new(
|
|
111
|
-
instruct[:version] =
|
|
121
|
+
instruct = Ox::Instruct.new("ADF")
|
|
122
|
+
instruct[:version] = "1.0"
|
|
112
123
|
doc << instruct
|
|
113
124
|
adf = Ox::Element.new("adf")
|
|
114
125
|
doc << adf
|
|
@@ -116,10 +127,10 @@ module AdfBuilder
|
|
|
116
127
|
end
|
|
117
128
|
|
|
118
129
|
# we will either create a new node with the value or replace the one if it is available
|
|
119
|
-
def self.update_node(parent_node, key, value, params={})
|
|
130
|
+
def self.update_node(parent_node, key, value, params = {})
|
|
120
131
|
key = key.to_s
|
|
121
132
|
value = value.to_s
|
|
122
|
-
if parent_node.locate(key).size
|
|
133
|
+
if parent_node.locate(key).size.positive?
|
|
123
134
|
node = parent_node.locate(key).first
|
|
124
135
|
node.replace_text(value)
|
|
125
136
|
else
|
|
@@ -133,12 +144,13 @@ module AdfBuilder
|
|
|
133
144
|
# update the params by first checking if they are valid params and then checking if the values are valid if necessary
|
|
134
145
|
def self.update_params(node, key, params)
|
|
135
146
|
return true if params.empty?
|
|
147
|
+
|
|
136
148
|
key = key.to_sym
|
|
137
149
|
valid_values = params[:valid_values]
|
|
138
150
|
valid_parameters = params[:valid_parameters]
|
|
139
|
-
_params = AdfBuilder::Builder.whitelabel_params(params,valid_parameters, key)
|
|
140
|
-
_params.each do |k,v|
|
|
141
|
-
node[k] = v if valid_values[key][k] == true
|
|
151
|
+
_params = AdfBuilder::Builder.whitelabel_params(params, valid_parameters, key)
|
|
152
|
+
_params.each do |k, v|
|
|
153
|
+
node[k] = v if (valid_values[key][k] == true) || valid_values[key][k].include?(v.to_s)
|
|
142
154
|
end
|
|
143
155
|
end
|
|
144
156
|
|
|
@@ -149,7 +161,7 @@ module AdfBuilder
|
|
|
149
161
|
|
|
150
162
|
def self.valid_child?(parent, tag_name, index)
|
|
151
163
|
child = parent.locate(tag_name)[index]
|
|
152
|
-
|
|
164
|
+
[!child.nil?, child]
|
|
153
165
|
end
|
|
154
166
|
end
|
|
155
167
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: adf_builder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- marcus.salinas
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: ox
|
|
@@ -24,6 +23,62 @@ dependencies:
|
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
25
|
version: '2.14'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: nokogiri
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.15'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.15'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: rake
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '13.2'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '13.2'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: rspec
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '3.13'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.13'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: rubocop
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '1.70'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '1.70'
|
|
27
82
|
description: Easily create XML in ADF format to send by email.
|
|
28
83
|
email:
|
|
29
84
|
- 12.marcus.salinas@gmail.com
|
|
@@ -51,9 +106,16 @@ files:
|
|
|
51
106
|
- lib/adf_builder/customer/customer.rb
|
|
52
107
|
- lib/adf_builder/customer/timeframe.rb
|
|
53
108
|
- lib/adf_builder/data/iso-4217-currency-codes.json
|
|
109
|
+
- lib/adf_builder/dsl.rb
|
|
110
|
+
- lib/adf_builder/nodes/customer.rb
|
|
111
|
+
- lib/adf_builder/nodes/node.rb
|
|
112
|
+
- lib/adf_builder/nodes/prospect.rb
|
|
113
|
+
- lib/adf_builder/nodes/vehicle.rb
|
|
54
114
|
- lib/adf_builder/provider/provider.rb
|
|
115
|
+
- lib/adf_builder/serializer.rb
|
|
55
116
|
- lib/adf_builder/shared/contact.rb
|
|
56
117
|
- lib/adf_builder/shared/id.rb
|
|
118
|
+
- lib/adf_builder/validations.rb
|
|
57
119
|
- lib/adf_builder/vehicles/colorcombinations.rb
|
|
58
120
|
- lib/adf_builder/vehicles/price.rb
|
|
59
121
|
- lib/adf_builder/vehicles/vehicles.rb
|
|
@@ -66,7 +128,6 @@ metadata:
|
|
|
66
128
|
homepage_uri: https://github.com/jippylong12/adf_builder
|
|
67
129
|
source_code_uri: https://github.com/jippylong12/adf_builder
|
|
68
130
|
changelog_uri: https://github.com/jippylong12/adf_builder/blob/main/CHANGELOG.md
|
|
69
|
-
post_install_message:
|
|
70
131
|
rdoc_options: []
|
|
71
132
|
require_paths:
|
|
72
133
|
- lib
|
|
@@ -74,15 +135,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
74
135
|
requirements:
|
|
75
136
|
- - ">="
|
|
76
137
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
138
|
+
version: 3.0.0
|
|
78
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
140
|
requirements:
|
|
80
141
|
- - ">="
|
|
81
142
|
- !ruby/object:Gem::Version
|
|
82
143
|
version: '0'
|
|
83
144
|
requirements: []
|
|
84
|
-
rubygems_version: 3.
|
|
85
|
-
signing_key:
|
|
145
|
+
rubygems_version: 3.7.2
|
|
86
146
|
specification_version: 4
|
|
87
147
|
summary: Create XML for the Auto-base Date Format
|
|
88
148
|
test_files: []
|