class Paquito::Types::CustomTypesRegistry
Public Class Methods
packer(value)
click to toggle source
# File lib/paquito/types.rb, line 21 def packer(value) packers.fetch(klass = value.class) do if packable?(value) && unpackable?(klass) @packers[klass] = SERIALIZE_PROC end end end
register(klass, packer: nil, unpacker:)
click to toggle source
# File lib/paquito/types.rb, line 37 def register(klass, packer: nil, unpacker:) if packer raise ArgumentError, "packer for #{klass} already defined" if packers.key?(klass) packers[klass] = packer end raise ArgumentError, "unpacker for #{klass} already defined" if unpackers.key?(klass) unpackers[klass] = unpacker self end
unpacker(klass)
click to toggle source
# File lib/paquito/types.rb, line 29 def unpacker(klass) unpackers.fetch(klass) do if unpackable?(klass) @unpackers[klass] = klass.method(DESERIALIZE_METHOD).to_proc end end end
Private Class Methods
packable?(value)
click to toggle source
# File lib/paquito/types.rb, line 53 def packable?(value) value.class.method_defined?(SERIALIZE_METHOD) || raise(PackError.new("#{value.class} is not serializable", value)) end
packers()
click to toggle source
# File lib/paquito/types.rb, line 63 def packers @packers ||= {} end
unpackable?(klass)
click to toggle source
# File lib/paquito/types.rb, line 58 def unpackable?(klass) klass.respond_to?(DESERIALIZE_METHOD) || raise(UnpackError, "#{klass} is not deserializable") end
unpackers()
click to toggle source
# File lib/paquito/types.rb, line 67 def unpackers @unpackers ||= {} end