Module: Wrest::Components::Mutators

Defined in:
lib/wrest/components/mutators.rb,
lib/wrest/components/mutators/base.rb,
lib/wrest/components/mutators/xml_type_caster.rb,
lib/wrest/components/mutators/camel_to_snake_case.rb

Overview

Converts the key to snake case

Example:

Mutators::CamelToSnakeCase.new.mutate(['Spirit-Sword', 'true'])  # => ['spirit_sword', 'true']**

Defined Under Namespace

Classes: Base, CamelToSnakeCase, XmlTypeCaster

Class Method Summary collapse

Class Method Details

.chain(*mutator_keys) ⇒ Object

Makes referencing and chaining mutators easy.

Example:

Mutators.chain(:xml_type_caster, :camel_to_snake_case)

is equivalent to

Wrest::Components::Mutators::XmlTypeCaster.new(Wrest::Components::Mutators::CamelToSnakeCase.new)


30
31
32
33
34
35
# File 'lib/wrest/components/mutators.rb', line 30

def self.chain(*mutator_keys)
  mutator_key = mutator_keys.pop
  mutator_keys.reverse.inject(registry[mutator_key].new) do |next_instance, next_key|
    registry[next_key].new(next_instance)
  end
end

.registryObject

All sublasses of Mutators::Base are automatically registered here by underscored, symbolised class name.



20
21
22
# File 'lib/wrest/components/mutators.rb', line 20

def self.registry
  @registry ||= {}
end