class PageMagic::Comparator::ParameterMap
class Map - used to model parameter matching requirements
Public Class Methods
new(map)
click to toggle source
Calls superclass method
PageMagic::Comparator::new
# File lib/page_magic/comparator/parameter_map.rb, line 7 def initialize(map) comparator = normalise(map).keys.each_with_object({}) do |key, params| params[key] = Comparator.for(map[key]) end fuzzy = comparator.values.any?(&:fuzzy?) super(comparator, fuzzy) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/page_magic/comparator/parameter_map.rb, line 16 def <=>(other) return 0 if empty? && other.empty? return 1 if other.empty? if (comparator.keys.size <=> other.comparator.keys.size).zero? return literal_matchers.size <=> other.literal_matchers.size end 0 end
empty?()
click to toggle source
# File lib/page_magic/comparator/parameter_map.rb, line 26 def empty? comparator.empty? end
literal_matchers()
click to toggle source
# File lib/page_magic/comparator/parameter_map.rb, line 30 def literal_matchers comparator.values.find_all { |matcher| !matcher.fuzzy? } end
match?(params)
click to toggle source
# File lib/page_magic/comparator/parameter_map.rb, line 34 def match?(params) params_copy = normalise(params) comparator.each do |key, value| param = params_copy[key] return false unless value&.match?(param) end true end
Private Instance Methods
normalise(hash)
click to toggle source
# File lib/page_magic/comparator/parameter_map.rb, line 45 def normalise(hash) hash.keys.each_with_object({}) do |key, map| map[key.to_sym] = hash[key] end end