Sha256: 6b0b1bef8454e9cb8e97fda3a366a74e8d5b6fdbe96e2e08ebe9fbc4be43a8dc

Contents?: true

Size: 1.34 KB

Versions: 12

Compression:

Stored size: 1.34 KB

Contents

require 'active_support'
require 'active_support/core_ext/hash/deep_merge'
require 'nokogiri'
require 'pry'

module Sources
  module CLDR
    class SubdivisionUpdater
      def call
        d = Dir['./tmp/cldr/trunk/common/subdivisions/*.xml']
        loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
        d.each do |file_path|
          language_data = Nokogiri::XML(File.read(file_path))
          language_code = File.basename(file_path, '.*')
          subdivisions = language_data.css('subdivision')
          next if subdivisions.empty?
          last_country_code_seen = nil

          subdivisions.each_with_index do |subdivision, index|
            subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
            data = loader.load(subdivision.country_code)
            data[subdivision.code] ||= {}
            data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
            if (last_country_code_seen && last_country_code_seen != subdivision.country_code) || index == subdivisions.size - 1
              puts "Updated #{subdivision.country_code} with language_code #{language_code}"
              loader.save(subdivision.country_code, data)
            end
            last_country_code_seen = subdivision.country_code
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
countries-4.2.0 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.1.3 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.1.2 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.1.1 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.1.0 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.0.1 lib/countries/sources/cldr/subdivision_updater.rb
countries-4.0.0 lib/countries/sources/cldr/subdivision_updater.rb
countries-3.1.0 lib/countries/sources/cldr/subdivision_updater.rb
countries-3.0.1 lib/countries/sources/cldr/subdivision_updater.rb
countries-3.0.0 lib/countries/sources/cldr/subdivision_updater.rb
countries-2.1.4 lib/countries/sources/cldr/subdivision_updater.rb
countries-2.1.3 lib/countries/sources/cldr/subdivision_updater.rb