class TwitterCldr::Resources::Bcp47TimezoneMetadataImporter

Private Instance Methods

doc() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 53
def doc
  @doc ||= Nokogiri::XML(File.read(input_file))
end
execute() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 20
def execute
  File.open(output_file, 'w:utf-8') do |output|
    output.write(
      TwitterCldr::Utils::YAML.dump(
        TwitterCldr::Utils.deep_symbolize_keys(metadata),
        use_natural_symbols: true
      )
    )
  end
end
input_file() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 57
def input_file
  @input_file ||= File.join(
    requirements[:cldr].common_path, 'bcp47', 'timezone.xml'
  )
end
metadata() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 31
def metadata
  { aliases: {}, short_names: {} }.tap do |result|
    doc.xpath("//ldmlBCP47/keyword/key[@name='tz']/type").each do |node|
      alias_node = node.attribute('alias')
      next unless alias_node

      alias_list = alias_node.value.split(' ')
      name = node.attribute('name').value

      alias_list.each do |a|
        result[:short_names][a] = name
      end

      next if alias_list.size <= 1

      alias_list[1..-1].each do |a|
        result[:aliases][a] = alias_list[0]
      end
    end
  end
end
output_file() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 63
def output_file
  @output_file ||= File.join(output_path, 'bcp47_timezone_metadata.yml')
end
output_path() click to toggle source
# File lib/twitter_cldr/resources/bcp47_timezone_metadata_importer.rb, line 67
def output_path
  params.fetch(:output_path)
end