Class: Addressing::Address
- Inherits:
-
Object
- Object
- Addressing::Address
- Defined in:
- lib/addressing/address.rb
Overview
Represents a postal address with attributes for country, administrative areas, postal code, address lines, and recipient information.
Address objects are immutable - use the with_* methods to create modified copies.
Constant Summary collapse
- FIELDS =
%i[ country_code administrative_area locality dependent_locality postal_code sorting_code address_line1 address_line2 address_line3 organization given_name additional_name family_name locale ].freeze
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Compares two addresses for equality based on all field values.
-
#eql?(other) ⇒ Boolean
Compares two addresses for equality (alias for ==).
-
#hash ⇒ Integer
Generates a hash code for the address based on all field values.
-
#initialize(country_code: "", administrative_area: "", locality: "", dependent_locality: "", postal_code: "", sorting_code: "", address_line1: "", address_line2: "", address_line3: "", organization: "", given_name: "", additional_name: "", family_name: "", locale: "und") ⇒ Address
constructor
Creates a new Address instance.
Constructor Details
#initialize(country_code: "", administrative_area: "", locality: "", dependent_locality: "", postal_code: "", sorting_code: "", address_line1: "", address_line2: "", address_line3: "", organization: "", given_name: "", additional_name: "", family_name: "", locale: "und") ⇒ Address
Creates a new Address instance.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/addressing/address.rb', line 45 def initialize(country_code: "", administrative_area: "", locality: "", dependent_locality: "", postal_code: "", sorting_code: "", address_line1: "", address_line2: "", address_line3: "", organization: "", given_name: "", additional_name: "", family_name: "", locale: "und") @country_code = country_code @administrative_area = administrative_area @locality = locality @dependent_locality = dependent_locality @postal_code = postal_code @sorting_code = sorting_code @address_line1 = address_line1 @address_line2 = address_line2 @address_line3 = address_line3 @organization = organization @given_name = given_name @additional_name = additional_name @family_name = family_name @locale = locale end |
Instance Method Details
#==(other) ⇒ Boolean
Compares two addresses for equality based on all field values.
75 76 77 78 79 |
# File 'lib/addressing/address.rb', line 75 def ==(other) return false unless other.is_a?(Address) FIELDS.all? { |field| send(field) == other.send(field) } end |
#eql?(other) ⇒ Boolean
Compares two addresses for equality (alias for ==).
85 86 87 |
# File 'lib/addressing/address.rb', line 85 def eql?(other) self == other end |
#hash ⇒ Integer
Generates a hash code for the address based on all field values.
92 93 94 |
# File 'lib/addressing/address.rb', line 92 def hash FIELDS.map { |field| send(field) }.hash end |