class IknowParams::Serializer
Attributes
clazz[R]
Public Class Methods
for(name)
click to toggle source
# File lib/iknow_params/serializer.rb, line 56 def for(name) @registry[name.to_s] end
for!(name)
click to toggle source
# File lib/iknow_params/serializer.rb, line 60 def for!(name) s = self.for(name) raise ArgumentError.new("No serializer registered with name: '#{name}'") if s.nil? s end
json_value?()
click to toggle source
# File lib/iknow_params/serializer.rb, line 52 def json_value? false end
new(clazz)
click to toggle source
# File lib/iknow_params/serializer.rb, line 16 def initialize(clazz) @clazz = clazz end
singleton()
click to toggle source
# File lib/iknow_params/serializer.rb, line 48 def singleton raise ArgumentError.new("Singleton instance not defined for abstract serializer '#{self.name}'") end
Protected Class Methods
register_serializer(name, serializer)
click to toggle source
# File lib/iknow_params/serializer.rb, line 68 def register_serializer(name, serializer) @registry[name] = serializer IknowParams::Parser.register_serializer(name, serializer) end
Private Class Methods
json_value!()
click to toggle source
# File lib/iknow_params/serializer.rb, line 81 def json_value! define_singleton_method(:json_value?) { true } end
set_singleton!()
click to toggle source
# File lib/iknow_params/serializer.rb, line 75 def set_singleton! instance = self.new define_singleton_method(:singleton) { instance } IknowParams::Serializer.register_serializer(self.name.demodulize, instance) end
Public Instance Methods
dump(val, json: false)
click to toggle source
# File lib/iknow_params/serializer.rb, line 20 def dump(val, json: false) matches_type!(val) if json && self.class.json_value? val else val.to_s end end
load(_val)
click to toggle source
# File lib/iknow_params/serializer.rb, line 29 def load(_val) raise StandardError.new('unimplemented') end
matches_type!(val, err: DumpError)
click to toggle source
# File lib/iknow_params/serializer.rb, line 37 def matches_type!(val, err: DumpError) unless matches_type?(val) raise err.new("Incorrect type for #{self.class.name}: #{val.inspect}:#{val.class.name}") end true end
matches_type?(val)
click to toggle source
# File lib/iknow_params/serializer.rb, line 33 def matches_type?(val) val.is_a?(clazz) end