class Holidays::Definition::Generator::Regions

def call(regions)

def call(regions)
  validate!(regions)
  <<-EOF
ng: utf-8
olidays
S = #{to_array(regions)}
_REGION_LOOKUP = #{generate_parent_lookup(regions)}
end

def generate_parent_lookup(regions)

def generate_parent_lookup(regions)
  lookup = {}
  regions.each do |region, subregions|
    subregions.each do |subregion|
      parent_region = NORTH_AMERICA_REGIONS.include?(subregion) ? subregion : region
      lookup[subregion] = parent_region unless lookup.has_key?(subregion)
    end
  end
  pairs = lookup.map { |k, v| "#{k}: :#{v}" }.join(", ")
  "{#{pairs}}"
end

def to_array(regions)

def to_array(regions)
  all_regions = []
  regions.each do |region, subregions|
    all_regions << subregions
  end
  all_regions.flatten.uniq
end

def validate!(regions)

def validate!(regions)
  raise ArgumentError.new("regions cannot be missing") if regions.nil?
  raise ArgumentError.new("regions must be a hash") unless regions.is_a?(Hash)
  raise ArgumentError.new("regions cannot be empty") if regions.empty?
end