Class: ISO3166::Country

Inherits:
Object
  • Object
show all
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

Country

Constant Summary

Constants included from CountryFinderMethods

ISO3166::CountryFinderMethods::FIND_BY_REGEX, ISO3166::CountryFinderMethods::SEARCH_TERM_FILTER_REGEX

Constants included from Emoji

Emoji::CODE_POINTS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#timezones

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

#emoji_flag

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

#dataObject (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

#common_nameString

Returns the “common name” of this Country in English.

Returns:

  • (String)

    the “common name” of this Country in English.



131
132
133
134
# File 'lib/countries/country.rb', line 131

def common_name
  ISO3166.configuration.locales = ISO3166.configuration.locales.append(:en).uniq
  translation('en')
end

#eql?(other) ⇒ Boolean

Returns:

  • (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

Returns:

  • (Boolean)


78
79
80
# File 'lib/countries/country.rb', line 78

def gdpr_compliant?
  data['eea_member'] || alpha2 == 'GB'
end

#hashObject



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

Returns:

  • (Boolean)


84
85
86
# File 'lib/countries/country.rb', line 84

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

Returns:

  • (Boolean)


90
91
92
# File 'lib/countries/country.rb', line 90

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

Returns:

  • (Boolean)


61
62
63
# File 'lib/countries/country.rb', line 61

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

Returns:

  • (Boolean)


96
97
98
# File 'lib/countries/country.rb', line 96

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

Returns:

  • (Boolean)


73
74
75
# File 'lib/countries/country.rb', line 73

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

Returns:

  • (Boolean)


67
68
69
# File 'lib/countries/country.rb', line 67

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

Returns:

  • (Boolean)


102
103
104
# File 'lib/countries/country.rb', line 102

def in_un?
  data['un_member'].nil? ? false : data['un_member']
end

#local_nameString

Returns The name for this Country, in this Country’s locale.

Returns:

  • (String)

    The name for this Country, in this Country’s locale.



145
146
147
# File 'lib/countries/country.rb', line 145

def local_name
  @local_name ||= local_names.first
end

#local_namesArray<String>

Returns The list of names for this Country, in this Country’s locales.

Returns:

  • (Array<String>)

    The list of names for this Country, in this Country’s locales.



137
138
139
140
141
142
# File 'lib/countries/country.rb', line 137

def local_names
  ISO3166.configuration.locales = (ISO3166.configuration.locales + languages.map(&:to_sym)).uniq
  reload

  @local_names ||= languages.map { |language| translations[language] }
end

#mongoizeObject



5
6
7
# File 'lib/countries/mongoid.rb', line 5

def mongoize
  ISO3166::Country.mongoize(self)
end

#postal_code_formatString

Returns The regex for valid postal codes in this Country.

Returns:

  • (String)

    The regex for valid postal codes in this Country



107
108
109
# File 'lib/countries/country.rb', line 107

def postal_code_format
  "\\A#{data['postal_code_format']}\\Z" if postal_code
end

#to_sObject



111
112
113
# File 'lib/countries/country.rb', line 111

def to_s
  data['iso_short_name']
end

#translated_namesArray<String>

Returns the list of names for this Country in all loaded locales.

Returns:

  • (Array<String>)

    the list of names for this Country in all loaded locales.



116
117
118
# File 'lib/countries/country.rb', line 116

def translated_names
  data['translations'].values.compact
end

#translation(locale = :en) ⇒ String

:reek:FeatureEnvy

Parameters:

  • locale (String) (defaults to: :en)

    The locale to use for translations.

Returns:

  • (String)

    the name of this Country in the selected locale.



123
124
125
126
127
128
# File 'lib/countries/country.rb', line 123

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

Returns:

  • (Boolean)


31
32
33
# File 'lib/countries/country.rb', line 31

def valid?
  !(data.nil? || data.empty?)
end

#zip_formatObject



38
# File 'lib/countries/country.rb', line 38

alias zip_format postal_code_format