Class: FMCache::Decoder

Inherits:
Object
  • Object
show all
Defined in:
lib/fmcache/decoder.rb,
lib/fmcache/decoder/decode_result.rb,
lib/fmcache/decoder/value_decoder.rb,
lib/fmcache/decoder/fields_checker.rb,
lib/fmcache/decoder/value_decoder/data.rb,
lib/fmcache/decoder/value_decoder/item.rb

Defined Under Namespace

Classes: DecodeResult, FieldsChecker, ValueDecoder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field_mask_parser) ⇒ Decoder

Returns a new instance of Decoder.

Parameters:

  • field_mask_parser (Proc)


8
9
10
11
12
# File 'lib/fmcache/decoder.rb', line 8

def initialize(field_mask_parser)
  @field_mask_parser = field_mask_parser
  @value_decoder     = ValueDecoder.new
  @fields_checker    = FieldsChecker.new
end

Instance Attribute Details

#field_mask_parserObject (readonly)

Returns the value of attribute field_mask_parser.



14
15
16
# File 'lib/fmcache/decoder.rb', line 14

def field_mask_parser
  @field_mask_parser
end

#fields_checkerObject (readonly)

Returns the value of attribute fields_checker.



14
15
16
# File 'lib/fmcache/decoder.rb', line 14

def fields_checker
  @fields_checker
end

#value_decoderObject (readonly)

Returns the value of attribute value_decoder.



14
15
16
# File 'lib/fmcache/decoder.rb', line 14

def value_decoder
  @value_decoder
end

Instance Method Details

#decode(hash, field_mask) ⇒ <Hash>, IncompleteInfo

Parameters:

  • hash ({ String => { String => <Hash> } })
  • field_mask (FieldMaskParser::Node)

Returns:



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fmcache/decoder.rb', line 19

def decode(hash, field_mask)
  list = hash.values
  check_result = fields_checker.check(list, field_mask)

  decode_result = decode_list(check_result.list, field_mask: field_mask)

  f = Helper.to_fields(field_mask) - check_result.missing_fields.to_a
  i_decode_result = decode_list(check_result.incomplete_list, fields: f)

  concat(check_result, decode_result, i_decode_result)
end