Class: TinyDyno::Adapter::AttributeValue::Unmarshaler

Inherits:
Object
  • Object
show all
Defined in:
lib/tiny_dyno/adapter/attributes.rb

Overview

AttributeValue

Instance Method Summary collapse

Instance Method Details

#format(obj) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/tiny_dyno/adapter/attributes.rb', line 105

def format(obj)
  type, value = extract_type_and_value(obj)
  case type
    when :m
      value.each.with_object({}) do |(k, v), map|
        map[k] = format(v)
      end
    when :l then value.map { |v| format(v) }
    when :s then value
    when :n
      if value.nil?
        nil
      else
        BigDecimal.new(value)
      end
    when :b then StringIO.new(value)
    when :null then nil
    when :bool then value
    when :ss then Set.new(value)
    when :ns then Set.new(value.map { |n| BigDecimal.new(n) })
    when :bs then Set.new(value.map { |b| StringIO.new(b) })
    else
      raise ArgumentError, "unhandled type #{type.inspect}"
  end
end