class Protip::Transformers::DecoratingTransformer
A transformer which decorates all messages, passing in another transformer (generally a “parent” delegating transformer with this as its fallback) to the generated decorators. Allows cascading message decoration.
Public Class Methods
new(transformer)
click to toggle source
# File lib/protip/transformers/decorating_transformer.rb, line 12 def initialize(transformer) @transformer = transformer end
Public Instance Methods
to_message(object, field)
click to toggle source
# File lib/protip/transformers/decorating_transformer.rb, line 20 def to_message(object, field) if object.is_a?(Protip::Decorator) object.message elsif object.is_a?(Hash) decorator = Protip::Decorator.new(field.subtype.msgclass.new, @transformer) decorator.assign_attributes(object) decorator.message else raise ArgumentError.new("#to_message expected a Hash or an already decorated object, received #{object.class.name} for #{field.type} #{field.name}") end end
to_object(message, field)
click to toggle source
# File lib/protip/transformers/decorating_transformer.rb, line 16 def to_object(message, field) Protip::Decorator.new(message, @transformer) end