Class: ActiveShipping::Location
- Inherits:
-
Object
- Object
- ActiveShipping::Location
- Defined in:
- lib/active_shipping/location.rb
Constant Summary collapse
- ADDRESS_TYPES =
%w(residential commercial po_box)
Instance Attribute Summary collapse
-
#address1 ⇒ Object
readonly
Returns the value of attribute address1.
-
#address2 ⇒ Object
readonly
Returns the value of attribute address2.
-
#address3 ⇒ Object
readonly
Returns the value of attribute address3.
-
#address_type ⇒ Object
Returns the value of attribute address_type.
-
#city ⇒ Object
readonly
Returns the value of attribute city.
-
#company_name ⇒ Object
(also: #company)
readonly
Returns the value of attribute company_name.
-
#country ⇒ Object
readonly
Returns the value of attribute country.
-
#fax ⇒ Object
readonly
Returns the value of attribute fax.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#phone ⇒ Object
readonly
Returns the value of attribute phone.
-
#postal_code ⇒ Object
(also: #zip, #postal)
readonly
Returns the value of attribute postal_code.
-
#province ⇒ Object
(also: #state, #territory, #region)
readonly
Returns the value of attribute province.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #address2_and_3 ⇒ Object
- #commercial? ⇒ Boolean
- #country_code(format = :alpha2) ⇒ Object
-
#initialize(options = {}) ⇒ Location
constructor
A new instance of Location.
- #inspect ⇒ Object
- #po_box? ⇒ Boolean
- #prettyprint ⇒ Object
- #residential? ⇒ Boolean
- #to_hash ⇒ Object
- #to_s ⇒ Object
- #unknown? ⇒ Boolean
-
#zip_plus_4 ⇒ Object
Returns the postal code as a properly formatted Zip+4 code, e.g.
Constructor Details
#initialize(options = {}) ⇒ Location
Returns a new instance of Location.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/active_shipping/location.rb', line 26 def initialize( = {}) @country = ([:country].nil? or [:country].is_a?(ActiveUtils::Country)) ? [:country] : ActiveUtils::Country.find([:country]) @postal_code = [:postal_code] || [:postal] || [:zip] @province = [:province] || [:state] || [:territory] || [:region] @city = [:city] @name = [:name] @address1 = [:address1] @address2 = [:address2] @address3 = [:address3] @phone = [:phone] @fax = [:fax] @company_name = [:company_name] || [:company] self.address_type = [:address_type] end |
Instance Attribute Details
#address1 ⇒ Object (readonly)
Returns the value of attribute address1.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def address1 @address1 end |
#address2 ⇒ Object (readonly)
Returns the value of attribute address2.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def address2 @address2 end |
#address3 ⇒ Object (readonly)
Returns the value of attribute address3.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def address3 @address3 end |
#address_type ⇒ Object
Returns the value of attribute address_type.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def address_type @address_type end |
#city ⇒ Object (readonly)
Returns the value of attribute city.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def city @city end |
#company_name ⇒ Object (readonly) Also known as: company
Returns the value of attribute company_name.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def company_name @company_name end |
#country ⇒ Object (readonly)
Returns the value of attribute country.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def country @country end |
#fax ⇒ Object (readonly)
Returns the value of attribute fax.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def fax @fax end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def @options end |
#phone ⇒ Object (readonly)
Returns the value of attribute phone.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def phone @phone end |
#postal_code ⇒ Object (readonly) Also known as: zip, postal
Returns the value of attribute postal_code.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def postal_code @postal_code end |
#province ⇒ Object (readonly) Also known as: state, territory, region
Returns the value of attribute province.
5 6 7 |
# File 'lib/active_shipping/location.rb', line 5 def province @province end |
Class Method Details
.from(object, options = {}) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/active_shipping/location.rb', line 44 def self.from(object, = {}) return object if object.is_a? ActiveShipping::Location attr_mappings = { :name => [:name], :country => [:country_code, :country], :postal_code => [:postal_code, :zip, :postal], :province => [:province_code, :state_code, :territory_code, :region_code, :province, :state, :territory, :region], :city => [:city, :town], :address1 => [:address1, :address, :street], :address2 => [:address2], :address3 => [:address3], :phone => [:phone, :phone_number], :fax => [:fax, :fax_number], :address_type => [:address_type], :company_name => [:company, :company_name] } attributes = {} hash_access = begin object[:some_symbol] true rescue false end attr_mappings.each do |pair| pair[1].each do |sym| if value = (object[sym] if hash_access) || (object.send(sym) if object.respond_to?(sym) && (!hash_access || !Hash.public_instance_methods.include?(sym.to_s))) attributes[pair[0]] = value break end end end attributes.delete(:address_type) unless ADDRESS_TYPES.include?(attributes[:address_type].to_s) new(attributes.update()) end |
Instance Method Details
#==(other) ⇒ Object
144 145 146 |
# File 'lib/active_shipping/location.rb', line 144 def ==(other) to_hash == other.to_hash end |
#address2_and_3 ⇒ Object
140 141 142 |
# File 'lib/active_shipping/location.rb', line 140 def address2_and_3 [address2, address3].reject(&:blank?).join(", ") end |
#commercial? ⇒ Boolean
84 |
# File 'lib/active_shipping/location.rb', line 84 def commercial?; @address_type == 'commercial' end |
#country_code(format = :alpha2) ⇒ Object
79 80 81 |
# File 'lib/active_shipping/location.rb', line 79 def country_code(format = :alpha2) @country.nil? ? nil : @country.code(format).value end |
#inspect ⇒ Object
122 123 124 125 126 127 |
# File 'lib/active_shipping/location.rb', line 122 def inspect string = prettyprint string << "\nPhone: #{@phone}" unless @phone.blank? string << "\nFax: #{@fax}" unless @fax.blank? string end |
#po_box? ⇒ Boolean
85 |
# File 'lib/active_shipping/location.rb', line 85 def po_box?; @address_type == 'po_box' end |
#prettyprint ⇒ Object
115 116 117 118 119 120 |
# File 'lib/active_shipping/location.rb', line 115 def prettyprint chunks = [@name, @address1, @address2, @address3] chunks << [@city, @province, @postal_code].reject(&:blank?).join(', ') chunks << @country chunks.reject(&:blank?).join("\n") end |
#residential? ⇒ Boolean
83 |
# File 'lib/active_shipping/location.rb', line 83 def residential?; @address_type == 'residential' end |
#to_hash ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/active_shipping/location.rb', line 94 def to_hash { :country => country_code, :postal_code => postal_code, :province => province, :city => city, :name => name, :address1 => address1, :address2 => address2, :address3 => address3, :phone => phone, :fax => fax, :address_type => address_type, :company_name => company_name } end |
#to_s ⇒ Object
111 112 113 |
# File 'lib/active_shipping/location.rb', line 111 def to_s prettyprint.gsub(/\n/, ' ') end |
#unknown? ⇒ Boolean
86 |
# File 'lib/active_shipping/location.rb', line 86 def unknown?; country_code == 'ZZ' end |
#zip_plus_4 ⇒ Object
Returns the postal code as a properly formatted Zip+4 code, e.g. "77095-2233"
130 131 132 133 134 135 136 137 138 |
# File 'lib/active_shipping/location.rb', line 130 def zip_plus_4 if /(\d{5})(\d{4})/ =~ @postal_code return "#{$1}-#{$2}" elsif /\d{5}-\d{4}/ =~ @postal_code return @postal_code else nil end end |