Class: ISO3166::Country
- Inherits:
-
Object
- Object
- ISO3166::Country
- Extended by:
- ConversionMethods, CountryClassMethods, CountryFinderMethods
- Includes:
- CountrySubdivisionMethods, Emoji, TimezoneExtensions
- Defined in:
- lib/countries/country.rb,
lib/countries/mongoid.rb
Overview
:reek:TooManyMethods
Direct Known Subclasses
Constant Summary
Constants included from CountryFinderMethods
ISO3166::CountryFinderMethods::FIND_BY_REGEX, ISO3166::CountryFinderMethods::SEARCH_TERM_FILTER_REGEX
Constants included from Emoji
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Class Method Summary collapse
-
.demongoize(alpha2) ⇒ Object
Get the object as it was stored with Mongoid, and instantiate an
ISO3166::Country. -
.evolve(country) ⇒ Object
Convert an
ISO3166::Countryto the data that is stored by Mongoid. -
.mongoize(country) ⇒ Object
Convert an
ISO3166::Countryto the data that is stored by Mongoid.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#==(other) ⇒ Object
:reek:FeatureEnvy :reek:ManualDispatch.
-
#[](key) ⇒ Object
Access country data by key, symbol or string.
-
#common_name ⇒ String
The “common name” of this Country in English.
- #eql?(other) ⇒ Boolean
-
#gdpr_compliant? ⇒ Boolean
trueif this country is a member of the European Economic Area or it is UK. - #hash ⇒ Object
-
#in_eea? ⇒ Boolean
trueif this country is a member of the European Economic Area. -
#in_esm? ⇒ Boolean
trueif this country is a member of the European Single Market. -
#in_eu? ⇒ Boolean
trueif this country is a member of the European Union. -
#in_eu_vat? ⇒ Boolean
trueif this country is a member of the EU VAT Area. -
#in_g20? ⇒ Boolean
trueif this country is a member of the G20. -
#in_g7? ⇒ Boolean
trueif this country is a member of the G7. -
#in_un? ⇒ Boolean
trueif this country is a member of the United Nations. -
#initialize(country_data) ⇒ Country
constructor
A new instance of Country.
-
#iso_short_name_lower_case ⇒ String
The ISO 3166-1 “Short name lower case” value for this Country.
-
#local_name ⇒ String
The name for this Country, in this Country’s locale.
-
#local_names ⇒ Array<String>
The list of names for this Country, in this Country’s locales.
- #mongoize ⇒ Object
-
#postal_code_format ⇒ String
The regex for valid postal codes in this Country.
- #to_s ⇒ Object
-
#translated_names ⇒ Array<String>
The list of names for this Country in all loaded locales.
-
#translation(locale = :en) ⇒ String
:reek:FeatureEnvy.
-
#valid? ⇒ Boolean
:reek:NilCheck.
- #zip_format ⇒ Object
Methods included from CountryClassMethods
all, all_names_with_codes, all_translated, codes, collect_countries_with, collect_likely_countries_by_subdivision_name, new, pluck, translations
Methods included from ConversionMethods
from_alpha2_to_alpha3, from_alpha3_to_alpha2
Methods included from CountryFinderMethods
find_all_by, method_missing, respond_to_missing?, search
Methods included from TimezoneExtensions
Methods included from CountrySubdivisionMethods
#find_subdivision_by_name, #humanized_subdivision_types, #subdivision_for_string?, #subdivision_names, #subdivision_names_with_codes, #subdivision_types, #subdivisions, #subdivisions?, #subdivisions_of_types
Methods included from Emoji
Constructor Details
#initialize(country_data) ⇒ Country
Returns a new instance of Country.
25 26 27 28 |
# File 'lib/countries/country.rb', line 25 def initialize(country_data) @country_data_or_code = country_data reload end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
11 12 13 |
# File 'lib/countries/country.rb', line 11 def data @data end |
Class Method Details
.demongoize(alpha2) ⇒ Object
Get the object as it was stored with Mongoid, and instantiate an ISO3166::Country.
21 22 23 |
# File 'lib/countries/mongoid.rb', line 21 def demongoize(alpha2) new(alpha2) end |
.evolve(country) ⇒ Object
Convert an ISO3166::Country to the data that is stored by Mongoid.
26 27 28 |
# File 'lib/countries/mongoid.rb', line 26 def evolve(country) mongoize(country) end |
.mongoize(country) ⇒ Object
Convert an ISO3166::Country to the data that is stored by Mongoid. :reek:NilCheck
12 13 14 15 16 17 18 |
# File 'lib/countries/mongoid.rb', line 12 def mongoize(country) if country.is_a?(self) && !country.data.nil? country.alpha2 elsif send(:valid_alpha2?, country) new(country).alpha2 end end |
Instance Method Details
#<=>(other) ⇒ Object
55 56 57 |
# File 'lib/countries/country.rb', line 55 def <=>(other) to_s <=> other.to_s end |
#==(other) ⇒ Object
:reek:FeatureEnvy :reek:ManualDispatch
43 44 45 |
# File 'lib/countries/country.rb', line 43 def ==(other) other.respond_to?(:alpha2) && other.alpha2 == alpha2 end |
#[](key) ⇒ Object
Access country data by key, symbol or string. :reek:ManualDispatch
61 62 63 64 |
# File 'lib/countries/country.rb', line 61 def [](key) key = key.to_s if key.is_a?(Symbol) data[key] || send(key) end |
#common_name ⇒ String
Returns the “common name” of this Country in English.
143 144 145 146 |
# File 'lib/countries/country.rb', line 143 def common_name ISO3166.configuration.locales = ISO3166.configuration.locales.append(:en).uniq translation('en') end |
#eql?(other) ⇒ Boolean
47 48 49 |
# File 'lib/countries/country.rb', line 47 def eql?(other) self == other end |
#gdpr_compliant? ⇒ Boolean
true if this country is a member of the European Economic Area or it is UK
85 86 87 |
# File 'lib/countries/country.rb', line 85 def gdpr_compliant? data['eea_member'] || alpha2 == 'GB' end |
#hash ⇒ Object
51 52 53 |
# File 'lib/countries/country.rb', line 51 def hash [alpha2, alpha3].hash end |
#in_eea? ⇒ Boolean
true if this country is a member of the European Economic Area. :reek:NilCheck :reek:DuplicateMethodCall
91 92 93 |
# File 'lib/countries/country.rb', line 91 def in_eea? data['eea_member'].nil? ? false : data['eea_member'] end |
#in_esm? ⇒ Boolean
true if this country is a member of the European Single Market. :reek:NilCheck :reek:DuplicateMethodCall
97 98 99 |
# File 'lib/countries/country.rb', line 97 def in_esm? data['esm_member'].nil? ? in_eea? : data['esm_member'] end |
#in_eu? ⇒ Boolean
true if this country is a member of the European Union. :reek:NilCheck :reek:DuplicateMethodCall
68 69 70 |
# File 'lib/countries/country.rb', line 68 def in_eu? data['eu_member'].nil? ? false : data['eu_member'] end |
#in_eu_vat? ⇒ Boolean
true if this country is a member of the EU VAT Area. :reek:NilCheck :reek:DuplicateMethodCall
103 104 105 |
# File 'lib/countries/country.rb', line 103 def in_eu_vat? data['euvat_member'].nil? ? in_eu? : data['euvat_member'] end |
#in_g20? ⇒ Boolean
true if this country is a member of the G20. :reek:NilCheck :reek:DuplicateMethodCall
80 81 82 |
# File 'lib/countries/country.rb', line 80 def in_g20? data['g20_member'].nil? ? false : data['g20_member'] end |
#in_g7? ⇒ Boolean
true if this country is a member of the G7. :reek:NilCheck :reek:DuplicateMethodCall
74 75 76 |
# File 'lib/countries/country.rb', line 74 def in_g7? data['g7_member'].nil? ? false : data['g7_member'] end |
#in_un? ⇒ Boolean
true if this country is a member of the United Nations. :reek:NilCheck :reek:DuplicateMethodCall
109 110 111 |
# File 'lib/countries/country.rb', line 109 def in_un? data['un_member'].nil? ? false : data['un_member'] end |
#iso_short_name_lower_case ⇒ String
Returns The ISO 3166-1 “Short name lower case” value for this Country.
114 115 116 |
# File 'lib/countries/country.rb', line 114 def iso_short_name_lower_case data['iso_short_name_lower_case'].nil? ? data['iso_short_name'] : data['iso_short_name_lower_case'] end |
#local_name ⇒ String
Returns The name for this Country, in this Country’s locale.
157 158 159 |
# File 'lib/countries/country.rb', line 157 def local_name @local_name ||= local_names.first end |
#local_names ⇒ Array<String>
Returns The list of names for this Country, in this Country’s locales.
149 150 151 152 153 154 |
# File 'lib/countries/country.rb', line 149 def local_names ISO3166.configuration.locales = (ISO3166.configuration.locales + languages.map(&:to_sym)).uniq reload @local_names ||= languages.map { |language| translations[language] } end |
#mongoize ⇒ Object
5 6 7 |
# File 'lib/countries/mongoid.rb', line 5 def mongoize ISO3166::Country.mongoize(self) end |
#postal_code_format ⇒ String
Returns The regex for valid postal codes in this Country.
119 120 121 |
# File 'lib/countries/country.rb', line 119 def postal_code_format "\\A#{data['postal_code_format']}\\Z" if postal_code end |
#to_s ⇒ Object
123 124 125 |
# File 'lib/countries/country.rb', line 123 def to_s data['iso_short_name'] end |
#translated_names ⇒ Array<String>
Returns the list of names for this Country in all loaded locales.
128 129 130 |
# File 'lib/countries/country.rb', line 128 def translated_names data['translations'].values.compact end |
#translation(locale = :en) ⇒ String
:reek:FeatureEnvy
135 136 137 138 139 140 |
# File 'lib/countries/country.rb', line 135 def translation(locale = :en) locale = locale.to_sym if locale.is_a?(String) locale = locale.downcase if locale.match?(/[A-Z]/) data['translations'][locale] end |
#valid? ⇒ Boolean
:reek:NilCheck
31 32 33 |
# File 'lib/countries/country.rb', line 31 def valid? !(data.nil? || data.empty?) end |
#zip_format ⇒ Object
38 |
# File 'lib/countries/country.rb', line 38 alias zip_format postal_code_format |