module Jsoner

Public Class Methods

add_serializer(type, serializer) click to toggle source
# File lib/emery/jsoner.rb, line 172
def self.add_serializer(type, serializer)
  @@serializers[type] = serializer
end
deserialize(type, json_value) click to toggle source
# File lib/emery/jsoner.rb, line 181
def Jsoner.deserialize(type, json_value)
  begin
    if type.methods.include? :jsoner_deserialize
      return type.jsoner_deserialize(json_value)
    elsif @@serializers.include? type
      return @@serializers[type].jsoner_deserialize(json_value)
    else
      if ![String, Float, Integer, TrueClass, FalseClass, NilClass].include? type
        raise JsonerError.new("Type #{type} is not supported in Jsoner deserialization")
      end
      return T.check(type, json_value)
    end
  rescue StandardError => error
    raise JsonerError.new(error.message)
  end
end
from_json(type, json) click to toggle source
# File lib/emery/jsoner.rb, line 176
def Jsoner.from_json(type, json)
  data = JSON.parse(json)
  return deserialize(type, data)
end
serialize(type, value) click to toggle source
# File lib/emery/jsoner.rb, line 202
def Jsoner.serialize(type, value)
  begin
    if type.methods.include? :jsoner_serialize
      return type.jsoner_serialize(value)
    elsif @@serializers.include? type
      return @@serializers[type].jsoner_serialize(value)
    else
      if ![String, Float, Integer, TrueClass, FalseClass, NilClass].include? type
        raise JsonerError.new("Type #{type} is not supported in Jsoner serialization")
      end
      return T.check(type, value)
    end
  rescue StandardError => error
    raise JsonerError.new(error.message)
  end
end
to_json(type, value) click to toggle source
# File lib/emery/jsoner.rb, line 198
def Jsoner.to_json(type, value)
  JSON.dump(serialize(type, value))
end

Public Instance Methods

jsoner_deserialize(json_value) click to toggle source
# File lib/emery/jsoner.rb, line 9
def jsoner_deserialize(json_value)
  T.check(self, json_value)
end
jsoner_serialize(value) click to toggle source
# File lib/emery/jsoner.rb, line 12
def jsoner_serialize(value)
  T.check(self, value)
end