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