Module: Rencoder::Decoder
- Included in:
- Coder
- Defined in:
- lib/rencoder/decoder.rb
Overview
Rencode format decoder module
Constant Summary collapse
- INTEGER_DECODING_MAP =
{ CHR_INT1 => [1, 'c'], CHR_INT2 => [2, 's>'], CHR_INT4 => [4, 'l>'], CHR_INT8 => [8, 'q>'] }.freeze
Instance Method Summary collapse
Instance Method Details
#decode(buffer) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rencoder/decoder.rb', line 13 def decode(buffer) buffer = StringIO.new(buffer) unless buffer.respond_to?(:read) # IO object type = buffer.readbyte case type when STR_HEADER, STR_FIXED decode_string(buffer, type) when CHR_INT, CHR_INT1, CHR_INT2, CHR_INT4, CHR_INT8, INT_POS_FIXED, INT_NEG_FIXED decode_integer(buffer, type) when CHR_FLOAT32, CHR_FLOAT64 decode_float(buffer, type) when CHR_TRUE, CHR_FALSE decode_boolean(buffer, type) when CHR_NONE decode_nil(buffer, type) when CHR_LIST, LIST_FIXED decode_array(buffer, type) when CHR_DICT, DICT_FIXED decode_hash(buffer, type) when CHR_TERM :rencode_term else raise "Unknown type '#{type.inspect}'" end end |