class Porridge::SerializerDefiner
{SerializerDefiner} is a class that wraps a {Factory} and allows serializes to be easily defined with an elegant DSL.
Constants
- FACTORY_PREFIX
- FIELD_SERIALIZER_SUFFIX
- SERIALIZER_SUFFIX
Attributes
factory[R]
Public Class Methods
new(factory = Factory.new)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 16 def initialize(factory = Factory.new) @factory = factory @serializers = [] end
Public Instance Methods
added_serializers()
click to toggle source
# File lib/porridge/serializer_definer.rb, line 48 def added_serializers @serializers end
defined_serializer()
click to toggle source
# File lib/porridge/serializer_definer.rb, line 44 def defined_serializer factory.serializers(*added_serializers) end
method_missing(method_name, *args, &block)
click to toggle source
Calls superclass method
# File lib/porridge/serializer_definer.rb, line 21 def method_missing(method_name, *args, &block) method_name = method_name.to_s return factory.send(method_name.delete_prefix(FACTORY_PREFIX), *args, &block) if create_method? method_name if serializer_method? method_name return add_serializer(factory.send(method_name + SERIALIZER_SUFFIX, *args, &block)) end if field_serializer_method? method_name return add_serializer(factory.send(method_name + FIELD_SERIALIZER_SUFFIX, *args, &block)) end super(method_name.to_sym, *args, &block) end
respond_to_missing?(method_name, include_private = false)
click to toggle source
Calls superclass method
# File lib/porridge/serializer_definer.rb, line 36 def respond_to_missing?(method_name, include_private = false) method_name = method_name.to_s super(method_name.to_sym, include_private) || create_method?(method_name) || serializer_method?(method_name) || field_serializer_method?(method_name) end
serializer(...)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 52 def serializer(...) add_serializer(factory.serializer(...)) end
Private Instance Methods
add_serializer(serializer)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 70 def add_serializer(serializer) @serializers << serializer end
create_method?(method_name)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 58 def create_method?(method_name) method_name.start_with?(FACTORY_PREFIX) && factory.respond_to?(method_name.delete_prefix(FACTORY_PREFIX)) end
field_serializer_method?(method_name)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 66 def field_serializer_method?(method_name) factory.respond_to?(method_name + FIELD_SERIALIZER_SUFFIX) end
serializer_method?(method_name)
click to toggle source
# File lib/porridge/serializer_definer.rb, line 62 def serializer_method?(method_name) factory.respond_to?(method_name + SERIALIZER_SUFFIX) end