Class: Puppet::Pops::UniqueMergeStrategy
- Inherits:
-
MergeStrategy
- Object
- MergeStrategy
- Puppet::Pops::UniqueMergeStrategy
- Defined in:
- lib/puppet/pops/merge_strategy.rb
Overview
Merges two values that must be either scalar or arrays into a unique set of values.
Scalar values will be converted into a one element arrays and array values will be flattened prior to forming the unique set. The order of the elements is preserved with e1 being the first contributor of elements and e2 the second.
Constant Summary collapse
- INSTANCE =
new(EMPTY_HASH)
Constants inherited from MergeStrategy
Class Method Summary collapse
Instance Method Summary collapse
-
#checked_merge(e1, e2) ⇒ Array<Object>
The unique set of elements.
- #convert_value(e) ⇒ Object
-
#merge_single(value) ⇒ Object
If value is an array, then return the result of calling ‘uniq` on that array.
Methods inherited from MergeStrategy
add_strategy, #configuration, #initialize, #lookup, merge, #merge, #merge_lookup, #options, options_t, strategy, strategy_keys
Constructor Details
This class inherits a constructor from Puppet::Pops::MergeStrategy
Class Method Details
.key ⇒ Object
286 287 288 |
# File 'lib/puppet/pops/merge_strategy.rb', line 286 def self.key :unique end |
Instance Method Details
#checked_merge(e1, e2) ⇒ Array<Object>
Returns The unique set of elements.
294 295 296 |
# File 'lib/puppet/pops/merge_strategy.rb', line 294 def checked_merge(e1, e2) convert_value(e1) | convert_value(e2) end |
#convert_value(e) ⇒ Object
298 299 300 |
# File 'lib/puppet/pops/merge_strategy.rb', line 298 def convert_value(e) e.is_a?(Array) ? e.flatten : [e] end |
#merge_single(value) ⇒ Object
If value is an array, then return the result of calling ‘uniq` on that array. Otherwise, the argument is returned.
306 307 308 |
# File 'lib/puppet/pops/merge_strategy.rb', line 306 def merge_single(value) value.is_a?(Array) ? value.uniq : value end |