lib/countries/sources/cldr/subdivision_updater.rb in countries-4.2.3 vs lib/countries/sources/cldr/subdivision_updater.rb in countries-5.0.0
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
require 'active_support'
require 'active_support/core_ext/hash/deep_merge'
require 'nokogiri'
require 'pry'
@@ -7,28 +9,32 @@
module CLDR
# Updates local subdivision files with data from the Unicode CLDR repository
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
+ @loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
+ d.each { |file_path| update_locale(file_path) }
+ end
- 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
+ def update_locale(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