countries 4.2.3 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/tests.yml +1 -5
- data/.rubocop.yml +40 -1
- data/.rubocop_todo.yml +8 -41
- data/CHANGELOG.md +7 -2
- data/Gemfile +5 -3
- data/README.markdown +22 -5
- data/Rakefile +13 -31
- data/bin/console +1 -0
- data/countries.gemspec +7 -5
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/configuration.rb +2 -0
- data/lib/countries/country/class_methods.rb +12 -97
- data/lib/countries/country/currency_methods.rb +2 -0
- data/lib/countries/country/emoji.rb +2 -3
- data/lib/countries/country/finder_methods.rb +81 -0
- data/lib/countries/country.rb +3 -40
- data/lib/countries/data/countries/KN.yaml +0 -1
- data/lib/countries/data.rb +34 -37
- data/lib/countries/global.rb +2 -0
- data/lib/countries/iso3166.rb +3 -0
- data/lib/countries/kwarg_struct.rb +2 -0
- data/lib/countries/mongoid.rb +2 -0
- data/lib/countries/sources/cldr/downloader.rb +8 -8
- data/lib/countries/sources/cldr/subdivision.rb +3 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +23 -17
- data/lib/countries/sources/local/cached_loader.rb +3 -0
- data/lib/countries/sources/local/subdivision.rb +5 -2
- data/lib/countries/sources.rb +2 -0
- data/lib/countries/structure.rb +1 -1
- data/lib/countries/subdivision.rb +2 -0
- data/lib/countries/tasks/geocoding.rake +15 -6
- data/lib/countries/tasks/postal_codes.rake +5 -3
- data/lib/countries/timezones.rb +5 -2
- data/lib/countries/translations.rb +2 -0
- data/lib/countries/version.rb +3 -1
- data/lib/countries.rb +2 -0
- data/spec/00_global_spec.rb +2 -0
- data/spec/configuration_spec.rb +11 -5
- data/spec/country_spec.rb +71 -22
- data/spec/data_spec.rb +24 -18
- data/spec/mongoid_spec.rb +2 -2
- data/spec/perf_spec.rb +16 -16
- data/spec/spec_helper.rb +2 -0
- data/spec/subdivision_spec.rb +6 -4
- data/spec/thread_safety_spec.rb +4 -3
- data/spec/timezone_spec.rb +2 -0
- metadata +14 -12
- data/lib/countries/setup.rb +0 -18
    
        data/spec/subdivision_spec.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            #  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            require 'spec_helper'
         | 
| 4 4 |  | 
| @@ -23,9 +23,11 @@ describe ISO3166::Subdivision do | |
| 23 23 | 
             
              describe 'state codes' do
         | 
| 24 24 | 
             
                it 'should all be strings' do
         | 
| 25 25 | 
             
                  countries.each do |country|
         | 
| 26 | 
            -
                    expect(country.subdivisions.keys).to | 
| 27 | 
            -
                       | 
| 28 | 
            -
                      " | 
| 26 | 
            +
                    expect(country.subdivisions.keys).to(
         | 
| 27 | 
            +
                      all(be_a(String)),
         | 
| 28 | 
            +
                      "Expected #{country.alpha2.inspect} to have string subdivision \
         | 
| 29 | 
            +
                       codes but had #{country.subdivisions.keys.inspect}"
         | 
| 30 | 
            +
                    )
         | 
| 29 31 | 
             
                  end
         | 
| 30 32 | 
             
                end
         | 
| 31 33 | 
             
              end
         | 
    
        data/spec/thread_safety_spec.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            describe 'Accessing ISO3166::Country instances data in multiple threads' do
         | 
| 2 4 | 
             
              before do
         | 
| 3 5 | 
             
                if Thread.respond_to?(:report_on_exception)
         | 
| @@ -12,7 +14,7 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do | |
| 12 14 | 
             
                nthreads = 100
         | 
| 13 15 | 
             
                threads = []
         | 
| 14 16 |  | 
| 15 | 
            -
                alpha2_codes = [ | 
| 17 | 
            +
                alpha2_codes = %w[us es nl ca de fr mx ru ch jp]
         | 
| 16 18 |  | 
| 17 19 | 
             
                nthreads.times do
         | 
| 18 20 | 
             
                  threads << Thread.new do
         | 
| @@ -31,7 +33,7 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do | |
| 31 33 | 
             
                expect { create_countries_threaded }.to_not raise_error
         | 
| 32 34 | 
             
              end
         | 
| 33 35 |  | 
| 34 | 
            -
              it  | 
| 36 | 
            +
              it 'raises NoMethodError when not using a mutex' do
         | 
| 35 37 | 
             
                allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
         | 
| 36 38 |  | 
| 37 39 | 
             
                expect { create_countries_threaded }.to raise_error(NoMethodError)
         | 
| @@ -43,4 +45,3 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do | |
| 43 45 | 
             
                end
         | 
| 44 46 | 
             
              end
         | 
| 45 47 | 
             
            end
         | 
| 46 | 
            -
             | 
    
        data/spec/timezone_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: countries
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 5.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Josh Robinson
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire:
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2022-03 | 
| 14 | 
            +
            date: 2022-04-03 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: i18n_data
         | 
| @@ -42,7 +42,7 @@ dependencies: | |
| 42 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 43 43 | 
             
                    version: '1.1'
         | 
| 44 44 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 45 | 
            -
              name:  | 
| 45 | 
            +
              name: activesupport
         | 
| 46 46 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 47 47 | 
             
                requirements:
         | 
| 48 48 | 
             
                - - ">="
         | 
| @@ -56,33 +56,33 @@ dependencies: | |
| 56 56 | 
             
                  - !ruby/object:Gem::Version
         | 
| 57 57 | 
             
                    version: '3'
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 | 
            -
              name:  | 
| 59 | 
            +
              name: nokogiri
         | 
| 60 60 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                requirements:
         | 
| 62 62 | 
             
                - - ">="
         | 
| 63 63 | 
             
                  - !ruby/object:Gem::Version
         | 
| 64 | 
            -
                    version: ' | 
| 64 | 
            +
                    version: '1.8'
         | 
| 65 65 | 
             
              type: :development
         | 
| 66 66 | 
             
              prerelease: false
         | 
| 67 67 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 68 68 | 
             
                requirements:
         | 
| 69 69 | 
             
                - - ">="
         | 
| 70 70 | 
             
                  - !ruby/object:Gem::Version
         | 
| 71 | 
            -
                    version: ' | 
| 71 | 
            +
                    version: '1.8'
         | 
| 72 72 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 73 | 
            -
              name:  | 
| 73 | 
            +
              name: rspec
         | 
| 74 74 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 75 75 | 
             
                requirements:
         | 
| 76 76 | 
             
                - - ">="
         | 
| 77 77 | 
             
                  - !ruby/object:Gem::Version
         | 
| 78 | 
            -
                    version: ' | 
| 78 | 
            +
                    version: '3'
         | 
| 79 79 | 
             
              type: :development
         | 
| 80 80 | 
             
              prerelease: false
         | 
| 81 81 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 82 82 | 
             
                requirements:
         | 
| 83 83 | 
             
                - - ">="
         | 
| 84 84 | 
             
                  - !ruby/object:Gem::Version
         | 
| 85 | 
            -
                    version: ' | 
| 85 | 
            +
                    version: '3'
         | 
| 86 86 | 
             
            description: All sorts of useful information about every country packaged as pretty
         | 
| 87 87 | 
             
              little country objects. It includes data from ISO 3166
         | 
| 88 88 | 
             
            email:
         | 
| @@ -93,6 +93,7 @@ executables: [] | |
| 93 93 | 
             
            extensions: []
         | 
| 94 94 | 
             
            extra_rdoc_files: []
         | 
| 95 95 | 
             
            files:
         | 
| 96 | 
            +
            - ".github/workflows/codeql-analysis.yml"
         | 
| 96 97 | 
             
            - ".github/workflows/tests.yml"
         | 
| 97 98 | 
             
            - ".gitignore"
         | 
| 98 99 | 
             
            - ".rspec"
         | 
| @@ -244,6 +245,7 @@ files: | |
| 244 245 | 
             
            - lib/countries/country/class_methods.rb
         | 
| 245 246 | 
             
            - lib/countries/country/currency_methods.rb
         | 
| 246 247 | 
             
            - lib/countries/country/emoji.rb
         | 
| 248 | 
            +
            - lib/countries/country/finder_methods.rb
         | 
| 247 249 | 
             
            - lib/countries/data.rb
         | 
| 248 250 | 
             
            - lib/countries/data/countries/AD.yaml
         | 
| 249 251 | 
             
            - lib/countries/data/countries/AE.yaml
         | 
| @@ -705,7 +707,6 @@ files: | |
| 705 707 | 
             
            - lib/countries/iso3166.rb
         | 
| 706 708 | 
             
            - lib/countries/kwarg_struct.rb
         | 
| 707 709 | 
             
            - lib/countries/mongoid.rb
         | 
| 708 | 
            -
            - lib/countries/setup.rb
         | 
| 709 710 | 
             
            - lib/countries/sources.rb
         | 
| 710 711 | 
             
            - lib/countries/sources/cldr/downloader.rb
         | 
| 711 712 | 
             
            - lib/countries/sources/cldr/subdivision.rb
         | 
| @@ -737,6 +738,7 @@ metadata: | |
| 737 738 | 
             
              changelog_uri: https://github.com/countries/countries/blob/master/CHANGELOG.md
         | 
| 738 739 | 
             
              source_code_uri: https://github.com/countries/countries
         | 
| 739 740 | 
             
              wiki_uri: https://github.com/countries/countries/wiki
         | 
| 741 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 740 742 | 
             
            post_install_message:
         | 
| 741 743 | 
             
            rdoc_options: []
         | 
| 742 744 | 
             
            require_paths:
         | 
| @@ -745,14 +747,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 745 747 | 
             
              requirements:
         | 
| 746 748 | 
             
              - - ">="
         | 
| 747 749 | 
             
                - !ruby/object:Gem::Version
         | 
| 748 | 
            -
                  version: '2. | 
| 750 | 
            +
                  version: '2.7'
         | 
| 749 751 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 750 752 | 
             
              requirements:
         | 
| 751 753 | 
             
              - - ">="
         | 
| 752 754 | 
             
                - !ruby/object:Gem::Version
         | 
| 753 755 | 
             
                  version: '0'
         | 
| 754 756 | 
             
            requirements: []
         | 
| 755 | 
            -
            rubygems_version: 3.3. | 
| 757 | 
            +
            rubygems_version: 3.3.7
         | 
| 756 758 | 
             
            signing_key:
         | 
| 757 759 | 
             
            specification_version: 4
         | 
| 758 760 | 
             
            summary: Gives you a country object full of all sorts of useful information.
         | 
    
        data/lib/countries/setup.rb
    DELETED
    
    | @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            module ISO3166
         | 
| 2 | 
            -
              ##
         | 
| 3 | 
            -
              # <b>DEPRECATED:</b> Please use <tt>Data</tt> instead.
         | 
| 4 | 
            -
              # TODO: Remove at version 2.1
         | 
| 5 | 
            -
              # Handles building the in memory store of countries data
         | 
| 6 | 
            -
              class Setup
         | 
| 7 | 
            -
                # <b>DEPRECATED:</b> Please use <tt>Data.codes</tt> instead.
         | 
| 8 | 
            -
                def codes
         | 
| 9 | 
            -
                  warn '[DEPRECATION] `Setup.codes` is deprecated.  Please use `Data.codes` instead.'
         | 
| 10 | 
            -
                  Data.codes
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def data
         | 
| 14 | 
            -
                  warn "[DEPRECATION] `Setup.new.data` is deprecated without replacement
         | 
| 15 | 
            -
                  data is now loaded per locale Data.new(:en).call"
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         |