Module: Jsoner
- Defined in:
- lib/emery/jsoner.rb
Constant Summary collapse
- @@codecs =
[ Codecs::FloatCodec, Codecs::DateCodec, Codecs::DateTimeCodec, Codecs::StringFormattedCodec, Codecs::UnionCodec, Codecs::NilableCodec, Codecs::ArrayCodec, Codecs::HashCodec, Codecs::UnknownCodec, Codecs::EnumCodec, Codecs::DataClassCodec, Codecs::TaggedUnionCodec, Codecs::BuiltinTypeCodec, ]
Class Method Summary collapse
- .deserialize(type, json_value) ⇒ Object
- .find_codec(type) ⇒ Object
- .from_json(type, json) ⇒ Object
- .insert_codec(codec) ⇒ Object
- .serialize(type, value) ⇒ Object
- .to_json(type, value) ⇒ Object
Class Method Details
.deserialize(type, json_value) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/emery/jsoner.rb', line 41 def Jsoner.deserialize(type, json_value) begin codec = Jsoner.find_codec(type) if codec == nil raise JsonerError.new("Type #{type} is not supported in Jsoner deserialization") end return codec.deserialize(type, json_value) rescue StandardError => error raise JsonerError.new(error.) end end |
.find_codec(type) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/emery/jsoner.rb', line 27 def Jsoner.find_codec(type) @@codecs.each do |serializer| if serializer.applicable?(type) return serializer end end return nil end |
.from_json(type, json) ⇒ Object
36 37 38 39 |
# File 'lib/emery/jsoner.rb', line 36 def Jsoner.from_json(type, json) data = JSON.parse(json) return deserialize(type, data) end |
.insert_codec(codec) ⇒ Object
23 24 25 |
# File 'lib/emery/jsoner.rb', line 23 def self.insert_codec(codec) @@codecs.insert(0, codec) end |
.serialize(type, value) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/emery/jsoner.rb', line 57 def Jsoner.serialize(type, value) begin codec = Jsoner.find_codec(type) if codec == nil raise JsonerError.new("Type #{type} is not supported in Jsoner serialization") end return codec.serialize(type, value) rescue StandardError => error raise JsonerError.new(error.) end end |
.to_json(type, value) ⇒ Object
53 54 55 |
# File 'lib/emery/jsoner.rb', line 53 def Jsoner.to_json(type, value) JSON.dump(serialize(type, value)) end |