class CBOR::Transform

Public Instance Methods

transform(obj) click to toggle source
# File lib/cbor-transform.rb, line 3
def transform(obj)
  case obj
  when NilClass
    transform_nil(obj)
  when FalseClass, TrueClass
    transform_bool(obj)
  when CBOR::Simple
    transform_simple(obj)
  when Float
    transform_float(obj)
  when Integer
    transform_integer(obj)
  # XXX should probably handle Symbol
  when String
    case obj.encoding
    when Encoding::BINARY
      transform_bytes(obj)
    else
      transform_text(obj)
    end
  when Array
    transform_array(obj)
  when Hash
    transform_hash(obj)
  when CBOR::Tagged
    transform_tag(obj)
  end
end
transform_array(obj) click to toggle source
# File lib/cbor-transform.rb, line 60
def transform_array(obj)
  obj.map {|x| transform(x)}
end
transform_bool(obj) click to toggle source
# File lib/cbor-transform.rb, line 36
def transform_bool(obj)
  obj
end
transform_bytes(obj) click to toggle source
# File lib/cbor-transform.rb, line 52
def transform_bytes(obj)
  obj
end
transform_float(obj) click to toggle source
# File lib/cbor-transform.rb, line 44
def transform_float(obj)
  obj
end
transform_hash(obj) click to toggle source
# File lib/cbor-transform.rb, line 64
def transform_hash(obj)
  Hash[obj.map {|k, v| [transform(k), transform(v)]}]
end
transform_integer(obj) click to toggle source
# File lib/cbor-transform.rb, line 48
def transform_integer(obj)
  obj
end
transform_nil(obj) click to toggle source
# File lib/cbor-transform.rb, line 32
def transform_nil(obj)
  obj
end
transform_simple(obj) click to toggle source
# File lib/cbor-transform.rb, line 40
def transform_simple(obj)
  obj
end
transform_tag(obj) click to toggle source
# File lib/cbor-transform.rb, line 68
def transform_tag(obj)
  CBOR::Tagged.new(transform(obj.tag), transform(obj.value))
end
transform_text(obj) click to toggle source
# File lib/cbor-transform.rb, line 56
def transform_text(obj)
  obj
end