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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b52ffaa62f849533560890d14c698c1de3e4475b347c23d43a12cb5c75ea42c
4
- data.tar.gz: 3a1d8dd414e73453ca32d768406518b01648c555e1c9e0cf8416f06924321d64
3
+ metadata.gz: d008819843612af5533e3967bcd340b078b9d72a8616bd9ae53cd0ef00b8a483
4
+ data.tar.gz: d5c4308aff6683a815f1afda34e5fbaf3efcc617c2738a9ce2cd702ad4cc67d9
5
5
  SHA512:
6
- metadata.gz: 2b2361f9fe58e67dbbce7990b045d791383e5a07c164ad82b4ec3b72099d8d220b75942c45e974e82e7ce885cc5a5c3af56e247dd517126998fd7232ce508ed6
7
- data.tar.gz: e4beaad79cc2613f219c34ac1aa291a87ac186b9240c5f23e32d344886673bc4eb746b180029fdd2feee661aed9976612a46fc46a41dbfc75844ded7d3234c16
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adf_builder (0.0.2)
4
+ adf_builder (0.0.4)
5
5
  ox (~> 2.14)
6
6
 
7
7
  GEM
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 an update an ADF XML file that can easily be added to an email or saved to a file.
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.base.prospect.request_date.update_val(Date.new(2021,12,12))
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.base.prospect.add_id('howdy', 'Ag')
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.base.prospect.vehicles.add(2021, 'Ford', 'Raptor')
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.base.prospect.vehicles.add(2021, 'Toyota', 'Prius', {
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="sold" status="used">
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
- require_relative 'adf_builder/base'
5
- require_relative 'adf_builder/id'
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 base
27
- @base
32
+ def prospect
33
+ @base.prospect
28
34
  end
29
35
 
30
36
  # output the XML
@@ -9,7 +9,5 @@ module AdfBuilder
9
9
  def prospect
10
10
  @prospect
11
11
  end
12
-
13
-
14
12
  end
15
13
  end
@@ -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
- else
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
- else
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdfBuilder
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
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.3
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-04 00:00:00.000000000 Z
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/id.rb
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: