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