adf_builder 0.2.2 → 0.4.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/.gitignore +1 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile +0 -7
- data/Gemfile.lock +46 -35
- data/adf_builder.gemspec +4 -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 +30 -7
- data/lib/adf_builder/customer/timeframe.rb +44 -0
- data/lib/adf_builder/provider/provider.rb +21 -23
- data/lib/adf_builder/shared/contact.rb +18 -16
- data/lib/adf_builder/shared/id.rb +7 -9
- 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 +36 -33
- metadata +47 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 838eda978e92f15cfa05a3da07e8a80ee1348f07fb4511abcf2ae79063e0917d
|
|
4
|
+
data.tar.gz: 205da1b11de1d2748107a0696477787ba0a8f5971ffaabf46f1c25a13fb8079c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f85f57a637fcdd0e71b84afda8ad59476a2ffe7ffed04ca521f306950469a87ce895eb71339d1ab48c1fa6d9b5ebab26699654ce9556c613deb39291e876ad72
|
|
7
|
+
data.tar.gz: bdade6f04b5a64dbb042202052c3ba174f8263b00d735e858a1f9627ce25e4524a53b41d42200108258914c2e582efbcd8f0bf449e17a0de2fd741cd37b489dd
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
|
+
|
|
3
|
+
## [0.4.0] - 2026-01-19
|
|
4
|
+
- Modernized dependencies
|
|
5
|
+
- Updated `ox` to `~> 2.14.23` for better compatibility
|
|
6
|
+
- Added compatibility for Ruby 3.4.x
|
|
7
|
+
- Updated development dependencies (RSpec, Rubocop, Rake)
|
|
2
8
|
- Vehicle Structure - Remaining Optional Tags that are not free text
|
|
3
9
|
- option
|
|
4
10
|
- finance
|
|
@@ -7,6 +13,12 @@
|
|
|
7
13
|
- Contact
|
|
8
14
|
- Vehicle
|
|
9
15
|
|
|
16
|
+
## [0.3.0] - 2023-11-28
|
|
17
|
+
- Completed Customer - timeframe and comments tags
|
|
18
|
+
|
|
19
|
+
## [0.2.2] - 2021-11-02
|
|
20
|
+
- Fixed bug where ADF and xml tags were flipped
|
|
21
|
+
|
|
10
22
|
## [0.2.1] - 2021-11-02
|
|
11
23
|
- Add comments to the Vehicle nodes
|
|
12
24
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,48 +1,60 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
adf_builder (0.
|
|
4
|
+
adf_builder (0.4.0)
|
|
5
5
|
ox (~> 2.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
ast (2.4.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
ast (2.4.3)
|
|
11
|
+
bigdecimal (4.0.1)
|
|
12
|
+
diff-lcs (1.6.2)
|
|
13
|
+
json (2.18.0)
|
|
14
|
+
language_server-protocol (3.17.0.5)
|
|
15
|
+
lint_roller (1.1.0)
|
|
16
|
+
ox (2.14.23)
|
|
17
|
+
bigdecimal (>= 3.0)
|
|
18
|
+
parallel (1.27.0)
|
|
19
|
+
parser (3.3.10.1)
|
|
15
20
|
ast (~> 2.4.1)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
rspec-
|
|
24
|
-
|
|
25
|
-
rspec-
|
|
26
|
-
rspec-
|
|
21
|
+
racc
|
|
22
|
+
prism (1.8.0)
|
|
23
|
+
racc (1.8.1)
|
|
24
|
+
rainbow (3.1.1)
|
|
25
|
+
rake (13.3.1)
|
|
26
|
+
regexp_parser (2.11.3)
|
|
27
|
+
rspec (3.13.2)
|
|
28
|
+
rspec-core (~> 3.13.0)
|
|
29
|
+
rspec-expectations (~> 3.13.0)
|
|
30
|
+
rspec-mocks (~> 3.13.0)
|
|
31
|
+
rspec-core (3.13.6)
|
|
32
|
+
rspec-support (~> 3.13.0)
|
|
33
|
+
rspec-expectations (3.13.5)
|
|
27
34
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
28
|
-
rspec-support (~> 3.
|
|
29
|
-
rspec-mocks (3.
|
|
35
|
+
rspec-support (~> 3.13.0)
|
|
36
|
+
rspec-mocks (3.13.7)
|
|
30
37
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
31
|
-
rspec-support (~> 3.
|
|
32
|
-
rspec-support (3.
|
|
33
|
-
rubocop (1.
|
|
38
|
+
rspec-support (~> 3.13.0)
|
|
39
|
+
rspec-support (3.13.6)
|
|
40
|
+
rubocop (1.82.1)
|
|
41
|
+
json (~> 2.3)
|
|
42
|
+
language_server-protocol (~> 3.17.0.2)
|
|
43
|
+
lint_roller (~> 1.1.0)
|
|
34
44
|
parallel (~> 1.10)
|
|
35
|
-
parser (>= 3.
|
|
45
|
+
parser (>= 3.3.0.2)
|
|
36
46
|
rainbow (>= 2.2.2, < 4.0)
|
|
37
|
-
regexp_parser (>=
|
|
38
|
-
|
|
39
|
-
rubocop-ast (>= 1.8.0, < 2.0)
|
|
47
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
48
|
+
rubocop-ast (>= 1.48.0, < 2.0)
|
|
40
49
|
ruby-progressbar (~> 1.7)
|
|
41
|
-
unicode-display_width (>=
|
|
42
|
-
rubocop-ast (1.
|
|
43
|
-
parser (>= 3.
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
51
|
+
rubocop-ast (1.49.0)
|
|
52
|
+
parser (>= 3.3.7.2)
|
|
53
|
+
prism (~> 1.7)
|
|
54
|
+
ruby-progressbar (1.13.0)
|
|
55
|
+
unicode-display_width (3.2.0)
|
|
56
|
+
unicode-emoji (~> 4.1)
|
|
57
|
+
unicode-emoji (4.2.0)
|
|
46
58
|
|
|
47
59
|
PLATFORMS
|
|
48
60
|
arm64-darwin-20
|
|
@@ -50,10 +62,9 @@ PLATFORMS
|
|
|
50
62
|
|
|
51
63
|
DEPENDENCIES
|
|
52
64
|
adf_builder!
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
rubocop (~> 1.7)
|
|
65
|
+
rake (~> 13.2)
|
|
66
|
+
rspec (~> 3.13)
|
|
67
|
+
rubocop (~> 1.70)
|
|
57
68
|
|
|
58
69
|
BUNDLED WITH
|
|
59
70
|
2.4.4
|
data/adf_builder.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = "Easily create XML in ADF format to send by email."
|
|
13
13
|
spec.homepage = "https://github.com/jippylong12/adf_builder"
|
|
14
14
|
spec.license = "MIT"
|
|
15
|
-
spec.required_ruby_version = ">=
|
|
15
|
+
spec.required_ruby_version = ">= 3.0.0"
|
|
16
16
|
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
18
18
|
spec.metadata["source_code_uri"] = "https://github.com/jippylong12/adf_builder"
|
|
@@ -29,6 +29,9 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
|
|
30
30
|
# Uncomment to register a new dependency of your gem
|
|
31
31
|
spec.add_dependency "ox", "~> 2.14"
|
|
32
|
+
spec.add_development_dependency "rake", "~> 13.2"
|
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.13"
|
|
34
|
+
spec.add_development_dependency "rubocop", "~> 1.70"
|
|
32
35
|
|
|
33
36
|
# For more information and examples about making a new gem, checkout our
|
|
34
37
|
# guide at: https://bundler.io/guides/creating_gem.html
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Base
|
|
3
5
|
# initialize the prospect, id, and requestdate node
|
|
@@ -6,8 +8,6 @@ module AdfBuilder
|
|
|
6
8
|
@prospect = Prospect.new(@doc)
|
|
7
9
|
end
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
@prospect
|
|
11
|
-
end
|
|
11
|
+
attr_reader :prospect
|
|
12
12
|
end
|
|
13
|
-
end
|
|
13
|
+
end
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Prospect
|
|
3
5
|
STATUSES = {
|
|
4
6
|
new: :new,
|
|
5
7
|
resend: :resend
|
|
6
|
-
}
|
|
8
|
+
}.freeze
|
|
7
9
|
|
|
8
10
|
def initialize(doc)
|
|
9
11
|
@doc = doc
|
|
@@ -11,7 +13,6 @@ module AdfBuilder
|
|
|
11
13
|
@prospect = @doc.adf.prospect
|
|
12
14
|
@prospect[:status] = STATUSES[:new]
|
|
13
15
|
|
|
14
|
-
|
|
15
16
|
@request_date = RequestDate.new(@prospect)
|
|
16
17
|
@vehicles = Vehicles.new(@prospect)
|
|
17
18
|
@customer = Customer.new(@prospect)
|
|
@@ -19,33 +20,15 @@ module AdfBuilder
|
|
|
19
20
|
@provider = Provider.new(@prospect)
|
|
20
21
|
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
@request_date
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def vehicles
|
|
27
|
-
@vehicles
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def customer
|
|
31
|
-
@customer
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def vendor
|
|
35
|
-
@vendor
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def provider
|
|
39
|
-
@provider
|
|
40
|
-
end
|
|
23
|
+
attr_reader :request_date, :vehicles, :customer, :vendor, :provider
|
|
41
24
|
|
|
42
25
|
# set status to renew
|
|
43
26
|
def set_renew
|
|
44
27
|
@prospect[:status] = STATUSES[:resend]
|
|
45
28
|
end
|
|
46
29
|
|
|
47
|
-
def add_id(value, source=nil, sequence=1)
|
|
30
|
+
def add_id(value, source = nil, sequence = 1)
|
|
48
31
|
Id.new.add(@prospect, value, source, sequence)
|
|
49
32
|
end
|
|
50
33
|
end
|
|
51
|
-
end
|
|
34
|
+
end
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class RequestDate
|
|
3
|
-
WITH_SYMBOLS =
|
|
4
|
-
WITHOUT_SYMBOLS =
|
|
5
|
+
WITH_SYMBOLS = "%FT%T%:z"
|
|
6
|
+
WITHOUT_SYMBOLS = "%Y%m%dT%H%M%S%z"
|
|
5
7
|
|
|
6
8
|
def initialize(prospect_node)
|
|
7
|
-
@request_date_node = Ox::Element.new(
|
|
8
|
-
@request_date_node << DateTime.now.strftime(
|
|
9
|
+
@request_date_node = Ox::Element.new("requestdate")
|
|
10
|
+
@request_date_node << DateTime.now.strftime("%FT%T%:z")
|
|
9
11
|
prospect_node << @request_date_node
|
|
10
12
|
end
|
|
11
13
|
|
|
12
|
-
def update_val(datetime_value, format=1)
|
|
14
|
+
def update_val(datetime_value, format = 1)
|
|
13
15
|
if format == 1
|
|
14
16
|
@request_date_node.replace_text(datetime_value.strftime(WITH_SYMBOLS))
|
|
15
17
|
elsif format == 2
|
|
@@ -17,4 +19,4 @@ module AdfBuilder
|
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
22
|
+
end
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Customer
|
|
3
5
|
def initialize(prospect)
|
|
4
|
-
@customer = Ox::Element.new(
|
|
6
|
+
@customer = Ox::Element.new("customer")
|
|
5
7
|
@contact = nil
|
|
8
|
+
@timeframe = nil
|
|
6
9
|
|
|
7
10
|
prospect << @customer
|
|
8
11
|
end
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
@contact
|
|
12
|
-
end
|
|
13
|
+
attr_reader :contact, :timeframe
|
|
13
14
|
|
|
14
|
-
def add(name, opts={})
|
|
15
|
+
def add(name, opts = {})
|
|
15
16
|
@contact = Contact.new(@customer, name, opts)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
|
-
def add_id(index, value, source=nil, sequence=1)
|
|
19
|
+
def add_id(index, value, source = nil, sequence = 1)
|
|
19
20
|
if @prospect.locate("customer").empty?
|
|
20
21
|
false
|
|
21
22
|
else
|
|
@@ -23,5 +24,27 @@ module AdfBuilder
|
|
|
23
24
|
end
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
# @param descriptin [String] - Description of customer’s timing intention.
|
|
28
|
+
# @param earliest_date [DateTime] - Earliest date customer is interested in. If timeframe tag
|
|
29
|
+
# is present, it is required to specify earliestdate and/or
|
|
30
|
+
# latestdate
|
|
31
|
+
# @param latest_date [DateTime] - Latest date customer is interested in. If timeframe tag
|
|
32
|
+
# is present, it is required to specify earliestdate and/or
|
|
33
|
+
# latestdate
|
|
34
|
+
def add_timeframe(description, earliest_date = nil, latest_date = nil)
|
|
35
|
+
return false if earliest_date.nil? && latest_date.nil?
|
|
36
|
+
|
|
37
|
+
return false if earliest_date && (earliest_date.class != DateTime)
|
|
38
|
+
|
|
39
|
+
return false if latest_date && (latest_date.class != DateTime)
|
|
40
|
+
|
|
41
|
+
@timeframe = Timeframe.new(@customer, description, earliest_date, latest_date) if @timeframe.nil?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def update_comments(comments)
|
|
45
|
+
return false if comments.class != String
|
|
46
|
+
|
|
47
|
+
AdfBuilder::Builder.update_node(@customer, :comments, comments)
|
|
48
|
+
end
|
|
26
49
|
end
|
|
27
|
-
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AdfBuilder
|
|
4
|
+
class Timeframe
|
|
5
|
+
def initialize(customer, description, earliest_date, latest_date)
|
|
6
|
+
begin
|
|
7
|
+
earliest_date = earliest_date.strftime("%FT%T%:z") if earliest_date
|
|
8
|
+
latest_date = latest_date.strftime("%FT%T%:z") if latest_date
|
|
9
|
+
rescue StandardError
|
|
10
|
+
return nil
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
@timeframe = Ox::Element.new("timeframe")
|
|
14
|
+
|
|
15
|
+
@timeframe << (Ox::Element.new("description") << description)
|
|
16
|
+
@timeframe << (Ox::Element.new("earliestdate") << earliest_date) if earliest_date
|
|
17
|
+
@timeframe << (Ox::Element.new("latestdate") << latest_date) if latest_date
|
|
18
|
+
customer << @timeframe
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def update_description(description)
|
|
22
|
+
AdfBuilder::Builder.update_node(@timeframe, :description, description)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def update_earliest_date(date)
|
|
26
|
+
begin
|
|
27
|
+
date = date.strftime("%FT%T%:z")
|
|
28
|
+
rescue StandardError
|
|
29
|
+
return false
|
|
30
|
+
end
|
|
31
|
+
AdfBuilder::Builder.update_node(@timeframe, :earliestdate, date)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def update_latest_date(date)
|
|
35
|
+
begin
|
|
36
|
+
date = date.strftime("%FT%T%:z")
|
|
37
|
+
rescue StandardError
|
|
38
|
+
return false
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
AdfBuilder::Builder.update_node(@timeframe, :latestdate, date)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Provider
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
FREE_TEXT_OPTIONAL_TAGS = [:service, :url]
|
|
5
|
+
FREE_TEXT_OPTIONAL_TAGS = %i[service url].freeze
|
|
6
6
|
|
|
7
7
|
def initialize(prospect)
|
|
8
8
|
@prospect = prospect
|
|
@@ -10,41 +10,39 @@ module AdfBuilder
|
|
|
10
10
|
@contact = nil
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
@contact
|
|
15
|
-
end
|
|
16
|
-
|
|
13
|
+
attr_reader :contact
|
|
17
14
|
|
|
18
|
-
def add(name, params={})
|
|
19
|
-
@provider = Ox::Element.new(
|
|
20
|
-
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
21
|
-
|
|
15
|
+
def add(name, params = {})
|
|
16
|
+
@provider = Ox::Element.new("provider")
|
|
17
|
+
params.merge!({ valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
18
|
+
valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS })
|
|
19
|
+
AdfBuilder::Builder.update_node(@provider, :name, name, params)
|
|
22
20
|
@prospect << @provider
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
def add_contact(name, opts={})
|
|
23
|
+
def add_contact(name, opts = {})
|
|
26
24
|
@contact = Contact.new(@provider, name, opts)
|
|
27
25
|
end
|
|
28
26
|
|
|
29
|
-
def add_phone(phone, params={})
|
|
30
|
-
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
31
|
-
|
|
27
|
+
def add_phone(phone, params = {})
|
|
28
|
+
params.merge!({ valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
29
|
+
valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS })
|
|
30
|
+
AdfBuilder::Builder.update_node(@provider, :phone, phone, params)
|
|
32
31
|
end
|
|
33
32
|
|
|
34
|
-
def add_email(email, params={})
|
|
35
|
-
params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
36
|
-
|
|
33
|
+
def add_email(email, params = {})
|
|
34
|
+
params.merge!({ valid_values: AdfBuilder::Contact::VALID_VALUES,
|
|
35
|
+
valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS })
|
|
36
|
+
AdfBuilder::Builder.update_node(@provider, :email, email, params)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def update_tags_with_free_text(tags)
|
|
40
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
|
|
41
|
+
AdfBuilder::Builder.update_node(@provider, key, value) if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
|
44
42
|
end
|
|
45
43
|
end
|
|
46
44
|
|
|
47
|
-
def add_id(index, value, source=nil, sequence=1)
|
|
45
|
+
def add_id(index, value, source = nil, sequence = 1)
|
|
48
46
|
if @prospect.locate("provider").empty?
|
|
49
47
|
false
|
|
50
48
|
else
|
|
@@ -52,4 +50,4 @@ module AdfBuilder
|
|
|
52
50
|
end
|
|
53
51
|
end
|
|
54
52
|
end
|
|
55
|
-
end
|
|
53
|
+
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Contact
|
|
3
5
|
VALID_PARAMETERS = {
|
|
4
|
-
name: [
|
|
6
|
+
name: %i[part type primarycontact],
|
|
5
7
|
email: [:preferredcontact],
|
|
6
|
-
phone: [
|
|
7
|
-
}
|
|
8
|
+
phone: %i[type time preferredcontact]
|
|
9
|
+
}.freeze
|
|
8
10
|
|
|
9
11
|
VALID_VALUES = {
|
|
10
12
|
name: {
|
|
@@ -13,30 +15,30 @@ module AdfBuilder
|
|
|
13
15
|
primarycontact: %w[0 1]
|
|
14
16
|
},
|
|
15
17
|
email: {
|
|
16
|
-
preferredcontact: %w[0 1]
|
|
18
|
+
preferredcontact: %w[0 1]
|
|
17
19
|
},
|
|
18
20
|
phone: {
|
|
19
21
|
preferredcontact: %w[0 1],
|
|
20
22
|
type: %w[phone fax cellphone pager],
|
|
21
23
|
time: %w[morning afternoon evening nopreference day]
|
|
22
24
|
}
|
|
23
|
-
}
|
|
25
|
+
}.freeze
|
|
24
26
|
|
|
25
|
-
def initialize(parent_node, name, params={})
|
|
26
|
-
@contact = Ox::Element.new(
|
|
27
|
-
params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
|
|
28
|
-
AdfBuilder::Builder.update_node(@contact, :name, name,
|
|
27
|
+
def initialize(parent_node, name, params = {})
|
|
28
|
+
@contact = Ox::Element.new("contact")
|
|
29
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
30
|
+
AdfBuilder::Builder.update_node(@contact, :name, name, params)
|
|
29
31
|
parent_node << @contact
|
|
30
32
|
end
|
|
31
33
|
|
|
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,
|
|
34
|
+
def add_phone(phone, params = {})
|
|
35
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
36
|
+
AdfBuilder::Builder.update_node(@contact, :phone, phone, params)
|
|
35
37
|
end
|
|
36
38
|
|
|
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,
|
|
39
|
+
def add_email(email, params = {})
|
|
40
|
+
params.merge!({ valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS })
|
|
41
|
+
AdfBuilder::Builder.update_node(@contact, :email, email, params)
|
|
40
42
|
end
|
|
41
43
|
end
|
|
42
|
-
end
|
|
44
|
+
end
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AdfBuilder
|
|
2
4
|
class Id
|
|
3
|
-
def initialize
|
|
4
|
-
|
|
5
|
-
end
|
|
5
|
+
def initialize; end
|
|
6
6
|
|
|
7
7
|
# add id tag to the form
|
|
8
|
-
def add(parent_node, value, source=nil, sequence=1)
|
|
9
|
-
id_node = Ox::Element.new(
|
|
8
|
+
def add(parent_node, value, source = nil, sequence = 1)
|
|
9
|
+
id_node = Ox::Element.new("id")
|
|
10
10
|
id_node << value
|
|
11
11
|
id_node[:sequence] = sequence
|
|
12
12
|
|
|
13
|
-
if source
|
|
14
|
-
id_node[:source] = source
|
|
15
|
-
end
|
|
13
|
+
id_node[:source] = source if source
|
|
16
14
|
|
|
17
15
|
parent_node.prepend_child(id_node)
|
|
18
16
|
end
|
|
19
17
|
end
|
|
20
|
-
end
|
|
18
|
+
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,38 +1,40 @@
|
|
|
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
|
|
9
|
+
require_relative "adf_builder/customer/customer"
|
|
10
|
+
require_relative "adf_builder/customer/timeframe"
|
|
10
11
|
|
|
11
12
|
# BASE
|
|
12
|
-
require_relative
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
13
|
+
require_relative "adf_builder/base/base"
|
|
14
|
+
require_relative "adf_builder/base/prospect"
|
|
15
|
+
require_relative "adf_builder/base/request_date"
|
|
15
16
|
|
|
16
17
|
# PROVIDER
|
|
17
|
-
require_relative
|
|
18
|
+
require_relative "adf_builder/provider/provider"
|
|
18
19
|
|
|
19
20
|
# SHARED
|
|
20
|
-
require_relative
|
|
21
|
-
require_relative
|
|
21
|
+
require_relative "adf_builder/shared/id"
|
|
22
|
+
require_relative "adf_builder/shared/contact"
|
|
22
23
|
|
|
23
24
|
# VEHICLES
|
|
24
|
-
require_relative
|
|
25
|
-
require_relative
|
|
26
|
-
require_relative
|
|
25
|
+
require_relative "adf_builder/vehicles/vehicles"
|
|
26
|
+
require_relative "adf_builder/vehicles/colorcombinations"
|
|
27
|
+
require_relative "adf_builder/vehicles/price"
|
|
27
28
|
|
|
28
29
|
# VENDOR
|
|
29
|
-
require_relative
|
|
30
|
+
require_relative "adf_builder/vendor/vendor"
|
|
30
31
|
|
|
31
32
|
module AdfBuilder
|
|
32
33
|
class Error < StandardError; end
|
|
34
|
+
|
|
33
35
|
class Builder
|
|
34
36
|
def initialize
|
|
35
|
-
@doc =
|
|
37
|
+
@doc = init_doc
|
|
36
38
|
@base = Base.new(@doc)
|
|
37
39
|
end
|
|
38
40
|
|
|
@@ -50,17 +52,17 @@ module AdfBuilder
|
|
|
50
52
|
prospect = Ox::Element.new("prospect")
|
|
51
53
|
|
|
52
54
|
request_date = Ox::Element.new("requestdate")
|
|
53
|
-
request_date <<
|
|
55
|
+
request_date << "2000-03-30T15:30:20-08:00"
|
|
54
56
|
|
|
55
|
-
vehicle = Ox::Element.new(
|
|
57
|
+
vehicle = Ox::Element.new("vehicle")
|
|
56
58
|
year = Ox::Element.new("year")
|
|
57
|
-
year <<
|
|
59
|
+
year << "1999"
|
|
58
60
|
|
|
59
61
|
make = Ox::Element.new("make")
|
|
60
|
-
make <<
|
|
62
|
+
make << "Chevrolet"
|
|
61
63
|
|
|
62
64
|
model = Ox::Element.new("model")
|
|
63
|
-
model <<
|
|
65
|
+
model << "Blazer"
|
|
64
66
|
|
|
65
67
|
vehicle << year << make << model
|
|
66
68
|
|
|
@@ -69,11 +71,11 @@ module AdfBuilder
|
|
|
69
71
|
contact = Ox::Element.new("contact")
|
|
70
72
|
|
|
71
73
|
name = Ox::Element.new("name")
|
|
72
|
-
name[:part] =
|
|
73
|
-
name <<
|
|
74
|
+
name[:part] = "full"
|
|
75
|
+
name << "John Doe"
|
|
74
76
|
|
|
75
77
|
phone = Ox::Element.new("phone")
|
|
76
|
-
phone <<
|
|
78
|
+
phone << "393-999-3922"
|
|
77
79
|
|
|
78
80
|
contact << name << phone
|
|
79
81
|
customer << contact
|
|
@@ -82,8 +84,8 @@ module AdfBuilder
|
|
|
82
84
|
|
|
83
85
|
contact = Ox::Element.new("contact")
|
|
84
86
|
name = Ox::Element.new("name")
|
|
85
|
-
name[:part] =
|
|
86
|
-
name <<
|
|
87
|
+
name[:part] = "full"
|
|
88
|
+
name << "Acura of Bellevue"
|
|
87
89
|
|
|
88
90
|
contact << name
|
|
89
91
|
vendor << contact
|
|
@@ -103,11 +105,11 @@ module AdfBuilder
|
|
|
103
105
|
def init_doc
|
|
104
106
|
doc = Ox::Document.new
|
|
105
107
|
instruct = Ox::Instruct.new(:xml)
|
|
106
|
-
instruct[:version] =
|
|
108
|
+
instruct[:version] = "1.0"
|
|
107
109
|
doc << instruct
|
|
108
110
|
doc << Ox::Raw.new("")
|
|
109
|
-
instruct = Ox::Instruct.new(
|
|
110
|
-
instruct[:version] =
|
|
111
|
+
instruct = Ox::Instruct.new("ADF")
|
|
112
|
+
instruct[:version] = "1.0"
|
|
111
113
|
doc << instruct
|
|
112
114
|
adf = Ox::Element.new("adf")
|
|
113
115
|
doc << adf
|
|
@@ -115,10 +117,10 @@ module AdfBuilder
|
|
|
115
117
|
end
|
|
116
118
|
|
|
117
119
|
# we will either create a new node with the value or replace the one if it is available
|
|
118
|
-
def self.update_node(parent_node, key, value, params={})
|
|
120
|
+
def self.update_node(parent_node, key, value, params = {})
|
|
119
121
|
key = key.to_s
|
|
120
122
|
value = value.to_s
|
|
121
|
-
if parent_node.locate(key).size
|
|
123
|
+
if parent_node.locate(key).size.positive?
|
|
122
124
|
node = parent_node.locate(key).first
|
|
123
125
|
node.replace_text(value)
|
|
124
126
|
else
|
|
@@ -132,12 +134,13 @@ module AdfBuilder
|
|
|
132
134
|
# update the params by first checking if they are valid params and then checking if the values are valid if necessary
|
|
133
135
|
def self.update_params(node, key, params)
|
|
134
136
|
return true if params.empty?
|
|
137
|
+
|
|
135
138
|
key = key.to_sym
|
|
136
139
|
valid_values = params[:valid_values]
|
|
137
140
|
valid_parameters = params[:valid_parameters]
|
|
138
|
-
_params = AdfBuilder::Builder.whitelabel_params(params,valid_parameters, key)
|
|
139
|
-
_params.each do |k,v|
|
|
140
|
-
node[k] = v if valid_values[key][k] == true
|
|
141
|
+
_params = AdfBuilder::Builder.whitelabel_params(params, valid_parameters, key)
|
|
142
|
+
_params.each do |k, v|
|
|
143
|
+
node[k] = v if (valid_values[key][k] == true) || valid_values[key][k].include?(v.to_s)
|
|
141
144
|
end
|
|
142
145
|
end
|
|
143
146
|
|
|
@@ -148,7 +151,7 @@ module AdfBuilder
|
|
|
148
151
|
|
|
149
152
|
def self.valid_child?(parent, tag_name, index)
|
|
150
153
|
child = parent.locate(tag_name)[index]
|
|
151
|
-
|
|
154
|
+
[!child.nil?, child]
|
|
152
155
|
end
|
|
153
156
|
end
|
|
154
157
|
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: 0.4.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,48 @@ dependencies:
|
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
25
|
version: '2.14'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rake
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '13.2'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '13.2'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: rspec
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '3.13'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '3.13'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: rubocop
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.70'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '1.70'
|
|
27
68
|
description: Easily create XML in ADF format to send by email.
|
|
28
69
|
email:
|
|
29
70
|
- 12.marcus.salinas@gmail.com
|
|
@@ -49,6 +90,7 @@ files:
|
|
|
49
90
|
- lib/adf_builder/base/prospect.rb
|
|
50
91
|
- lib/adf_builder/base/request_date.rb
|
|
51
92
|
- lib/adf_builder/customer/customer.rb
|
|
93
|
+
- lib/adf_builder/customer/timeframe.rb
|
|
52
94
|
- lib/adf_builder/data/iso-4217-currency-codes.json
|
|
53
95
|
- lib/adf_builder/provider/provider.rb
|
|
54
96
|
- lib/adf_builder/shared/contact.rb
|
|
@@ -65,7 +107,6 @@ metadata:
|
|
|
65
107
|
homepage_uri: https://github.com/jippylong12/adf_builder
|
|
66
108
|
source_code_uri: https://github.com/jippylong12/adf_builder
|
|
67
109
|
changelog_uri: https://github.com/jippylong12/adf_builder/blob/main/CHANGELOG.md
|
|
68
|
-
post_install_message:
|
|
69
110
|
rdoc_options: []
|
|
70
111
|
require_paths:
|
|
71
112
|
- lib
|
|
@@ -73,15 +114,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
73
114
|
requirements:
|
|
74
115
|
- - ">="
|
|
75
116
|
- !ruby/object:Gem::Version
|
|
76
|
-
version:
|
|
117
|
+
version: 3.0.0
|
|
77
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
119
|
requirements:
|
|
79
120
|
- - ">="
|
|
80
121
|
- !ruby/object:Gem::Version
|
|
81
122
|
version: '0'
|
|
82
123
|
requirements: []
|
|
83
|
-
rubygems_version: 3.
|
|
84
|
-
signing_key:
|
|
124
|
+
rubygems_version: 3.7.2
|
|
85
125
|
specification_version: 4
|
|
86
126
|
summary: Create XML for the Auto-base Date Format
|
|
87
127
|
test_files: []
|