Module: SurrealDB::CBOR::Decoder

Defined in:
lib/surrealdb/cbor/decoder.rb

Class Method Summary collapse

Class Method Details

.decode(data) ⇒ Object

Decodes CBOR bytes to Ruby objects, converting SurrealDB custom tags to the appropriate Ruby types.

Parameters:

  • data (String)

    CBOR-encoded binary string

Returns:

  • (Object)

    decoded Ruby object



16
17
18
19
# File 'lib/surrealdb/cbor/decoder.rb', line 16

def decode(data)
  raw = ::CBOR.decode(data)
  resolve(raw)
end

.resolve(obj) ⇒ Object

Recursively resolves CBOR::Tagged values to SurrealDB types.

Parameters:

  • obj (Object)

Returns:

  • (Object)


24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/surrealdb/cbor/decoder.rb', line 24

def resolve(obj)
  case obj
  when ::CBOR::Tagged
    resolve_tag(obj.tag, obj.value)
  when Hash
    obj.transform_values { |v| resolve(v) }
  when Array
    obj.map { |v| resolve(v) }
  else
    obj
  end
end