Class: Salestation::Web::Extractors::InputRenamer
- Inherits:
-
Object
- Object
- Salestation::Web::Extractors::InputRenamer
- Defined in:
- lib/salestation/web/extractors.rb
Overview
Handles renaming input keys
When renaming we want to ensure that the new key provided for the rename does not already exist in the input. When it does and it has a not nil value, then rename will not happen, unless ‘override: true` is also applied. When the new key exists with nil value, rename will happen. By default override is set to false: when input already has value set for the new key, the old key will be discarded instead of overwriting the value. For deprecating (renaming for deprecation purposes), one should extract both new and old key from the input before calling the rename function, to get expected result, as only then the values can be compared in rename.
Instance Method Summary collapse
- #call(rack_request) ⇒ Object
-
#initialize(extractor, rules) ⇒ InputRenamer
constructor
A new instance of InputRenamer.
- #rename(input) ⇒ Object
Constructor Details
#initialize(extractor, rules) ⇒ InputRenamer
Returns a new instance of InputRenamer.
130 131 132 133 |
# File 'lib/salestation/web/extractors.rb', line 130 def initialize(extractor, rules) @extractor = extractor @rules = map_rules(rules) end |
Instance Method Details
#call(rack_request) ⇒ Object
135 136 137 138 139 |
# File 'lib/salestation/web/extractors.rb', line 135 def call(rack_request) @extractor .call(rack_request) .map(&method(:rename)) end |
#rename(input) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/salestation/web/extractors.rb', line 141 def rename(input) @rules.each do |old_key, rule| new_key = rule[:new_key] override = rule[:override] if input[new_key].nil? || override input[new_key] = input[old_key] end input.delete(old_key) end Deterministic::Result::Success(input) end |