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 =
self.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, strategy, strategy_keys
Constructor Details
This class inherits a constructor from Puppet::Pops::MergeStrategy
Class Method Details
.key ⇒ Object
276 277 278 |
# File 'lib/puppet/pops/merge_strategy.rb', line 276 def self.key :unique end |
Instance Method Details
#checked_merge(e1, e2) ⇒ Array<Object>
Returns The unique set of elements.
284 285 286 |
# File 'lib/puppet/pops/merge_strategy.rb', line 284 def checked_merge(e1, e2) convert_value(e1) | convert_value(e2) end |
#convert_value(e) ⇒ Object
288 289 290 |
# File 'lib/puppet/pops/merge_strategy.rb', line 288 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.
296 297 298 |
# File 'lib/puppet/pops/merge_strategy.rb', line 296 def merge_single(value) value.is_a?(Array) ? value.uniq : value end |