class TZInfo::Format2::CountryIndexDefiner

:nodoc:
@private
to allow countries and their time zones to be specified.
version of ‘TZInfo::Data::Indexes::Countries` by {CountryIndexDefinition}
Instances of {Format2::CountryIndexDefiner} are yielded to the format 2

def country(code, name)

Other tags:
    Yieldparam: definer - a {CountryDefiner}

Other tags:
    Yield: - yields (optional) to obtain the time zones for the

Parameters:
  • name (String) -- Then name of the country.
  • code (String) -- The ISO 3166-1 alpha-2 code of the country.
def country(code, name)
  timezones = if block_given?
    definer = CountryDefiner.new(@shared_timezones, @identifier_deduper, @description_deduper)
    yield definer
    definer.timezones
  else
    []
  end
  @countries[code.freeze] = DataSources::CountryInfo.new(code, name, timezones)
end

def initialize(identifier_deduper, description_deduper)

Parameters:
  • description_deduper (StringDeduper) -- a {StringDeduper} instance to
  • identifier_deduper (StringDeduper) -- a {StringDeduper} instance to
def initialize(identifier_deduper, description_deduper)
  @identifier_deduper = identifier_deduper
  @description_deduper = description_deduper
  @shared_timezones = {}
  @countries = {}
end

def timezone(reference, identifier, latitude_numerator, latitude_denominator,

Parameters:
  • description (String) -- an optional description for the time zone.
  • longitude_denominator (Integer) -- the denominator of the longitude.
  • longitude_numerator (Integer) -- the numerator of the longitude.
  • latitude_denominator (Integer) -- the denominator of the latitude.
  • latitude_numerator (Integer) -- the numerator of the latitude.
  • identifier (String) -- the time zone identifier.
  • reference (Symbol) -- a unique reference for the time zone.
def timezone(reference, identifier, latitude_numerator, latitude_denominator,
              longitude_numerator, longitude_denominator, description = nil)
  # Dedupe non-frozen literals from format 1 on all Ruby versions and
  # format 2 on Ruby < 2.3 (without frozen_string_literal support).
  @shared_timezones[reference] = CountryTimezone.new(@identifier_deduper.dedupe(identifier),
    Rational(latitude_numerator, latitude_denominator),
    Rational(longitude_numerator, longitude_denominator), description && @description_deduper.dedupe(description))
end