Class: Wrest::Components::Mutators::Base
- Inherits:
-
Object
- Object
- Wrest::Components::Mutators::Base
- Defined in:
- lib/wrest/components/mutators/base.rb
Overview
This is a base implementation of a hash mutator that ensures that the mutate method will chain to the next mutator by using a template method.
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Object) next_mutator
readonly
Returns the value of attribute next_mutator.
Class Method Summary (collapse)
-
+ (Object) inherited(subklass)
Registers all subclasses of Mutators::Base in Mutators::REGISTRY making it easy to reference and chain them later.
Instance Method Summary (collapse)
-
- (Base) initialize(next_mutator = nil)
constructor
A new instance of Base.
-
- (Object) mutate(tuple)
This is a template method which operates on a tuple (well, pair) from a hash map and guarantees mutator chaining.
Constructor Details
- (Base) initialize(next_mutator = nil)
A new instance of Base
28 29 30 |
# File 'lib/wrest/components/mutators/base.rb', line 28 def initialize(next_mutator = nil) @next_mutator = next_mutator end |
Instance Attribute Details
- (Object) next_mutator (readonly)
Returns the value of attribute next_mutator
17 18 19 |
# File 'lib/wrest/components/mutators/base.rb', line 17 def next_mutator @next_mutator end |
Class Method Details
+ (Object) inherited(subklass)
Registers all subclasses of Mutators::Base in Mutators::REGISTRY making it easy to reference and chain them later.
See Mutators#chain for more information.
24 25 26 |
# File 'lib/wrest/components/mutators/base.rb', line 24 def self.inherited(subklass) Wrest::Components::Mutators::REGISTRY[subklass.name.demodulize.underscore.to_sym] = subklass unless subklass.name.blank? end |
Instance Method Details
- (Object) mutate(tuple)
This is a template method which operates on a tuple (well, pair) from a hash map and guarantees mutator chaining.
Iterating over any hash using each injects each key/value pair from the hash in the form of an array. This method expects of this form as an argument, i.e. an array with the structure [:key, :value]
The implementation of the mutation is achieved by overriding the do_mutate method in a subclass. Note that failing to do so will result in an exception at runtime.
45 46 47 48 |
# File 'lib/wrest/components/mutators/base.rb', line 45 def mutate(tuple) out_tuple = do_mutate(tuple) next_mutator ? next_mutator.mutate(out_tuple) : out_tuple end |