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