class OctocatalogDiff::CatalogDiff::Filter::SingleItemArray
Filter
out changes in parameters when one catalog has a parameter that's an object and the other catalog has that same parameter as an array containing the same object. For example, under this filter, the following is not a change:
catalog1: notify => "Service[foo]" catalog2: notify => ["Service[foo]"]
Public Instance Methods
filtered?(diff, _options = {})
click to toggle source
Public: Implement the filter for single-item arrays whose item exactly matches the item that's not in an array in the other catalog.
@param diff [OctocatalogDiff::API::V1::Diff] Difference @param _options [Hash] Additional options (there are none for this filter) @return [Boolean] true if this should be filtered out, false otherwise
# File lib/octocatalog-diff/catalog-diff/filter/single_item_array.rb, line 20 def filtered?(diff, _options = {}) # Skip additions or removals - focus only on changes return false unless diff.change? old_value = diff.old_value new_value = diff.new_value # Skip unless there is a single-item array under consideration return false unless (old_value.is_a?(Array) && old_value.size == 1) || (new_value.is_a?(Array) && new_value.size == 1) # Skip if both the old value and new value are arrays return false if old_value.is_a?(Array) && new_value.is_a?(Array) # Do comparison if old_value.is_a?(Array) old_value.first == new_value else new_value.first == old_value end end