Class: PigeonHole::TypedJSON

Inherits:
Object
  • Object
show all
Defined in:
lib/pigeon_hole/typed_json.rb

Defined Under Namespace

Classes: DuplicatedKey, UnsupportedType

Constant Summary collapse

BASIC_TYPES =
[
  NilClass,
  String,
  Integer,
  Float,
  TrueClass,
  FalseClass,
].uniq.freeze
DESERIALIZERS =
{
  JSONDate::TYPE_VALUE => JSONDate,
  JSONSymbol::TYPE_VALUE => JSONSymbol,
  JSONTime::TYPE_VALUE => JSONTime,
}.freeze
SERIALIZERS =
{
  Date => JSONDate,
  Symbol => JSONSymbol,
  Time => JSONTime,
}.freeze
TYPE_KEY =
'*'.freeze

Class Method Summary collapse

Class Method Details

.generate(obj, *args) ⇒ Object



63
64
65
66
# File 'lib/pigeon_hole/typed_json.rb', line 63

def self.generate(obj, *args)
  hash_dup = serialize_value(obj)
  JSON.generate(hash_dup, *args)
end

.parse(value) ⇒ Object



68
69
70
71
# File 'lib/pigeon_hole/typed_json.rb', line 68

def self.parse(value)
  hash = JSON.parse(value)
  translate(hash)
end

.translate(hash) ⇒ Object



73
74
75
# File 'lib/pigeon_hole/typed_json.rb', line 73

def self.translate(hash)
  deserialize_value(hash)
end