adf_builder 0.0.4 → 0.0.8
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 +18 -10
- data/Gemfile.lock +1 -1
- data/README.md +102 -7
- data/lib/adf_builder.rb +48 -10
- data/lib/adf_builder/base/prospect.rb +5 -0
- data/lib/adf_builder/provider/provider.rb +55 -0
- data/lib/adf_builder/shared/contact.rb +25 -38
- data/lib/adf_builder/vehicles/colorcombinations.rb +31 -0
- data/lib/adf_builder/vehicles/vehicles.rb +71 -37
- data/lib/adf_builder/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a2725ac72b47a548355664e21014fd434ead3aa0829f0dfd3d8c506dd12c1db
|
4
|
+
data.tar.gz: 584cabe276de7ef15cecc2e50911005e6a7100468582934f3efa97107d5d576b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a4e274b4ea6af2af31d0cec8c6c452ff8da5db67b8f4c3b9442a0d44449dbf912e6b6ad1146649f12b7b8a20017716598e56b01e19f5ebb17020aa94ee57faf
|
7
|
+
data.tar.gz: b7c13eab73118e95fe03af6c1428c01f18a69c895ef2d48d4eda9731289353857d210328f08150818d27141e332bace07ff6c991c482d6063526939beca3e492
|
data/CHANGELOG.md
CHANGED
@@ -1,21 +1,29 @@
|
|
1
1
|
## [Unreleased]
|
2
|
-
- Vehicle Structure
|
3
|
-
- Remaining Optional Tags that are not free text
|
4
|
-
- odometer
|
5
|
-
- condition
|
6
|
-
- colorcombination
|
7
|
-
- imagetag
|
2
|
+
- Vehicle Structure - Remaining Optional Tags that are not free text
|
8
3
|
- price
|
9
4
|
- option
|
10
5
|
- finance
|
11
6
|
- Expand Structures for all parameters
|
12
7
|
- Customer
|
13
|
-
- Vehicle
|
14
8
|
- Contact
|
9
|
+
- Vehicle
|
10
|
+
- Price
|
11
|
+
|
12
|
+
|
13
|
+
## [0.0.8] - 2021-08-12
|
14
|
+
- Added all of Provider structure
|
15
|
+
|
16
|
+
## [0.0.7] - 2021-08-08
|
17
|
+
- Much refactoring so that we can reuse functions
|
18
|
+
- Added more functionality to the Vehicle structure including all free text, all same level tags with params, and Color Combination and ImageTag
|
19
|
+
|
20
|
+
|
21
|
+
## [0.0.6] - 2021-08-08
|
22
|
+
- minimal_lead function will remove all previous adf nodes
|
23
|
+
- Created ability to reset doc
|
15
24
|
|
16
|
-
|
17
|
-
-
|
18
|
-
- Add Price structure
|
25
|
+
## [0.0.5] - 2021-08-08
|
26
|
+
- Fixed bug that kept us from using the library
|
19
27
|
|
20
28
|
## [0.0.4] - 2021-08-08
|
21
29
|
- Added Customer, Contact, Vendor basic structure
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -108,15 +108,28 @@ Outputs
|
|
108
108
|
</prospect>
|
109
109
|
</adf>
|
110
110
|
```
|
111
|
-
|
111
|
+
|
112
|
+
Vehicle with different operations
|
112
113
|
|
113
114
|
```ruby
|
114
115
|
builder = AdfBuilder::Builder.new
|
115
116
|
builder.prospect.vehicles.add(2021, 'Toyota', 'Prius', {
|
116
|
-
interest: :sell,
|
117
117
|
status: :used,
|
118
|
-
vin: 'XXXXXXXXXX',
|
119
118
|
})
|
119
|
+
builder.prospect.vehicles.update_tags_with_free_text(0, {
|
120
|
+
bodystyle: 'howdy',
|
121
|
+
year: '2000'
|
122
|
+
})
|
123
|
+
builder.prospect.vehicles.update_odometer(0, 9000, {
|
124
|
+
units: 'km'
|
125
|
+
})
|
126
|
+
builder.prospect.vehicles.update_condition(0, 'ffff')
|
127
|
+
builder.prospect.vehicles.update_imagetag(0, 'http://adfxml.info/adf_spec.pdf', {
|
128
|
+
width: 400,
|
129
|
+
height: 500,
|
130
|
+
alttext: 'Howdy'
|
131
|
+
})
|
132
|
+
puts builder.to_xml
|
120
133
|
```
|
121
134
|
|
122
135
|
Outputs
|
@@ -127,16 +140,55 @@ Outputs
|
|
127
140
|
<?xml version="1.0"?>
|
128
141
|
<adf>
|
129
142
|
<prospect status="new">
|
130
|
-
<requestdate>2021-08-
|
131
|
-
<
|
132
|
-
|
143
|
+
<requestdate>2021-08-09T00:53:59+04:00</requestdate>
|
144
|
+
<customer/>
|
145
|
+
<vendor/>
|
146
|
+
<vehicle status="used">
|
147
|
+
<year>2000</year>
|
133
148
|
<make>Toyota</make>
|
134
149
|
<model>Prius</model>
|
135
|
-
<
|
150
|
+
<bodystyle>howdy</bodystyle>
|
151
|
+
<odometer units="km">9000</odometer>
|
152
|
+
<imagetag width="400" height="500" alttext="Howdy">http://adfxml.info/adf_spec.pdf</imagetag>
|
136
153
|
</vehicle>
|
137
154
|
</prospect>
|
138
155
|
</adf>
|
156
|
+
```
|
157
|
+
|
158
|
+
Color Combination
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
builder = AdfBuilder::Builder.new
|
162
|
+
builder.prospect.vehicles.add(2021, 'Toyota', 'Prius', {
|
163
|
+
status: :used,
|
164
|
+
})
|
165
|
+
builder.prospect.vehicles.add_color_combination(0, 'black', 'yellow', 1)
|
166
|
+
puts builder.to_xml
|
167
|
+
```
|
139
168
|
|
169
|
+
Outputs
|
170
|
+
|
171
|
+
```xml
|
172
|
+
<?ADF version="1.0"?>
|
173
|
+
|
174
|
+
<?xml version="1.0"?>
|
175
|
+
<adf>
|
176
|
+
<prospect status="new">
|
177
|
+
<requestdate>2021-08-09T00:56:07+04:00</requestdate>
|
178
|
+
<customer/>
|
179
|
+
<vendor/>
|
180
|
+
<vehicle status="used">
|
181
|
+
<year>2021</year>
|
182
|
+
<make>Toyota</make>
|
183
|
+
<model>Prius</model>
|
184
|
+
<colorcombination>
|
185
|
+
<interiorcolor>black</interiorcolor>
|
186
|
+
<exteriorcolor>yellow</exteriorcolor>
|
187
|
+
<preference>1</preference>
|
188
|
+
</colorcombination>
|
189
|
+
</vehicle>
|
190
|
+
</prospect>
|
191
|
+
</adf>
|
140
192
|
```
|
141
193
|
|
142
194
|
Add Vendor
|
@@ -199,6 +251,49 @@ Outputs
|
|
199
251
|
</prospect>
|
200
252
|
</adf>
|
201
253
|
```
|
254
|
+
A complex Provider
|
255
|
+
|
256
|
+
```ruby
|
257
|
+
builder = AdfBuilder::Builder.new
|
258
|
+
provider = builder.prospect.provider
|
259
|
+
provider.add('Testing', {part: 'full', type: 'business'})
|
260
|
+
provider.update_tags_with_free_text({
|
261
|
+
url: 'howdy',
|
262
|
+
service: "Nice"
|
263
|
+
})
|
264
|
+
provider.add_email("test@test.com", {preferredcontact: 0})
|
265
|
+
provider.add_phone("+14445556666", {
|
266
|
+
type: 'fax',
|
267
|
+
time: 'day'
|
268
|
+
})
|
269
|
+
provider.add_contact("Mr Sir")
|
270
|
+
provider.contact.add_phone("+132435523424")
|
271
|
+
```
|
272
|
+
|
273
|
+
```xml
|
274
|
+
<?ADF version="1.0"?>
|
275
|
+
|
276
|
+
<?xml version="1.0"?>
|
277
|
+
<adf>
|
278
|
+
<prospect status="new">
|
279
|
+
<requestdate>2021-08-12T18:56:41+04:00</requestdate>
|
280
|
+
<customer/>
|
281
|
+
<vendor/>
|
282
|
+
<provider>
|
283
|
+
<name part="full" type="business">Testing</name>
|
284
|
+
<url>howdy</url>
|
285
|
+
<service>Nice</service>
|
286
|
+
<email preferredcontact="0">test@test.com</email>
|
287
|
+
<phone type="fax" time="day">+14445556666</phone>
|
288
|
+
<contact>
|
289
|
+
<name>Mr Sir</name>
|
290
|
+
<phone>+132435523424</phone>
|
291
|
+
</contact>
|
292
|
+
</provider>
|
293
|
+
</prospect>
|
294
|
+
</adf>
|
295
|
+
```
|
296
|
+
|
202
297
|
## Development
|
203
298
|
|
204
299
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/adf_builder.rb
CHANGED
@@ -11,14 +11,18 @@ require_relative 'adf_builder/base/base'
|
|
11
11
|
require_relative 'adf_builder/base/prospect'
|
12
12
|
require_relative 'adf_builder/base/request_date'
|
13
13
|
|
14
|
+
# PROVIDER
|
15
|
+
require_relative 'adf_builder/provider/provider'
|
16
|
+
|
14
17
|
# SHARED
|
15
18
|
require_relative 'adf_builder/shared/id'
|
16
19
|
require_relative 'adf_builder/shared/contact'
|
17
20
|
|
18
21
|
# VEHICLES
|
19
22
|
require_relative 'adf_builder/vehicles/vehicles'
|
23
|
+
require_relative 'adf_builder/vehicles/colorcombinations'
|
20
24
|
|
21
|
-
#
|
25
|
+
# VENDOR
|
22
26
|
require_relative 'adf_builder/vendor/vendor'
|
23
27
|
|
24
28
|
module AdfBuilder
|
@@ -40,8 +44,6 @@ module AdfBuilder
|
|
40
44
|
|
41
45
|
# def an example of minimal XML taken from ADF spec file http://adfxml.info/adf_spec.pdf
|
42
46
|
def minimal_lead
|
43
|
-
adf = Ox::Element.new("adf")
|
44
|
-
|
45
47
|
prospect = Ox::Element.new("prospect")
|
46
48
|
|
47
49
|
request_date = Ox::Element.new("requestdate")
|
@@ -84,16 +86,15 @@ module AdfBuilder
|
|
84
86
|
vendor << contact
|
85
87
|
|
86
88
|
prospect << request_date << vehicle << customer << vendor
|
87
|
-
adf
|
88
|
-
@doc <<
|
89
|
+
@doc.remove_children_by_path("adf/prospect")
|
90
|
+
@doc.adf << prospect
|
89
91
|
Ox.dump(@doc, {})
|
90
92
|
end
|
91
93
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
# go back to the initial structure
|
95
|
+
def reset_doc
|
96
|
+
@doc.adf.prospect.remove_children_by_path("*")
|
97
|
+
end
|
97
98
|
|
98
99
|
# all the files will start with this same header
|
99
100
|
def init_doc
|
@@ -109,5 +110,42 @@ module AdfBuilder
|
|
109
110
|
doc << adf
|
110
111
|
doc
|
111
112
|
end
|
113
|
+
|
114
|
+
# we will either create a new node with the value or replace the one if it is available
|
115
|
+
def self.update_node(parent_node, key, value, params={})
|
116
|
+
key = key.to_s
|
117
|
+
value = value.to_s
|
118
|
+
if parent_node.locate(key).size > 0
|
119
|
+
node = parent_node.locate(key).first
|
120
|
+
node.replace_text(value)
|
121
|
+
else
|
122
|
+
node = (Ox::Element.new(key) << value)
|
123
|
+
parent_node << node
|
124
|
+
end
|
125
|
+
|
126
|
+
AdfBuilder::Builder.update_params(node, key, params)
|
127
|
+
end
|
128
|
+
|
129
|
+
# update the params by first checking if they are valid params and then checking if the values are valid if necessary
|
130
|
+
def self.update_params(node, key, params)
|
131
|
+
return true if params.empty?
|
132
|
+
key = key.to_sym
|
133
|
+
valid_values = params[:valid_values]
|
134
|
+
valid_parameters = params[:valid_parameters]
|
135
|
+
_params = AdfBuilder::Builder.whitelabel_params(params,valid_parameters, key)
|
136
|
+
_params.each do |k,v|
|
137
|
+
node[k] = v if valid_values[key][k] == true or valid_values[key][k].include? v.to_s
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# clear out the opts that don't match valid keys
|
142
|
+
def self.whitelabel_params(opts, valid_parameters, key)
|
143
|
+
opts.slice(*valid_parameters[key])
|
144
|
+
end
|
145
|
+
|
146
|
+
def self.valid_child?(parent, tag_name, index)
|
147
|
+
child = parent.locate(tag_name)[index]
|
148
|
+
return !child.nil?,child
|
149
|
+
end
|
112
150
|
end
|
113
151
|
end
|
@@ -16,6 +16,7 @@ module AdfBuilder
|
|
16
16
|
@vehicles = Vehicles.new(@prospect)
|
17
17
|
@customer = Customer.new(@prospect)
|
18
18
|
@vendor = Vendor.new(@prospect)
|
19
|
+
@provider = Provider.new(@prospect)
|
19
20
|
end
|
20
21
|
|
21
22
|
def request_date
|
@@ -34,6 +35,10 @@ module AdfBuilder
|
|
34
35
|
@vendor
|
35
36
|
end
|
36
37
|
|
38
|
+
def provider
|
39
|
+
@provider
|
40
|
+
end
|
41
|
+
|
37
42
|
# set status to renew
|
38
43
|
def set_renew
|
39
44
|
@prospect[:status] = STATUSES[:resend]
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Provider
|
3
|
+
|
4
|
+
|
5
|
+
FREE_TEXT_OPTIONAL_TAGS = [:service, :url]
|
6
|
+
|
7
|
+
def initialize(prospect)
|
8
|
+
@prospect = prospect
|
9
|
+
@provider = nil
|
10
|
+
@contact = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def contact
|
14
|
+
@contact
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def add(name, params={})
|
19
|
+
@provider = Ox::Element.new('provider')
|
20
|
+
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
|
21
|
+
AdfBuilder::Builder.update_node(@provider, :name, name, params)
|
22
|
+
@prospect << @provider
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_contact(name, opts={})
|
26
|
+
@contact = Contact.new(@provider, name, opts)
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_phone(phone, params={})
|
30
|
+
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
|
31
|
+
AdfBuilder::Builder.update_node(@provider, :phone, phone, params)
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_email(email, params={})
|
35
|
+
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
|
36
|
+
AdfBuilder::Builder.update_node(@provider, :email, email, params)
|
37
|
+
end
|
38
|
+
|
39
|
+
def update_tags_with_free_text(tags)
|
40
|
+
tags.each do |key, value|
|
41
|
+
if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
42
|
+
AdfBuilder::Builder.update_node(@provider, key, value)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_id(index, value, source=nil, sequence=1)
|
48
|
+
if @prospect.locate("provider").empty?
|
49
|
+
false
|
50
|
+
else
|
51
|
+
Id.new.add(@prospect.provider(index), value, source, sequence)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -6,50 +6,37 @@ module AdfBuilder
|
|
6
6
|
phone: [:type, :time, :preferredcontact]
|
7
7
|
}
|
8
8
|
|
9
|
-
|
9
|
+
VALID_VALUES = {
|
10
|
+
name: {
|
11
|
+
part: %w[first middle suffix last full],
|
12
|
+
type: %w[individual business],
|
13
|
+
primarycontact: %w[0 1]
|
14
|
+
},
|
15
|
+
email: {
|
16
|
+
preferredcontact: %w[0 1],
|
17
|
+
},
|
18
|
+
phone: {
|
19
|
+
preferredcontact: %w[0 1],
|
20
|
+
type: %w[phone fax cellphone pager],
|
21
|
+
time: %w[morning afternoon evening nopreference day]
|
22
|
+
}
|
23
|
+
}
|
10
24
|
|
11
|
-
def initialize(parent_node, name,
|
12
|
-
@contact = Ox::Element.new('contact')
|
25
|
+
def initialize(parent_node, name, params={})
|
26
|
+
@contact = Ox::Element.new('contact')
|
27
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
28
|
+
AdfBuilder::Builder.update_node(@contact, :name, name, params)
|
13
29
|
parent_node << @contact
|
14
|
-
|
15
|
-
opts = whitelabel_opts(opts, :name)
|
16
|
-
|
17
|
-
if opts[:primary_contact]
|
18
|
-
@contact[:primarycontact] = opts[:primary_contact].to_s
|
19
|
-
end
|
20
|
-
|
21
|
-
opts.each do |k,v|
|
22
|
-
@contact.locate("name")[0][k] = v.to_s
|
23
|
-
end
|
24
|
-
|
25
30
|
end
|
26
31
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
opts.each do |k,v|
|
32
|
-
@contact.email[k] = v.to_s
|
33
|
-
end
|
32
|
+
def add_phone(phone, params={})
|
33
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
34
|
+
AdfBuilder::Builder.update_node(@contact, :phone, phone, params)
|
34
35
|
end
|
35
36
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
opts.each do |k,v|
|
41
|
-
@contact.phone[k] = v.to_s
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
# clear out the opts that don't match valid keys
|
51
|
-
def whitelabel_opts(opts, key)
|
52
|
-
opts.slice(*VALID_PARAMETERS[key])
|
37
|
+
def add_email(email, params={})
|
38
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
39
|
+
AdfBuilder::Builder.update_node(@contact, :email, email, params)
|
53
40
|
end
|
54
41
|
end
|
55
42
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class ColorCombinations
|
3
|
+
|
4
|
+
FREE_TEXT_OPTIONAL_TAGS = [:interiorcolor, :exteriorcolor, :preference]
|
5
|
+
|
6
|
+
def initialize(vehicle)
|
7
|
+
@vehicle = vehicle
|
8
|
+
@color_combination = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def add(interior_color, exterior_color, preference)
|
12
|
+
@color_combination = Ox::Element.new('colorcombination')
|
13
|
+
@color_combination <<
|
14
|
+
(Ox::Element.new('interiorcolor') << interior_color) <<
|
15
|
+
(Ox::Element.new('exteriorcolor') << exterior_color) <<
|
16
|
+
(Ox::Element.new('preference') << preference.to_s)
|
17
|
+
@vehicle << @color_combination
|
18
|
+
end
|
19
|
+
|
20
|
+
def update_tags(index, tags)
|
21
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@vehicle,'colorcombination', index)
|
22
|
+
if valid
|
23
|
+
tags.each do |key, value|
|
24
|
+
if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
25
|
+
AdfBuilder::Builder.update_node(vehicle, key, value)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,60 +1,95 @@
|
|
1
1
|
module AdfBuilder
|
2
2
|
class Vehicles
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
trade_in: 'trade-in',
|
8
|
-
test_drive: 'test-drive'
|
3
|
+
VALID_PARAMETERS = {
|
4
|
+
vehicle: [:interest, :status],
|
5
|
+
odometer: [:status, :units],
|
6
|
+
imagetag: [:width, :height, :alttext],
|
9
7
|
}
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
VALID_VALUES = {
|
10
|
+
vehicle: {
|
11
|
+
interest: %w[buy lease sell trade-in test-drive],
|
12
|
+
status: %w[new used]
|
13
|
+
},
|
14
|
+
odometer: {
|
15
|
+
status: %w[unknown rolledover replaced original],
|
16
|
+
units: %w[km mi]
|
17
|
+
},
|
18
|
+
imagetag: {
|
19
|
+
width: true,
|
20
|
+
height: true,
|
21
|
+
alttext: true
|
22
|
+
}
|
14
23
|
}
|
15
24
|
|
16
|
-
FREE_TEXT_OPTIONAL_TAGS =
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
doors: :doors,
|
21
|
-
bodystyle: :bodystyle,
|
22
|
-
transmission: :transmission,
|
23
|
-
pricecomments: :pricecomments,
|
24
|
-
comments: :comments
|
25
|
-
}
|
25
|
+
FREE_TEXT_OPTIONAL_TAGS = [:year, :make, :model, :vin, :stock,
|
26
|
+
:trim, :doors, :bodystyle, :transmission, :pricecomments, :comments]
|
27
|
+
|
28
|
+
CONDITIONS = %w[excellent good fair poor unknown]
|
26
29
|
|
27
30
|
def initialize(prospect)
|
28
31
|
@prospect = prospect
|
32
|
+
@color_combinations = []
|
29
33
|
end
|
30
34
|
|
31
|
-
def
|
32
|
-
vehicle =
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
vehicle[:interest] = interest
|
35
|
+
def add_color_combination(v_index, interior_color, exterior_color, preference)
|
36
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,'vehicle', v_index)
|
37
|
+
if valid
|
38
|
+
cc = ColorCombinations.new(vehicle)
|
39
|
+
cc.add(interior_color, exterior_color, preference)
|
40
|
+
@color_combinations.push(cc)
|
38
41
|
end
|
42
|
+
end
|
39
43
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
44
|
+
def color_combinations
|
45
|
+
@color_combinations
|
46
|
+
end
|
47
|
+
|
48
|
+
def add(year, make, model, params={})
|
49
|
+
vehicle = Ox::Element.new('vehicle')
|
45
50
|
|
51
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
52
|
+
AdfBuilder::Builder.update_params(vehicle, :vehicle, params)
|
46
53
|
|
47
54
|
vehicle << (Ox::Element.new('year') << year.to_s)
|
48
55
|
vehicle << (Ox::Element.new('make') << make)
|
49
56
|
vehicle << (Ox::Element.new('model') << model)
|
50
57
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
58
|
+
@prospect << vehicle
|
59
|
+
end
|
60
|
+
|
61
|
+
def update_odometer(index, value, params={})
|
62
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,'vehicle', index)
|
63
|
+
if valid
|
64
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
65
|
+
AdfBuilder::Builder.update_node(vehicle, 'odometer', value, params)
|
55
66
|
end
|
67
|
+
end
|
56
68
|
|
57
|
-
|
69
|
+
def update_condition(index, value)
|
70
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,'vehicle', index)
|
71
|
+
if valid and CONDITIONS.include? value
|
72
|
+
AdfBuilder::Builder.update_node(vehicle, 'condition', value)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def update_imagetag(index, value, params={})
|
77
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,'vehicle', index)
|
78
|
+
if valid
|
79
|
+
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
80
|
+
AdfBuilder::Builder.update_node(vehicle, 'imagetag', value, params)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def update_tags_with_free_text(index, tags)
|
85
|
+
valid, vehicle = AdfBuilder::Builder.valid_child?(@prospect,'vehicle', index)
|
86
|
+
if valid
|
87
|
+
tags.each do |key, value|
|
88
|
+
if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
89
|
+
AdfBuilder::Builder.update_node(vehicle, key, value)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
58
93
|
end
|
59
94
|
|
60
95
|
def add_id(index, value, source=nil, sequence=1)
|
@@ -64,6 +99,5 @@ module AdfBuilder
|
|
64
99
|
Id.new.add(@prospect.vehicle(index), value, source, sequence)
|
65
100
|
end
|
66
101
|
end
|
67
|
-
|
68
102
|
end
|
69
103
|
end
|
data/lib/adf_builder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adf_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- marcus.salinas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ox
|
@@ -49,8 +49,10 @@ files:
|
|
49
49
|
- lib/adf_builder/base/prospect.rb
|
50
50
|
- lib/adf_builder/base/request_date.rb
|
51
51
|
- lib/adf_builder/customer/customer.rb
|
52
|
+
- lib/adf_builder/provider/provider.rb
|
52
53
|
- lib/adf_builder/shared/contact.rb
|
53
54
|
- lib/adf_builder/shared/id.rb
|
55
|
+
- lib/adf_builder/vehicles/colorcombinations.rb
|
54
56
|
- lib/adf_builder/vehicles/vehicles.rb
|
55
57
|
- lib/adf_builder/vendor/vendor.rb
|
56
58
|
- lib/adf_builder/version.rb
|