adf_builder 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -4
- data/Gemfile.lock +1 -1
- data/README.md +66 -6
- data/lib/adf_builder.rb +13 -7
- data/lib/adf_builder/{base.rb → base/base.rb} +0 -2
- data/lib/adf_builder/base/prospect.rb +10 -0
- data/lib/adf_builder/customer/customer.rb +27 -0
- data/lib/adf_builder/shared/contact.rb +55 -0
- data/lib/adf_builder/{id.rb → shared/id.rb} +0 -0
- data/lib/adf_builder/vehicles/vehicles.rb +2 -6
- data/lib/adf_builder/vendor/vendor.rb +34 -0
- data/lib/adf_builder/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d008819843612af5533e3967bcd340b078b9d72a8616bd9ae53cd0ef00b8a483
|
4
|
+
data.tar.gz: d5c4308aff6683a815f1afda34e5fbaf3efcc617c2738a9ce2cd702ad4cc67d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73b81965ecfa689d8b107dcbdea47e6c7d75b49efed0bb589bdd677a7b417c1b71002d0e25e3772aa5a5f3b26b881470fef752493f9dc476145d0715448157a3
|
7
|
+
data.tar.gz: 1784480ea361713eafcd0caba178558d97c02b66b30657b28154185cc59160cdcd8dd6d53d74147396f773fe9e6ad22ef4e4189554bfedd2bf194ee19c07467a
|
data/CHANGELOG.md
CHANGED
@@ -8,14 +8,19 @@
|
|
8
8
|
- price
|
9
9
|
- option
|
10
10
|
- finance
|
11
|
-
|
11
|
+
- Expand Structures for all parameters
|
12
|
+
- Customer
|
13
|
+
- Vehicle
|
14
|
+
- Contact
|
15
|
+
|
12
16
|
### In many moons
|
13
|
-
- Add Vendor structure
|
14
|
-
- Add Customer structure
|
15
17
|
- Add Provider structure
|
16
|
-
- Add Contact structure
|
17
18
|
- Add Price structure
|
18
19
|
|
20
|
+
## [0.0.4] - 2021-08-08
|
21
|
+
- Added Customer, Contact, Vendor basic structure
|
22
|
+
|
23
|
+
|
19
24
|
## [0.0.3] - 2021-08-04
|
20
25
|
- Added ability to add simple vehicle structures
|
21
26
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# AdfBuilder
|
2
|
-
Hopefully this will help with development in the ADF format. The goal is to intuitively create
|
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.
|
3
3
|
|
4
4
|
## Installation
|
5
5
|
|
@@ -49,7 +49,7 @@ Outputs
|
|
49
49
|
Update Requestdate value
|
50
50
|
```ruby
|
51
51
|
builder = AdfBuilder::Builder.new
|
52
|
-
builder.
|
52
|
+
builder.prospect.request_date.update_val(Date.new(2021,12,12))
|
53
53
|
```
|
54
54
|
Outputs
|
55
55
|
|
@@ -68,7 +68,7 @@ Outputs
|
|
68
68
|
Add ID tag to Prospect
|
69
69
|
```ruby
|
70
70
|
builder = AdfBuilder::Builder.new
|
71
|
-
builder.
|
71
|
+
builder.prospect.add_id('howdy', 'Ag')
|
72
72
|
```
|
73
73
|
|
74
74
|
Outputs
|
@@ -88,7 +88,7 @@ Add Vehicle
|
|
88
88
|
|
89
89
|
```ruby
|
90
90
|
builder = AdfBuilder::Builder.new
|
91
|
-
builder.
|
91
|
+
builder.prospect.vehicles.add(2021, 'Ford', 'Raptor')
|
92
92
|
```
|
93
93
|
|
94
94
|
Outputs
|
@@ -112,7 +112,7 @@ Add Vehicle with tags
|
|
112
112
|
|
113
113
|
```ruby
|
114
114
|
builder = AdfBuilder::Builder.new
|
115
|
-
builder.
|
115
|
+
builder.prospect.vehicles.add(2021, 'Toyota', 'Prius', {
|
116
116
|
interest: :sell,
|
117
117
|
status: :used,
|
118
118
|
vin: 'XXXXXXXXXX',
|
@@ -128,7 +128,7 @@ Outputs
|
|
128
128
|
<adf>
|
129
129
|
<prospect status="new">
|
130
130
|
<requestdate>2021-08-04T18:16:31+04:00</requestdate>
|
131
|
-
<vehicle interest="
|
131
|
+
<vehicle interest="sell" status="used">
|
132
132
|
<year>2021</year>
|
133
133
|
<make>Toyota</make>
|
134
134
|
<model>Prius</model>
|
@@ -139,6 +139,66 @@ Outputs
|
|
139
139
|
|
140
140
|
```
|
141
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
|
+
```
|
142
202
|
## Development
|
143
203
|
|
144
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/lib/adf_builder.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'ox'
|
3
4
|
require_relative "adf_builder/version"
|
4
|
-
|
5
|
-
|
5
|
+
|
6
|
+
# CUSTOMER
|
7
|
+
require_relative 'adf_builder/customer/customer'
|
6
8
|
|
7
9
|
# BASE
|
10
|
+
require_relative 'adf_builder/base/base'
|
8
11
|
require_relative 'adf_builder/base/prospect'
|
9
12
|
require_relative 'adf_builder/base/request_date'
|
10
13
|
|
14
|
+
# SHARED
|
15
|
+
require_relative 'adf_builder/shared/id'
|
16
|
+
require_relative 'adf_builder/shared/contact'
|
17
|
+
|
11
18
|
# VEHICLES
|
12
19
|
require_relative 'adf_builder/vehicles/vehicles'
|
13
20
|
|
14
|
-
|
15
|
-
|
16
|
-
require 'ox'
|
21
|
+
# VENDER
|
22
|
+
require_relative 'adf_builder/vendor/vendor'
|
17
23
|
|
18
24
|
module AdfBuilder
|
19
25
|
class Error < StandardError; end
|
@@ -23,8 +29,8 @@ module AdfBuilder
|
|
23
29
|
@base = Base.new(@doc)
|
24
30
|
end
|
25
31
|
|
26
|
-
def
|
27
|
-
@base
|
32
|
+
def prospect
|
33
|
+
@base.prospect
|
28
34
|
end
|
29
35
|
|
30
36
|
# output the XML
|
@@ -14,6 +14,8 @@ module AdfBuilder
|
|
14
14
|
|
15
15
|
@request_date = RequestDate.new(@prospect)
|
16
16
|
@vehicles = Vehicles.new(@prospect)
|
17
|
+
@customer = Customer.new(@prospect)
|
18
|
+
@vendor = Vendor.new(@prospect)
|
17
19
|
end
|
18
20
|
|
19
21
|
def request_date
|
@@ -24,6 +26,14 @@ module AdfBuilder
|
|
24
26
|
@vehicles
|
25
27
|
end
|
26
28
|
|
29
|
+
def customer
|
30
|
+
@customer
|
31
|
+
end
|
32
|
+
|
33
|
+
def vendor
|
34
|
+
@vendor
|
35
|
+
end
|
36
|
+
|
27
37
|
# set status to renew
|
28
38
|
def set_renew
|
29
39
|
@prospect[:status] = STATUSES[:resend]
|
@@ -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
|
File without changes
|
@@ -34,19 +34,15 @@ module AdfBuilder
|
|
34
34
|
if tags[:interest]
|
35
35
|
interest = INTEREST_VALUES[tags[:interest].to_sym]
|
36
36
|
tags.delete(:interest)
|
37
|
-
|
38
|
-
interest = INTEREST_VALUES[:buy]
|
37
|
+
vehicle[:interest] = interest
|
39
38
|
end
|
40
39
|
|
41
40
|
if tags[:status]
|
42
41
|
status = STATUS_VALUES[tags[:status].to_sym]
|
43
42
|
tags.delete(:status)
|
44
|
-
|
45
|
-
status = STATUS_VALUES[:new]
|
43
|
+
vehicle[:status] = status
|
46
44
|
end
|
47
45
|
|
48
|
-
vehicle[:interest] = interest
|
49
|
-
vehicle[:status] = status
|
50
46
|
|
51
47
|
vehicle << (Ox::Element.new('year') << year.to_s)
|
52
48
|
vehicle << (Ox::Element.new('make') << make)
|
@@ -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.4
|
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
|
@@ -45,11 +45,14 @@ files:
|
|
45
45
|
- bin/console
|
46
46
|
- bin/setup
|
47
47
|
- lib/adf_builder.rb
|
48
|
-
- lib/adf_builder/base.rb
|
48
|
+
- lib/adf_builder/base/base.rb
|
49
49
|
- lib/adf_builder/base/prospect.rb
|
50
50
|
- lib/adf_builder/base/request_date.rb
|
51
|
-
- lib/adf_builder/
|
51
|
+
- lib/adf_builder/customer/customer.rb
|
52
|
+
- lib/adf_builder/shared/contact.rb
|
53
|
+
- lib/adf_builder/shared/id.rb
|
52
54
|
- lib/adf_builder/vehicles/vehicles.rb
|
55
|
+
- lib/adf_builder/vendor/vendor.rb
|
53
56
|
- lib/adf_builder/version.rb
|
54
57
|
homepage: https://github.com/jippylong12/adf_builder
|
55
58
|
licenses:
|