Sha256: 4b7a363bbaab139e90906a562be4f7467d746060dff05dfb7606dd5d7aafa84a

Contents?: true

Size: 697 Bytes

Versions: 2

Compression:

Stored size: 697 Bytes

Contents

module Cborb::Decoding::Types
  # To represent major type: 5(definite-length)
  #
  # @see https://tools.ietf.org/html/rfc7049#section-2.1
  class Map < Type
    extend Cborb::Decoding::Types::IntegerDecodable

    Intermediate = Struct.new(:size, :keys_and_values)

    def self.decode(state, additional_info)
      im_data = Intermediate.new(consume_as_integer(state, additional_info) * 2, [])
      state.push_stack(self, im_data)
    end

    def self.accept(im_data, type, value)
      im_data.keys_and_values << value
      if im_data.keys_and_values.size == im_data.size
        Hash[*im_data.keys_and_values]
      else
        Cborb::Decoding::State::CONTINUE
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cborb-0.2.0 lib/cborb/decoding/types/map.rb
cborb-0.1.0 lib/cborb/decoding/types/map.rb