adf_builder 0.0.1 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -1
- data/Gemfile.lock +1 -1
- data/README.md +184 -9
- data/adf_builder.gemspec +2 -2
- data/lib/adf_builder.rb +29 -9
- data/lib/adf_builder/base/base.rb +13 -0
- data/lib/adf_builder/base/prospect.rb +46 -0
- data/lib/adf_builder/base/request_date.rb +20 -0
- data/lib/adf_builder/customer/customer.rb +27 -0
- data/lib/adf_builder/shared/contact.rb +55 -0
- data/lib/adf_builder/shared/id.rb +20 -0
- data/lib/adf_builder/vehicles/vehicles.rb +69 -0
- data/lib/adf_builder/vendor/vendor.rb +34 -0
- data/lib/adf_builder/version.rb +1 -1
- metadata +12 -5
- data/lib/adf_builder/lead.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0806861185a24169f9427bfdc78e01f699ea30523cd6db4e055ac951a811e21d'
|
4
|
+
data.tar.gz: 7b5574210760b69ad5e7bb5b2cbc8d3a4e16b58967cfe7c7c94edd3ff3266d15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 453cbe5ebca171565d2cb3be708130979bb782287d96e622fbdaa8ded37ecff51e63004a6ba3c25dd4b9d37e1f552918dfa4924698a4c7867981eea1677c3ab0
|
7
|
+
data.tar.gz: b2d3ebcd64bbcd89034a1b8d9f1dc56518c3147eee88ec44774d8ce4ee877c2347a28820c72fb24b80fed267518457fd58ff6e43504cafce39970bf4f304fa66
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,34 @@
|
|
1
1
|
## [Unreleased]
|
2
|
+
- Vehicle Structure
|
3
|
+
- Remaining Optional Tags that are not free text
|
4
|
+
- odometer
|
5
|
+
- condition
|
6
|
+
- colorcombination
|
7
|
+
- imagetag
|
8
|
+
- price
|
9
|
+
- option
|
10
|
+
- finance
|
11
|
+
- Expand Structures for all parameters
|
12
|
+
- Customer
|
13
|
+
- Vehicle
|
14
|
+
- Contact
|
15
|
+
|
16
|
+
### In many moons
|
17
|
+
- Add Provider structure
|
18
|
+
- Add Price structure
|
19
|
+
|
20
|
+
## [0.0.4] - 2021-08-08
|
21
|
+
- Added Customer, Contact, Vendor basic structure
|
22
|
+
|
23
|
+
|
24
|
+
## [0.0.3] - 2021-08-04
|
25
|
+
- Added ability to add simple vehicle structures
|
26
|
+
|
27
|
+
## [0.0.2] - 2021-08-04
|
28
|
+
|
29
|
+
- Can create a prospect and dynamically update params and values for the base and parent level
|
2
30
|
|
3
31
|
## [0.0.1] - 2021-08-03
|
4
32
|
|
5
33
|
- Initial release
|
6
|
-
- Can return the
|
34
|
+
- Can return the minimal XML given from spec doc
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# AdfBuilder
|
2
|
-
|
3
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/adf_builder`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
2
|
+
Hopefully this will help with development in the ADF format. The goal is to intuitively create and update an ADF XML file that can easily be added to an email or saved to a file.
|
6
3
|
|
7
4
|
## Installation
|
8
5
|
|
@@ -13,17 +10,195 @@ gem 'adf_builder'
|
|
13
10
|
```
|
14
11
|
|
15
12
|
And then execute:
|
16
|
-
|
17
|
-
|
13
|
+
```shell
|
14
|
+
$ bundle install
|
15
|
+
```
|
18
16
|
|
19
17
|
Or install it yourself as:
|
20
|
-
|
21
|
-
|
18
|
+
```shell
|
19
|
+
$ gem install adf_builder
|
20
|
+
```
|
22
21
|
|
23
22
|
## Usage
|
24
23
|
|
25
|
-
|
24
|
+
Quickly create the minimal lead found in the spec document
|
25
|
+
```ruby
|
26
|
+
builder = AdfBuilder::Builder.new
|
27
|
+
builder.minimal_lead
|
28
|
+
```
|
29
|
+
Start Building
|
30
|
+
```ruby
|
31
|
+
builder = AdfBuilder::Builder.new
|
32
|
+
builder.to_xml
|
33
|
+
```
|
34
|
+
|
35
|
+
|
36
|
+
Outputs
|
37
|
+
```xml
|
38
|
+
<?ADF version="1.0"?>
|
39
|
+
|
40
|
+
<?xml version="1.0"?>
|
41
|
+
<adf>
|
42
|
+
<prospect status="new">
|
43
|
+
<requestdate>2021-08-04T15:18:30+04:00</requestdate>
|
44
|
+
</prospect>
|
45
|
+
</adf>
|
46
|
+
```
|
47
|
+
|
48
|
+
|
49
|
+
Update Requestdate value
|
50
|
+
```ruby
|
51
|
+
builder = AdfBuilder::Builder.new
|
52
|
+
builder.prospect.request_date.update_val(Date.new(2021,12,12))
|
53
|
+
```
|
54
|
+
Outputs
|
55
|
+
|
56
|
+
```xml
|
57
|
+
<?ADF version="1.0"?>
|
58
|
+
|
59
|
+
<?xml version="1.0"?>
|
60
|
+
<adf>
|
61
|
+
<prospect status="new">
|
62
|
+
<requestdate>2021-12-12T00:00:00+00:00</requestdate>
|
63
|
+
</prospect>
|
64
|
+
</adf>
|
65
|
+
```
|
66
|
+
|
67
|
+
|
68
|
+
Add ID tag to Prospect
|
69
|
+
```ruby
|
70
|
+
builder = AdfBuilder::Builder.new
|
71
|
+
builder.prospect.add_id('howdy', 'Ag')
|
72
|
+
```
|
73
|
+
|
74
|
+
Outputs
|
75
|
+
```xml
|
76
|
+
<?ADF version="1.0"?>
|
77
|
+
|
78
|
+
<?xml version="1.0"?>
|
79
|
+
<adf>
|
80
|
+
<prospect status="new">
|
81
|
+
<id sequence="1" source="Ag">howdy</id>
|
82
|
+
<requestdate>2021-08-04T15:24:16+04:00</requestdate>
|
83
|
+
</prospect>
|
84
|
+
</adf>
|
85
|
+
```
|
86
|
+
|
87
|
+
Add Vehicle
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
builder = AdfBuilder::Builder.new
|
91
|
+
builder.prospect.vehicles.add(2021, 'Ford', 'Raptor')
|
92
|
+
```
|
93
|
+
|
94
|
+
Outputs
|
95
|
+
|
96
|
+
```xml
|
97
|
+
<?ADF version="1.0"?>
|
98
|
+
|
99
|
+
<?xml version="1.0"?>
|
100
|
+
<adf>
|
101
|
+
<prospect status="new">
|
102
|
+
<requestdate>2021-08-04T18:08:50+04:00</requestdate>
|
103
|
+
<vehicle interest="buy" status="new">
|
104
|
+
<year>2021</year>
|
105
|
+
<make>Ford</make>
|
106
|
+
<model>Raptor</model>
|
107
|
+
</vehicle>
|
108
|
+
</prospect>
|
109
|
+
</adf>
|
110
|
+
```
|
111
|
+
Add Vehicle with tags
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
builder = AdfBuilder::Builder.new
|
115
|
+
builder.prospect.vehicles.add(2021, 'Toyota', 'Prius', {
|
116
|
+
interest: :sell,
|
117
|
+
status: :used,
|
118
|
+
vin: 'XXXXXXXXXX',
|
119
|
+
})
|
120
|
+
```
|
121
|
+
|
122
|
+
Outputs
|
123
|
+
|
124
|
+
```xml
|
125
|
+
<?ADF version="1.0"?>
|
126
|
+
|
127
|
+
<?xml version="1.0"?>
|
128
|
+
<adf>
|
129
|
+
<prospect status="new">
|
130
|
+
<requestdate>2021-08-04T18:16:31+04:00</requestdate>
|
131
|
+
<vehicle interest="sell" status="used">
|
132
|
+
<year>2021</year>
|
133
|
+
<make>Toyota</make>
|
134
|
+
<model>Prius</model>
|
135
|
+
<vin>XXXXXXXXXX</vin>
|
136
|
+
</vehicle>
|
137
|
+
</prospect>
|
138
|
+
</adf>
|
26
139
|
|
140
|
+
```
|
141
|
+
|
142
|
+
Add Vendor
|
143
|
+
|
144
|
+
```ruby
|
145
|
+
builder = AdfBuilder::Builder.new
|
146
|
+
builder.prospect.vendor.add('Dealer One', 'Manager Name', {
|
147
|
+
part: 'full',
|
148
|
+
type: 'individual'
|
149
|
+
}) # options for customer object that is required in vendor
|
150
|
+
```
|
151
|
+
|
152
|
+
Outputs
|
153
|
+
|
154
|
+
```xml
|
155
|
+
<?ADF version="1.0"?>
|
156
|
+
|
157
|
+
<?xml version="1.0"?>
|
158
|
+
<adf>
|
159
|
+
<prospect status="new">
|
160
|
+
<requestdate>2021-08-08T18:43:02+04:00</requestdate>
|
161
|
+
<customer/>
|
162
|
+
<vendor>
|
163
|
+
<vendorname>Dealer One</vendorname>
|
164
|
+
<contact>
|
165
|
+
<name part="full" type="individual">Manager Name</name>
|
166
|
+
</contact>
|
167
|
+
</vendor>
|
168
|
+
</prospect>
|
169
|
+
</adf>
|
170
|
+
```
|
171
|
+
|
172
|
+
Add Contact with phone
|
173
|
+
|
174
|
+
```ruby
|
175
|
+
builder = AdfBuilder::Builder.new
|
176
|
+
builder.prospect.customer.add('New Guy', {
|
177
|
+
part: 'full',
|
178
|
+
type: 'individual'
|
179
|
+
})
|
180
|
+
builder.prospect.customer.contact.add_phone('(555)-444-3333')
|
181
|
+
```
|
182
|
+
|
183
|
+
Outputs
|
184
|
+
|
185
|
+
```xml
|
186
|
+
<?ADF version="1.0"?>
|
187
|
+
|
188
|
+
<?xml version="1.0"?>
|
189
|
+
<adf>
|
190
|
+
<prospect status="new">
|
191
|
+
<requestdate>2021-08-08T18:44:45+04:00</requestdate>
|
192
|
+
<customer>
|
193
|
+
<contact>
|
194
|
+
<name part="full" type="individual">New Guy</name>
|
195
|
+
<phone>(555)-444-3333</phone>
|
196
|
+
</contact>
|
197
|
+
</customer>
|
198
|
+
<vendor/>
|
199
|
+
</prospect>
|
200
|
+
</adf>
|
201
|
+
```
|
27
202
|
## Development
|
28
203
|
|
29
204
|
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/adf_builder.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["marcus.salinas"]
|
9
9
|
spec.email = ["12.marcus.salinas@gmail.com"]
|
10
10
|
|
11
|
-
spec.summary = "Create XML for the Auto-
|
12
|
-
spec.description = "
|
11
|
+
spec.summary = "Create XML for the Auto-base Date Format"
|
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
15
|
spec.required_ruby_version = ">= 2.4.0"
|
data/lib/adf_builder.rb
CHANGED
@@ -1,24 +1,45 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'ox'
|
3
4
|
require_relative "adf_builder/version"
|
4
|
-
require_relative 'adf_builder/lead'
|
5
5
|
|
6
|
-
|
6
|
+
# CUSTOMER
|
7
|
+
require_relative 'adf_builder/customer/customer'
|
8
|
+
|
9
|
+
# BASE
|
10
|
+
require_relative 'adf_builder/base/base'
|
11
|
+
require_relative 'adf_builder/base/prospect'
|
12
|
+
require_relative 'adf_builder/base/request_date'
|
13
|
+
|
14
|
+
# SHARED
|
15
|
+
require_relative 'adf_builder/shared/id'
|
16
|
+
require_relative 'adf_builder/shared/contact'
|
17
|
+
|
18
|
+
# VEHICLES
|
19
|
+
require_relative 'adf_builder/vehicles/vehicles'
|
20
|
+
|
21
|
+
# VENDER
|
22
|
+
require_relative 'adf_builder/vendor/vendor'
|
7
23
|
|
8
24
|
module AdfBuilder
|
9
25
|
class Error < StandardError; end
|
10
26
|
class Builder
|
11
27
|
def initialize
|
12
28
|
@doc = self.init_doc
|
13
|
-
@
|
29
|
+
@base = Base.new(@doc)
|
14
30
|
end
|
15
31
|
|
16
|
-
def
|
17
|
-
@
|
32
|
+
def prospect
|
33
|
+
@base.prospect
|
34
|
+
end
|
35
|
+
|
36
|
+
# output the XML
|
37
|
+
def to_xml
|
38
|
+
Ox.dump(@doc, {})
|
18
39
|
end
|
19
40
|
|
20
41
|
# def an example of minimal XML taken from ADF spec file http://adfxml.info/adf_spec.pdf
|
21
|
-
def
|
42
|
+
def minimal_lead
|
22
43
|
adf = Ox::Element.new("adf")
|
23
44
|
|
24
45
|
prospect = Ox::Element.new("prospect")
|
@@ -69,9 +90,6 @@ module AdfBuilder
|
|
69
90
|
end
|
70
91
|
|
71
92
|
|
72
|
-
private
|
73
|
-
|
74
|
-
|
75
93
|
# all the files will start with this same header
|
76
94
|
def init_doc
|
77
95
|
doc = Ox::Document.new
|
@@ -82,6 +100,8 @@ module AdfBuilder
|
|
82
100
|
instruct = Ox::Instruct.new(:xml)
|
83
101
|
instruct[:version] = '1.0'
|
84
102
|
doc << instruct
|
103
|
+
adf = Ox::Element.new("adf")
|
104
|
+
doc << adf
|
85
105
|
doc
|
86
106
|
end
|
87
107
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Prospect
|
3
|
+
STATUSES = {
|
4
|
+
new: :new,
|
5
|
+
resend: :resend
|
6
|
+
}
|
7
|
+
|
8
|
+
def initialize(doc)
|
9
|
+
@doc = doc
|
10
|
+
@doc.adf << Ox::Element.new("prospect")
|
11
|
+
@prospect = @doc.adf.prospect
|
12
|
+
@prospect[:status] = STATUSES[:new]
|
13
|
+
|
14
|
+
|
15
|
+
@request_date = RequestDate.new(@prospect)
|
16
|
+
@vehicles = Vehicles.new(@prospect)
|
17
|
+
@customer = Customer.new(@prospect)
|
18
|
+
@vendor = Vendor.new(@prospect)
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_date
|
22
|
+
@request_date
|
23
|
+
end
|
24
|
+
|
25
|
+
def vehicles
|
26
|
+
@vehicles
|
27
|
+
end
|
28
|
+
|
29
|
+
def customer
|
30
|
+
@customer
|
31
|
+
end
|
32
|
+
|
33
|
+
def vendor
|
34
|
+
@vendor
|
35
|
+
end
|
36
|
+
|
37
|
+
# set status to renew
|
38
|
+
def set_renew
|
39
|
+
@prospect[:status] = STATUSES[:resend]
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_id(value, source=nil, sequence=1)
|
43
|
+
Id.new.add(@prospect, value, source, sequence)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class RequestDate
|
3
|
+
WITH_SYMBOLS = '%FT%T%:z'
|
4
|
+
WITHOUT_SYMBOLS = '%Y%m%dT%H%M%S%z'
|
5
|
+
|
6
|
+
def initialize(prospect_node)
|
7
|
+
@request_date_node = Ox::Element.new('requestdate')
|
8
|
+
@request_date_node << DateTime.now.strftime('%FT%T%:z')
|
9
|
+
prospect_node << @request_date_node
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_val(datetime_value, format=1)
|
13
|
+
if format == 1
|
14
|
+
@request_date_node.replace_text(datetime_value.strftime(WITH_SYMBOLS))
|
15
|
+
elsif format == 2
|
16
|
+
@request_date_node.replace_text(datetime_value.strftime(WITHOUT_SYMBOLS))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Customer
|
3
|
+
def initialize(prospect)
|
4
|
+
@customer = Ox::Element.new('customer')
|
5
|
+
@contact = nil
|
6
|
+
|
7
|
+
prospect << @customer
|
8
|
+
end
|
9
|
+
|
10
|
+
def contact
|
11
|
+
@contact
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(name, opts={})
|
15
|
+
@contact = Contact.new(@customer, name, opts)
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_id(index, value, source=nil, sequence=1)
|
19
|
+
if @prospect.locate("customer").empty?
|
20
|
+
false
|
21
|
+
else
|
22
|
+
Id.new.add(@prospect.customer(index), value, source, sequence)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Contact
|
3
|
+
VALID_PARAMETERS = {
|
4
|
+
name: [:part, :type, :primarycontact],
|
5
|
+
email: [:preferredcontact],
|
6
|
+
phone: [:type, :time, :preferredcontact]
|
7
|
+
}
|
8
|
+
|
9
|
+
PHONE_TYPES = [:phone, :fax, :cellphone, :pager]
|
10
|
+
|
11
|
+
def initialize(parent_node, name, opts={})
|
12
|
+
@contact = Ox::Element.new('contact') << (Ox::Element.new('name') << name)
|
13
|
+
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
|
+
end
|
26
|
+
|
27
|
+
def add_email(email, opts={})
|
28
|
+
@contact << (Ox::Element.new('email') << email)
|
29
|
+
opts = whitelabel_opts(opts, :phone)
|
30
|
+
|
31
|
+
opts.each do |k,v|
|
32
|
+
@contact.email[k] = v.to_s
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_phone(phone, opts={})
|
37
|
+
@contact << (Ox::Element.new('phone') << phone)
|
38
|
+
opts = whitelabel_opts(opts, :phone)
|
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])
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Id
|
3
|
+
def initialize
|
4
|
+
|
5
|
+
end
|
6
|
+
|
7
|
+
# add id tag to the form
|
8
|
+
def add(parent_node, value, source=nil, sequence=1)
|
9
|
+
id_node = Ox::Element.new('id')
|
10
|
+
id_node << value
|
11
|
+
id_node[:sequence] = sequence
|
12
|
+
|
13
|
+
if source
|
14
|
+
id_node[:source] = source
|
15
|
+
end
|
16
|
+
|
17
|
+
parent_node.prepend_child(id_node)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Vehicles
|
3
|
+
INTEREST_VALUES = {
|
4
|
+
buy: 'buy',
|
5
|
+
lease: 'lease',
|
6
|
+
sell: 'sell',
|
7
|
+
trade_in: 'trade-in',
|
8
|
+
test_drive: 'test-drive'
|
9
|
+
}
|
10
|
+
|
11
|
+
STATUS_VALUES = {
|
12
|
+
new: 'new',
|
13
|
+
used: 'used'
|
14
|
+
}
|
15
|
+
|
16
|
+
FREE_TEXT_OPTIONAL_TAGS = {
|
17
|
+
vin: :vin,
|
18
|
+
stock: :stock,
|
19
|
+
trim: :trim,
|
20
|
+
doors: :doors,
|
21
|
+
bodystyle: :bodystyle,
|
22
|
+
transmission: :transmission,
|
23
|
+
pricecomments: :pricecomments,
|
24
|
+
comments: :comments
|
25
|
+
}
|
26
|
+
|
27
|
+
def initialize(prospect)
|
28
|
+
@prospect = prospect
|
29
|
+
end
|
30
|
+
|
31
|
+
def add(year, make, model, tags={})
|
32
|
+
vehicle = Ox::Element.new('vehicle')
|
33
|
+
|
34
|
+
if tags[:interest]
|
35
|
+
interest = INTEREST_VALUES[tags[:interest].to_sym]
|
36
|
+
tags.delete(:interest)
|
37
|
+
vehicle[:interest] = interest
|
38
|
+
end
|
39
|
+
|
40
|
+
if tags[:status]
|
41
|
+
status = STATUS_VALUES[tags[:status].to_sym]
|
42
|
+
tags.delete(:status)
|
43
|
+
vehicle[:status] = status
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
vehicle << (Ox::Element.new('year') << year.to_s)
|
48
|
+
vehicle << (Ox::Element.new('make') << make)
|
49
|
+
vehicle << (Ox::Element.new('model') << model)
|
50
|
+
|
51
|
+
tags.each do |key, value|
|
52
|
+
if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
|
53
|
+
vehicle << (Ox::Element.new(key.to_s) << value)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
@prospect << vehicle
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_id(index, value, source=nil, sequence=1)
|
61
|
+
if @prospect.locate("vehicle").empty? or @prospect.vehicle(index).nil?
|
62
|
+
false
|
63
|
+
else
|
64
|
+
Id.new.add(@prospect.vehicle(index), value, source, sequence)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module AdfBuilder
|
2
|
+
class Vendor
|
3
|
+
def initialize(prospect)
|
4
|
+
@vendor = Ox::Element.new('vendor')
|
5
|
+
@contact = nil
|
6
|
+
prospect << @vendor
|
7
|
+
end
|
8
|
+
|
9
|
+
def contact
|
10
|
+
@contact
|
11
|
+
end
|
12
|
+
|
13
|
+
def add(name, contact_name, opts={})
|
14
|
+
@vendor << (Ox::Element.new('vendorname') << name)
|
15
|
+
@contact = Contact.new(@vendor, contact_name, opts)
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_url(url)
|
19
|
+
if @vendor.locate("url").size > 0
|
20
|
+
@vendor.remove_children(@vendor.url)
|
21
|
+
end
|
22
|
+
@vendor << (Ox::Element.new('url') << url)
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_id(index, value, source=nil, sequence=1)
|
26
|
+
if @prospect.locate("vendor").empty?
|
27
|
+
false
|
28
|
+
else
|
29
|
+
Id.new.add(@prospect.vendor(index), value, source, sequence)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
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.5
|
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-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ox
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.14'
|
27
|
-
description:
|
27
|
+
description: Easily create XML in ADF format to send by email.
|
28
28
|
email:
|
29
29
|
- 12.marcus.salinas@gmail.com
|
30
30
|
executables: []
|
@@ -45,7 +45,14 @@ files:
|
|
45
45
|
- bin/console
|
46
46
|
- bin/setup
|
47
47
|
- lib/adf_builder.rb
|
48
|
-
- lib/adf_builder/
|
48
|
+
- lib/adf_builder/base/base.rb
|
49
|
+
- lib/adf_builder/base/prospect.rb
|
50
|
+
- lib/adf_builder/base/request_date.rb
|
51
|
+
- lib/adf_builder/customer/customer.rb
|
52
|
+
- lib/adf_builder/shared/contact.rb
|
53
|
+
- lib/adf_builder/shared/id.rb
|
54
|
+
- lib/adf_builder/vehicles/vehicles.rb
|
55
|
+
- lib/adf_builder/vendor/vendor.rb
|
49
56
|
- lib/adf_builder/version.rb
|
50
57
|
homepage: https://github.com/jippylong12/adf_builder
|
51
58
|
licenses:
|
@@ -72,5 +79,5 @@ requirements: []
|
|
72
79
|
rubygems_version: 3.1.4
|
73
80
|
signing_key:
|
74
81
|
specification_version: 4
|
75
|
-
summary: Create XML for the Auto-
|
82
|
+
summary: Create XML for the Auto-base Date Format
|
76
83
|
test_files: []
|