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
279 280 281 |
# File 'lib/puppet/pops/merge_strategy.rb', line 279 def self.key :unique end |
Instance Method Details
#checked_merge(e1, e2) ⇒ Array<Object>
Returns The unique set of elements.
287 288 289 |
# File 'lib/puppet/pops/merge_strategy.rb', line 287 def checked_merge(e1, e2) convert_value(e1) | convert_value(e2) end |
#convert_value(e) ⇒ Object
291 292 293 |
# File 'lib/puppet/pops/merge_strategy.rb', line 291 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.
299 300 301 |
# File 'lib/puppet/pops/merge_strategy.rb', line 299 def merge_single(value) value.is_a?(Array) ? value.uniq : value end |