Class: Addressing::Subdivision
- Inherits:
-
Object
- Object
- Addressing::Subdivision
- Defined in:
- lib/addressing/subdivision.rb
Constant Summary collapse
- @@definitions =
Subdivision definitions.
{}
- @@parents =
Parent subdivisions.
Used as a cache to speed up instantiating subdivisions with the same parent. Contains only parents instead of all instantiated subdivisions to minimize duplicating the data in $this->definitions, thus reducing memory usage.
{}
Instance Attribute Summary collapse
-
#children ⇒ Object
readonly
Returns the value of attribute children.
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#country_code ⇒ Object
readonly
Returns the value of attribute country_code.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#local_code ⇒ Object
readonly
Returns the value of attribute local_code.
-
#local_name ⇒ Object
readonly
Returns the value of attribute local_name.
-
#locale ⇒ Object
readonly
Returns the value of attribute locale.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#postal_code_pattern ⇒ Object
readonly
Returns the value of attribute postal_code_pattern.
Class Method Summary collapse
-
.all(parents) ⇒ Object
Returns all subdivision instances for the provided parents.
- .get(id, parents) ⇒ Object
-
.list(parents, locale = nil) ⇒ Object
Returns a list of subdivisions for the provided parents.
Instance Method Summary collapse
- #children? ⇒ Boolean
-
#initialize(definition = {}) ⇒ Subdivision
constructor
A new instance of Subdivision.
- #to_h ⇒ Object
Constructor Details
#initialize(definition = {}) ⇒ Subdivision
Returns a new instance of Subdivision.
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/addressing/subdivision.rb', line 201 def initialize(definition = {}) # Validate the presence of required properties. [:country_code, :id, :code, :name].each do |required_property| if definition[required_property].nil? raise ArgumentError, "Missing required property #{required_property}." end end # Add defaults for properties that are allowed to be empty. definition = { parent: nil, locale: nil, local_code: nil, local_name: nil, postal_code_pattern: nil, children: {} }.merge(definition) @id = definition[:id] @parent = definition[:parent] @country_code = definition[:country_code] @locale = definition[:locale] @code = definition[:code] @local_code = definition[:local_code] @name = definition[:name] @local_name = definition[:local_name] @postal_code_pattern = definition[:postal_code_pattern] @children = definition[:children] end |
Instance Attribute Details
#children ⇒ Object (readonly)
Returns the value of attribute children.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def children @children end |
#code ⇒ Object (readonly)
Returns the value of attribute code.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def code @code end |
#country_code ⇒ Object (readonly)
Returns the value of attribute country_code.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def country_code @country_code end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def id @id end |
#local_code ⇒ Object (readonly)
Returns the value of attribute local_code.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def local_code @local_code end |
#local_name ⇒ Object (readonly)
Returns the value of attribute local_name.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def local_name @local_name end |
#locale ⇒ Object (readonly)
Returns the value of attribute locale.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def locale @locale end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def name @name end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def parent @parent end |
#postal_code_pattern ⇒ Object (readonly)
Returns the value of attribute postal_code_pattern.
199 200 201 |
# File 'lib/addressing/subdivision.rb', line 199 def postal_code_pattern @postal_code_pattern end |
Class Method Details
.all(parents) ⇒ Object
Returns all subdivision instances for the provided parents.
23 24 25 26 27 28 29 30 |
# File 'lib/addressing/subdivision.rb', line 23 def all(parents) definitions = load_definitions(parents) return {} if definitions.empty? definitions["subdivisions"].each_with_object({}) do |(id, definition), subdivisions| subdivisions[id] = create_subdivision_from_definitions(id, definitions) end end |
.get(id, parents) ⇒ Object
17 18 19 20 |
# File 'lib/addressing/subdivision.rb', line 17 def get(id, parents) definitions = load_definitions(parents) create_subdivision_from_definitions(id, definitions) end |
.list(parents, locale = nil) ⇒ Object
Returns a list of subdivisions for the provided parents.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/addressing/subdivision.rb', line 33 def list(parents, locale = nil) definitions = load_definitions(parents) return {} if definitions.empty? use_local_name = Locale.match_candidates(locale, definitions["locale"] || "") definitions["subdivisions"].each_with_object({}) do |(id, definition), subdivisions| subdivisions[id] = use_local_name ? definition["local_name"] : definition["name"] end end |
Instance Method Details
#children? ⇒ Boolean
231 232 233 |
# File 'lib/addressing/subdivision.rb', line 231 def children? @children.any? end |
#to_h ⇒ Object
235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/addressing/subdivision.rb', line 235 def to_h { id: id, parent: parent, country_code: country_code, locale: locale, code: code, local_code: local_code, name: name, local_name: local_name, postal_code_pattern: postal_code_pattern, children: children } end |