class Rosetta::Translation
Attributes
deserializer[R]
serializer[R]
translator[R]
translator?[R]
Public Class Methods
new(deserializer, serializer)
click to toggle source
# File lib/rosetta/translation.rb, line 20 def initialize(deserializer, serializer) @translator = Translation[deserializer => serializer] unless @translator @serializer = find_serializer(serializer) @deserializer = find_deserializer(deserializer) end end
register(source, destination, object=nil, &block)
click to toggle source
# File lib/rosetta/translation.rb, line 12 def register(source, destination, object=nil, &block) register_key({ source => destination }, object, &block) end
Also aliased as: register_key
Public Instance Methods
call(input)
click to toggle source
# File lib/rosetta/translation.rb, line 28 def call(input) if translator? translator.call(input) else elements = deserializer.call(input) serializer.call(elements) end rescue ConversionError => e raise e # No double-wrapping conversion errors rescue StandardError raise TranslationError end
to_proc()
click to toggle source
# File lib/rosetta/translation.rb, line 41 def to_proc proc { |*args, &block| self.call(*args, &block) } end
Private Instance Methods
find_deserializer(name_or_object)
click to toggle source
# File lib/rosetta/translation.rb, line 54 def find_deserializer(name_or_object) is_name = name_or_object.is_a?(String) || name_or_object.is_a?(Symbol) object = name_or_object unless is_name Deserializers[name_or_object] || object || raise(UnknownSerializer, "Unknown serializer for: #{name_or_object.inspect}") end
find_serializer(name_or_object)
click to toggle source
# File lib/rosetta/translation.rb, line 47 def find_serializer(name_or_object) is_name = name_or_object.is_a?(String) || name_or_object.is_a?(Symbol) object = name_or_object unless is_name Serializers[name_or_object] || object || raise(UnknownSerializer, "Unknown serializer for: #{name_or_object.inspect}") end