class FMCache::Encoder
Public Class Methods
new(id_key_gen)
click to toggle source
@param [FMCache::IdKeyGen]
# File lib/fmcache/encoder.rb, line 6 def initialize(id_key_gen) @id_key_gen = id_key_gen end
Public Instance Methods
encode(values, field_mask)
click to toggle source
@param [<Hash>] values @param [FieldMaskParser::Node] field_mask @return [{ String => { String => <Hash> } }]
# 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)
click to toggle source
@param [Hash] value @param [FieldMaskParser::Node] field_mask @return [{ String => <Hash> }]
# File lib/fmcache/encoder.rb, line 32 def encode_one(value, field_mask) itemizer = Itemizer.new(value, field_mask) itemizer.run! itemizer.items end