Class: Location::AddressNormalizer
- Inherits:
-
Object
- Object
- Location::AddressNormalizer
- Extended by:
- Forwardable
- Defined in:
- lib/location/address_normalizer.rb
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Class Method Summary collapse
Instance Method Summary collapse
- #attributes ⇒ Object
-
#initialize(model) ⇒ AddressNormalizer
constructor
A new instance of AddressNormalizer.
- #normalizable ⇒ Object
- #normalizable=(attributes) ⇒ Object
- #normalizable?(attribute) ⇒ Boolean
- #normalize! ⇒ Object
- #parameterize_attribute(attribute) ⇒ Object
Constructor Details
#initialize(model) ⇒ AddressNormalizer
Returns a new instance of AddressNormalizer.
19 20 21 |
# File 'lib/location/address_normalizer.rb', line 19 def initialize(model) @model = model end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
16 17 18 |
# File 'lib/location/address_normalizer.rb', line 16 def model @model end |
Class Method Details
.allowed_for_normalization ⇒ Object
8 9 10 |
# File 'lib/location/address_normalizer.rb', line 8 def self.allowed_for_normalization %i{state city district} end |
.default_normalizable ⇒ Object
12 13 14 |
# File 'lib/location/address_normalizer.rb', line 12 def self.default_normalizable Location.configuration.normalizable_attributes end |
Instance Method Details
#attributes ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/location/address_normalizer.rb', line 50 def attributes attributes = %w{postal_code street number complement latitude longitude} attributes.each_with_object({}) do |attr, hash| hash[attr] = @model.send(attr) end end |
#normalizable ⇒ Object
39 40 41 42 43 44 |
# File 'lib/location/address_normalizer.rb', line 39 def normalizable @normalizable ||= self.class.default_normalizable ensure_valid_normalizable! @normalizable end |
#normalizable=(attributes) ⇒ Object
34 35 36 37 |
# File 'lib/location/address_normalizer.rb', line 34 def normalizable=(attributes) @normalizable = Array(attributes) ensure_valid_normalizable! end |
#normalizable?(attribute) ⇒ Boolean
46 47 48 |
# File 'lib/location/address_normalizer.rb', line 46 def normalizable?(attribute) normalizable.include?(attribute) end |
#normalize! ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/location/address_normalizer.rb', line 23 def normalize! Finder.find(@model.postal_code) do |finder| return false unless finder.successful? normalizable.each do |a| value = finder.address.send(a) @model.send("#{a}=", value) unless value.nil? end end end |
#parameterize_attribute(attribute) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/location/address_normalizer.rb', line 58 def parameterize_attribute(attribute) { name: @model.send(attribute), normalized: normalizable?(attribute) } end |