Class: FMCache::Encoder

Inherits:
Object
  • Object
show all
Defined in:
lib/fmcache/encoder.rb,
lib/fmcache/encoder/itemizer.rb

Defined Under Namespace

Classes: Itemizer

Instance Method Summary collapse

Constructor Details

#initialize(id_key_gen) ⇒ Encoder

Returns a new instance of Encoder.

Parameters:



6
7
8
# File 'lib/fmcache/encoder.rb', line 6

def initialize(id_key_gen)
  @id_key_gen = id_key_gen
end

Instance Method Details

#encode(values, field_mask) ⇒ { String => { String => <Hash> } }

Parameters:

  • values (<Hash>)
  • field_mask (FieldMaskParser::Node)

Returns:

  • ({ String => { String => <Hash> } })


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fmcache/encoder.rb', line 13

def encode(values, field_mask)
  fields = Helper.to_fields(field_mask)

  r = {}
  values.each do |value|
    # NOTE: `[]` is the default value of each field.
    h = fields.map { |f| [f, []] }.to_h

    h.merge! encode_one(value, field_mask)

    id = value.fetch(:id)
    r[@id_key_gen.to_key(id)] = h
  end
  r
end

#encode_one(value, field_mask) ⇒ { String => <Hash> }

Parameters:

  • value (Hash)
  • field_mask (FieldMaskParser::Node)

Returns:

  • ({ String => <Hash> })


32
33
34
35
36
# File 'lib/fmcache/encoder.rb', line 32

def encode_one(value, field_mask)
  itemizer = Itemizer.new(value, field_mask)
  itemizer.run!
  itemizer.items
end