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