woody-decorators 6.4.1 → 6.5.0
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 049c6b73df00400a7d5b5e1854ac1ce2599287b6
|
4
|
+
data.tar.gz: cdcf8fa5a565a5ca20eee839a91bd128bd4df028
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80b5254e6dd494f854fbb30e032cf1ebb3d147308e9094d7e316be4eed6cdbb55672e7876edcb0feccc74a6dccfa32d184084bee57132ff9216bb945df097a6e
|
7
|
+
data.tar.gz: 0a2cd566b80a64e29e9d40f756d2672279f7e4643a71a54e6766b76e8703e48e897aa37ab524645b5b32e89b41f1979e636af6574c7ecc798031c77b4378ba4c
|
data/lib/woody/decorators.rb
CHANGED
@@ -2,10 +2,28 @@ module Woody
|
|
2
2
|
module Decorators
|
3
3
|
module Insights
|
4
4
|
module FieldTransformer
|
5
|
+
def self.commas()
|
6
|
+
lambda do |val|
|
7
|
+
val.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.percentage()
|
12
|
+
lambda { |val| format('%s%', val.to_s) }
|
13
|
+
end
|
14
|
+
|
5
15
|
def self.round(precision)
|
6
16
|
lambda { |val| val.round(precision) }
|
7
17
|
end
|
8
18
|
|
19
|
+
def self.shorten()
|
20
|
+
lambda do |val|
|
21
|
+
return val.to_s if val < 1000
|
22
|
+
return format('%sk', (val / 1000)) if val < 1000000
|
23
|
+
return format('%sm', (val / 1000000))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
9
27
|
def self.apply_transformers(transformers, value)
|
10
28
|
transformers.reduce(value) do |accum, transformer|
|
11
29
|
transformer.(accum)
|
@@ -1,39 +1,62 @@
|
|
1
1
|
require 'woody/decorators/insights/field_transformer'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
module Woody
|
5
4
|
module Decorators
|
6
5
|
module Insights
|
7
6
|
class Summary
|
8
|
-
|
9
|
-
|
7
|
+
attr_reader :data
|
8
|
+
|
9
|
+
def initialize(data, cards)
|
10
|
+
@data = transform(data, cards)
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
private
|
14
|
+
|
15
|
+
def apply_transformers(key, value)
|
16
|
+
FieldTransformer.apply_transformers(
|
17
|
+
field_transformers[key],
|
18
|
+
value
|
19
|
+
)
|
14
20
|
end
|
15
21
|
|
16
22
|
def field_transformers
|
17
23
|
{
|
18
|
-
'
|
19
|
-
|
20
|
-
|
24
|
+
'campaign_reach' => [
|
25
|
+
FieldTransformer.commas()
|
26
|
+
],
|
27
|
+
'campaign_views' => [
|
28
|
+
FieldTransformer.commas()
|
29
|
+
],
|
30
|
+
'minutes_viewed' => [
|
31
|
+
FieldTransformer.round(0), FieldTransformer.commas()
|
32
|
+
],
|
33
|
+
'unqiue_viewers' => [
|
34
|
+
FieldTransformer.shorten()
|
35
|
+
],
|
36
|
+
'overall_view_rate' => [
|
37
|
+
FieldTransformer.round(0), FieldTransformer.percentage()
|
38
|
+
],
|
39
|
+
'total_engagement' => [
|
40
|
+
FieldTransformer.shorten()
|
41
|
+
],
|
42
|
+
'engagement_rate' => [
|
43
|
+
FieldTransformer.round(0), FieldTransformer.percentage()
|
44
|
+
]
|
21
45
|
}
|
22
46
|
end
|
23
47
|
|
24
|
-
def transform(data)
|
25
|
-
|
26
|
-
if field_transformers.key?(key)
|
27
|
-
|
48
|
+
def transform(data, cards)
|
49
|
+
transformed_cards = cards.map do |card|
|
50
|
+
if field_transformers.key?(card['key'])
|
51
|
+
card['value'] = apply_transformers(
|
52
|
+
card['key'], data[card['key']]
|
53
|
+
).to_s
|
54
|
+
else
|
55
|
+
card['value'] = data[card['key']].to_s
|
28
56
|
end
|
57
|
+
card
|
29
58
|
end
|
30
|
-
|
31
|
-
|
32
|
-
def apply_transformers(key, value)
|
33
|
-
FieldTransformer.apply_transformers(
|
34
|
-
field_transformers[key],
|
35
|
-
value
|
36
|
-
)
|
59
|
+
{ cards: transformed_cards }
|
37
60
|
end
|
38
61
|
end
|
39
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: woody-decorators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|