Module: Woody::Decorators::Insights::FieldTransformer

Defined in:
lib/woody/decorators/insights/field_transformer.rb

Class Method Summary collapse

Class Method Details

.apply(transformers, value) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/woody/decorators/insights/field_transformer.rb', line 9

def self.apply(transformers, value)
  transformers.reduce(value) do |accum, transformer|
    if transformer.key?('args')
      self.send(transformer['method'], transformer['args']).(accum)
    else
      self.send(transformer['method']).(accum)
    end
  end
end

.commasObject



19
20
21
22
23
# File 'lib/woody/decorators/insights/field_transformer.rb', line 19

def self.commas()
  lambda do |val|
    val.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
  end
end

.dateObject



25
26
27
28
29
# File 'lib/woody/decorators/insights/field_transformer.rb', line 25

def self.date()
  lambda do |val|
    DateTime.parse(val).strftime("%-d %B %Y")
  end
end

.percentageObject



31
32
33
# File 'lib/woody/decorators/insights/field_transformer.rb', line 31

def self.percentage()
  lambda { |val| format('%s%', val.to_s) }
end

.round(p) ⇒ Object



35
36
37
# File 'lib/woody/decorators/insights/field_transformer.rb', line 35

def self.round(p)
  lambda { |val| val.round(p) }
end

.shortenObject



39
40
41
42
43
44
45
# File 'lib/woody/decorators/insights/field_transformer.rb', line 39

def self.shorten()
  lambda do |val|
    return val.to_s if val < 1000
    return format('%sk', (val / 1000)) if val < 1000000
    return format('%sm', (val / 1000000))
  end
end

.thumbnailObject



47
48
49
50
51
52
53
54
# File 'lib/woody/decorators/insights/field_transformer.rb', line 47

def self.thumbnail()
  lambda do |val|
    config = Wes::Cloudkit.config
    Woody::Decorators::Video.new(
      Wes::Data::API::Video.find('facebook_id', val), config
    ).thumbnail
  end
end

.truncate(length) ⇒ Object



56
57
58
# File 'lib/woody/decorators/insights/field_transformer.rb', line 56

def self.truncate(length)
  lambda { |val| format('%s...', val[0..(length + 1)]) }
end