class Protip::Transformers::DelegatingTransformer

A transformer which forwards to other transformers based on the message type being converted.

Public Class Methods

new(fallback_transformer = AbstractTransformer.new, transformers = {}) click to toggle source

@param [Protip::Transformer] fallback_transformer The transformer to use

for messages that don't have a registered transformer already.

@param [Hash<String, Protip::Transformer>] transformers A message_name => transformer

hash specifying which transformers to use for which message types.
# File lib/protip/transformers/delegating_transformer.rb, line 17
def initialize(fallback_transformer = AbstractTransformer.new, transformers = {})
  @fallback_transformer = fallback_transformer
  @transformers = transformers.dup
end

Public Instance Methods

merge!(delegating_transformer) click to toggle source
# File lib/protip/transformers/delegating_transformer.rb, line 24
def merge!(delegating_transformer)
  delegating_transformer.keys.each do |key|
    self[key] = delegating_transformer[key]
  end
end
to_message(object, field) click to toggle source
# File lib/protip/transformers/delegating_transformer.rb, line 34
def to_message(object, field)
  transformer_for(field.submsg_name).to_message(object, field)
end
to_object(message, field) click to toggle source
# File lib/protip/transformers/delegating_transformer.rb, line 30
def to_object(message, field)
  transformer_for(field.submsg_name).to_object(message, field)
end

Private Instance Methods

transformer_for(message_name) click to toggle source
# File lib/protip/transformers/delegating_transformer.rb, line 40
def transformer_for(message_name)
  @transformers[message_name] || @fallback_transformer
end