class Holidays::Finder::Rules::InRegion

Public Class Methods

call(requested, available) click to toggle source
# File lib/holidays/finder/rules/in_region.rb, line 6
def call(requested, available)
  return true if requested.include?(:any)

  # When an underscore is encountered, derive the parent regions
  # symbol and check for both.
  requested = requested.collect do |r|
    if r.to_s =~ /_/
      chunks = r.to_s.split('_')

      chunks.length.downto(1).map do |num|
        chunks[0..-num].join('_').to_sym
      end
    else
      r
    end
  end

  requested = requested.flatten.uniq

  available.any? { |avail| requested.include?(avail) }
end