gtm_on_rails 0.1.12 → 0.1.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f95bfc0b90f29aa34530add86ae984e9840c2d7c
4
- data.tar.gz: 07b3ec87f742d769cd75885611bc65cc3155d048
3
+ metadata.gz: 2286c644421d286b191d0dcf4d13630a1eb68e64
4
+ data.tar.gz: '0595efe9d6e06b2ae8c722b791cbf738d3ee284f'
5
5
  SHA512:
6
- metadata.gz: 26403d1c6beca9c2d30dd1c74bd2cad3d82619d7686d04e1e16634096dd6c296279e63db3c2289d661af219d811af4d30684bf4447c9a0a5f711fc18a70d6ff0
7
- data.tar.gz: 1d2fd5e5732c12a565a991aa56e32d9c0fddea5607947b5261e629e05839c5c7a7597048da033074f239c791eba5e5115a101d7799db9d24fa8b55b7984bd919
6
+ metadata.gz: 49686ed7d4c9dbcf126474313987b491161f2a9f0c09c47f09e18ef8eb8b40f765943d6192f3bc19d16791a9779974c0b791a2292948b3e5a3eef84d8aef19b6
7
+ data.tar.gz: aea4782dab512cc8e90f783b243080118dc6bdc088c58c34db8e223de17958c69f7707a209a9c4a648b4f9f90f9e20a3ba783035df9655c5e3f52b663f751eab
@@ -3,10 +3,15 @@ module GtmOnRails
3
3
  class DataLayer::Ecommerce < DataLayer::Object
4
4
  ACTIVITY_TYPES = [:product_impression, :product_click, :product_detail, :add_to_cart, :remove_from_cart, :promotion_impression, :promotion_click, :checkout, :purchase, :refund]
5
5
 
6
- def initialize(activity_type, **args)
6
+ def initialize(activity_type, *args)
7
7
  raise ArgumentError.new("'#{activity_type}' is undefined activity type.") unless activity_type.in?(ACTIVITY_TYPES)
8
8
 
9
- @data = send(:"generate_#{activity_type}_hash", args).with_indifferent_access
9
+ sanitize = true
10
+ if args.first.keys.count == 1 && args.first.keys.first.to_sym == :sanitize
11
+ sanitize = args.shift[:sanitize]
12
+ end
13
+
14
+ @data = send(:"generate_#{activity_type}_hash", *[sanitize, args.first]).with_indifferent_access
10
15
  end
11
16
 
12
17
  class << self
@@ -24,214 +29,187 @@ module GtmOnRails
24
29
  end
25
30
 
26
31
  private
27
- def generate_product_impression_hash(args)
28
- result = {}
29
32
 
30
- result[:event] = args[:event] if args[:event].present?
33
+ def generate_product_impression_hash(sanitize, args)
34
+ result = get_default_data(args)
31
35
 
32
- result[:ecommerce] = {}
33
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
36
+ result[:event] = args.delete(:event) if args[:event].present?
34
37
 
35
- if args[:impressions].present?
36
- result[:ecommerce][:impressions] = args[:impressions].map{|impression| impression.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Impression.new(impression) : impression}
37
- end
38
+ result[:ecommerce][:impressions] = get_impression(args) if args[:impressions].present?
39
+
40
+ result.merge!(args) unless sanitize
38
41
 
39
42
  return result
40
43
  end
41
44
 
42
- def generate_product_click_hash(args)
43
- result = {}
45
+ def generate_product_click_hash(sanitize, args)
46
+ result = get_default_data(args)
44
47
 
45
- result[:event] = args[:event] || 'productClick'
48
+ result[:event] = args.delete(:event) || 'productClick'
46
49
 
47
- result[:event_category] = args[:event_category] || 'Enhanced Ecommerce'
48
- result[:event_action] = args[:event_action] || 'Product Click'
49
- result[:event_label] = args[:event_label] || 'Enhanced Ecommerce Product Click'
50
+ result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce'
51
+ result[:event_action] = args.delete(:event_action) || 'Product Click'
52
+ result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Product Click'
50
53
 
51
- result[:ecommerce] = {}
52
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
54
+ result[:ecommerce][:click] = {}
55
+ result[:ecommerce][:click][:actionField] = get_action(args) if args[:action].present?
56
+ result[:ecommerce][:click][:products] = get_products(args) if args[:products].present?
53
57
 
54
- result[:ecommerce][:click] = {}
55
-
56
- if args[:action].present?
57
- action = args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args[:action]) : args[:action]
58
- result[:ecommerce][:click][:actionField] = action
59
- end
60
-
61
- if args[:products].present?
62
- result[:ecommerce][:click][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
63
- end
58
+ result.merge!(args) unless sanitize
64
59
 
65
60
  return result
66
61
  end
67
62
 
68
- def generate_product_detail_hash(args)
69
- result = {}
70
-
71
- result[:event] = args[:event] if args[:event].present?
63
+ def generate_product_detail_hash(sanitize, args)
64
+ result = get_default_data(args)
72
65
 
73
- result[:ecommerce] = {}
74
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
66
+ result[:event] = args.delete(:event) if args[:event].present?
75
67
 
76
- result[:ecommerce][:detail] = {}
68
+ result[:ecommerce][:detail] = {}
69
+ result[:ecommerce][:detail][:actionField] = get_action(args) if args[:action].present?
70
+ result[:ecommerce][:detail][:products] = get_products(args) if args[:products].present?
77
71
 
78
- if args[:action].present?
79
- action = args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args[:action]) : args[:action]
80
- result[:ecommerce][:detail][:actionField] = action
81
- end
82
-
83
- if args[:products].present?
84
- result[:ecommerce][:detail][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
85
- end
72
+ result.merge!(args) unless sanitize
86
73
 
87
74
  return result
88
75
  end
89
76
 
90
- def generate_add_to_cart_hash(args)
91
- result = {}
77
+ def generate_add_to_cart_hash(sanitize, args)
78
+ result = get_default_data(args)
92
79
 
93
- result[:event] = args[:event] || 'addToCart'
80
+ result[:event] = args.delete(:event) || 'addToCart'
94
81
 
95
- result[:event_category] = args[:event_category] || 'Enhanced Ecommerce'
96
- result[:event_action] = args[:event_action] || 'Add to Cart'
97
- result[:event_label] = args[:event_label] || 'Enhanced Ecommerce Add to Cart'
82
+ result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce'
83
+ result[:event_action] = args.delete(:event_action) || 'Add to Cart'
84
+ result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Add to Cart'
98
85
 
99
- result[:ecommerce] = {}
100
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
86
+ result[:ecommerce][:add] = {}
87
+ result[:ecommerce][:add][:products] = get_products(args) if args[:products].present?
101
88
 
102
- result[:ecommerce][:add] = {}
103
- if args[:products].present?
104
- result[:ecommerce][:add][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
105
- end
89
+ result.merge!(args) unless sanitize
106
90
 
107
91
  return result
108
92
  end
109
93
 
110
- def generate_remove_from_cart_hash(args)
111
- result = {}
94
+ def generate_remove_from_cart_hash(sanitize, args)
95
+ result = get_default_data(args)
112
96
 
113
- result[:event] = args[:event] || 'removeFromCart'
97
+ result[:event] = args.delete(:event) || 'removeFromCart'
114
98
 
115
- result[:event_category] = args[:event_category] || 'Enhanced Ecommerce'
116
- result[:event_action] = args[:event_action] || 'Remove from Cart'
117
- result[:event_label] = args[:event_label] || 'Enhanced Ecommerce Remove from Cart'
99
+ result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce'
100
+ result[:event_action] = args.delete(:event_action) || 'Remove from Cart'
101
+ result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Remove from Cart'
118
102
 
119
- result[:ecommerce] = {}
120
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
103
+ result[:ecommerce][:remove] = {}
104
+ result[:ecommerce][:remove][:products] = get_products(args) if args[:products].present?
121
105
 
122
- result[:ecommerce][:remove] = {}
123
- if args[:products].present?
124
- result[:ecommerce][:remove][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
125
- end
106
+ result.merge!(args) unless sanitize
126
107
 
127
108
  return result
128
109
  end
129
110
 
130
- def generate_promotion_impression_hash(args)
131
- result = {}
111
+ def generate_promotion_impression_hash(sanitize, args)
112
+ result = get_default_data(args)
132
113
 
133
- result[:event] = args[:event] if args[:event].present?
114
+ result[:event] = args.delete(:event) if args[:event].present?
134
115
 
135
- result[:ecommerce] = {}
136
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
116
+ result[:ecommerce][:promoView] = {}
117
+ result[:ecommerce][:promoView][:promotions] = get_promotion(args) if args[:promotions].present?
137
118
 
138
- result[:ecommerce][:promoView] = {}
139
-
140
- if args[:promotions].present?
141
- result[:ecommerce][:promoView][:promotions] = args[:promotions].map{|promotion| promotion.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Promotion.new(promotion) : promotion}
142
- end
119
+ result.merge!(args) unless sanitize
143
120
 
144
121
  return result
145
122
  end
146
123
 
147
- def generate_promotion_click_hash(args)
148
- result = {}
124
+ def generate_promotion_click_hash(sanitize, args)
125
+ result = get_default_data(args)
149
126
 
150
- result[:event] = args[:event] || 'promotionClick'
127
+ result[:event] = args.delete(:event) || 'promotionClick'
151
128
 
152
- result[:event_category] = args[:event_category] || 'Enhanced Ecommerce'
153
- result[:event_action] = args[:event_action] || 'Promotion Click'
154
- result[:event_label] = args[:event_label] || 'Enhanced Ecommerce Promotion Click'
129
+ result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce'
130
+ result[:event_action] = args.delete(:event_action) || 'Promotion Click'
131
+ result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Promotion Click'
155
132
 
156
- result[:ecommerce] = {}
157
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
133
+ result[:ecommerce][:promoClick] = {}
134
+ result[:ecommerce][:promoClick][:promotions] = get_promotion(args) if args[:promotions].present?
158
135
 
159
- result[:ecommerce][:promoClick] = {}
160
-
161
- if args[:promotions].present?
162
- result[:ecommerce][:promoClick][:promotions] = args[:promotions].map{|promotion| promotion.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Promotion.new(promotion) : promotion}
163
- end
136
+ result.merge!(args) unless sanitize
164
137
 
165
138
  return result
166
139
  end
167
140
 
168
- def generate_checkout_hash(args)
169
- result = {}
141
+ def generate_checkout_hash(sanitize, args)
142
+ result = get_default_data(args)
170
143
 
171
- result[:event] = args[:event] || 'checkout'
144
+ result[:event] = args.delete(:event) || 'checkout'
172
145
 
173
- result[:event_category] = args[:event_category] || 'Enhanced Ecommerce'
174
- result[:event_action] = args[:event_action] || 'Checkout'
175
- result[:event_label] = args[:event_label] || 'Enhanced Ecommerce Checkout'
146
+ result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce'
147
+ result[:event_action] = args.delete(:event_action) || 'Checkout'
148
+ result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Checkout'
176
149
 
177
- result[:ecommerce] = {}
178
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
150
+ result[:ecommerce][:checkout] = {}
151
+ result[:ecommerce][:checkout][:actionField] = get_action(args) if args[:action].present?
152
+ result[:ecommerce][:checkout][:products] = get_products(args) if args[:products].present?
179
153
 
180
- result[:ecommerce][:checkout] = {}
154
+ result.merge!(args) unless sanitize
181
155
 
182
- if args[:action].present?
183
- action = args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args[:action]) : args[:action]
184
- result[:ecommerce][:checkout][:actionField] = action
185
- end
156
+ return result
157
+ end
186
158
 
187
- if args[:products].present?
188
- result[:ecommerce][:checkout][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
189
- end
159
+ def generate_purchase_hash(sanitize, args)
160
+ result = get_default_data(args)
161
+
162
+ result[:event] = args.delete(:event) if args[:event].present?
163
+
164
+ result[:ecommerce][:purchase] = {}
165
+ result[:ecommerce][:purchase][:actionField] = get_action(args) if args[:action].present?
166
+ result[:ecommerce][:purchase][:products] = get_products(args) if args[:products].present?
167
+
168
+ result.merge!(args) unless sanitize
190
169
 
191
170
  return result
192
171
  end
193
172
 
194
- def generate_purchase_hash(args)
195
- result = {}
173
+ def generate_refund_hash(sanitize, args)
174
+ result = get_default_data(args)
196
175
 
197
- result[:event] = args[:event] if args[:event].present?
176
+ result[:event] = args.delete(:event) if args[:event].present?
198
177
 
199
- result[:ecommerce] = {}
200
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
178
+ result[:ecommerce][:refund] = {}
179
+ result[:ecommerce][:refund][:actionField] = get_action(args) if args[:action].present?
180
+ result[:ecommerce][:refund][:products] = get_products(args) if args[:products].present?
201
181
 
202
- result[:ecommerce][:purchase] = {}
203
-
204
- action = args[:action] || {}
205
- action = action.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(action) : action
206
- result[:ecommerce][:purchase][:actionField] = action
207
-
208
- if args[:products].present?
209
- result[:ecommerce][:purchase][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
210
- end
182
+ result.merge!(args) unless sanitize
211
183
 
212
184
  return result
213
185
  end
214
186
 
215
- def generate_refund_hash(args)
216
- result = {}
217
187
 
218
- result[:event] = args[:event] if args[:event].present?
188
+ def get_default_data(args)
189
+ hash = {}
190
+ hash[:ecommerce] = {}
191
+ hash[:ecommerce][:currencyCode] = get_currency(args)
192
+ hash
193
+ end
219
194
 
220
- result[:ecommerce] = {}
221
- result[:ecommerce][:currencyCode] = args[:currency] || GtmOnRails.config.ecommerce_default_currency
195
+ def get_currency(args)
196
+ args.delete(:currency) || GtmOnRails.config.ecommerce_default_currency
197
+ end
222
198
 
223
- result[:ecommerce][:refund] = {}
199
+ def get_impression(args)
200
+ args.delete(:impressions).map{|impression| impression.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Impression.new(impression) : impression}
201
+ end
224
202
 
225
- if args[:action].present?
226
- action = args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args[:action]) : args[:action]
227
- result[:ecommerce][:refund][:actionField] = action
228
- end
229
-
230
- if args[:products].present?
231
- result[:ecommerce][:refund][:products] = args[:products].map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
232
- end
203
+ def get_promotion(args)
204
+ args.delete(:promotions).map{|promotion| promotion.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Promotion.new(promotion) : promotion}
205
+ end
233
206
 
234
- return result
207
+ def get_products(args)
208
+ args.delete(:products).map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product}
209
+ end
210
+
211
+ def get_action(args)
212
+ args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args.delete(:action)) : args.delete(:action)
235
213
  end
236
214
  end
237
215
  end
@@ -1,3 +1,3 @@
1
1
  module GtmOnRails
2
- VERSION = '0.1.12'
2
+ VERSION = '0.1.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtm_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - ykogure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-25 00:00:00.000000000 Z
11
+ date: 2018-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails