geocoder 1.5.1 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +107 -0
  3. data/LICENSE +1 -1
  4. data/README.md +364 -243
  5. data/bin/console +13 -0
  6. data/examples/app_defined_lookup_services.rb +22 -0
  7. data/lib/easting_northing.rb +171 -0
  8. data/lib/generators/geocoder/config/templates/initializer.rb +6 -1
  9. data/lib/geocoder/cache.rb +16 -33
  10. data/lib/geocoder/cache_stores/base.rb +40 -0
  11. data/lib/geocoder/cache_stores/generic.rb +35 -0
  12. data/lib/geocoder/cache_stores/redis.rb +34 -0
  13. data/lib/geocoder/configuration.rb +19 -5
  14. data/lib/geocoder/configuration_hash.rb +4 -4
  15. data/lib/geocoder/ip_address.rb +11 -1
  16. data/lib/geocoder/lookup.rb +42 -6
  17. data/lib/geocoder/lookups/abstract_api.rb +46 -0
  18. data/lib/geocoder/lookups/amap.rb +2 -2
  19. data/lib/geocoder/lookups/amazon_location_service.rb +58 -0
  20. data/lib/geocoder/lookups/azure.rb +56 -0
  21. data/lib/geocoder/lookups/ban_data_gouv_fr.rb +15 -2
  22. data/lib/geocoder/lookups/base.rb +4 -1
  23. data/lib/geocoder/lookups/bing.rb +2 -2
  24. data/lib/geocoder/lookups/esri.rb +24 -5
  25. data/lib/geocoder/lookups/freegeoip.rb +12 -10
  26. data/lib/geocoder/lookups/geoapify.rb +78 -0
  27. data/lib/geocoder/lookups/geocodio.rb +1 -1
  28. data/lib/geocoder/lookups/geoip2.rb +4 -0
  29. data/lib/geocoder/lookups/geoportail_lu.rb +1 -1
  30. data/lib/geocoder/lookups/google.rb +7 -2
  31. data/lib/geocoder/lookups/google_places_details.rb +26 -12
  32. data/lib/geocoder/lookups/google_places_search.rb +44 -2
  33. data/lib/geocoder/lookups/google_premier.rb +4 -0
  34. data/lib/geocoder/lookups/here.rb +27 -31
  35. data/lib/geocoder/lookups/ip2location.rb +10 -14
  36. data/lib/geocoder/lookups/ip2location_io.rb +62 -0
  37. data/lib/geocoder/lookups/ip2location_lite.rb +40 -0
  38. data/lib/geocoder/lookups/ipbase.rb +49 -0
  39. data/lib/geocoder/lookups/ipdata_co.rb +1 -1
  40. data/lib/geocoder/lookups/ipgeolocation.rb +51 -0
  41. data/lib/geocoder/lookups/ipqualityscore.rb +50 -0
  42. data/lib/geocoder/lookups/ipregistry.rb +68 -0
  43. data/lib/geocoder/lookups/latlon.rb +1 -2
  44. data/lib/geocoder/lookups/location_iq.rb +5 -1
  45. data/lib/geocoder/lookups/mapbox.rb +3 -3
  46. data/lib/geocoder/lookups/maxmind_local.rb +7 -1
  47. data/lib/geocoder/lookups/melissa_street.rb +41 -0
  48. data/lib/geocoder/lookups/nationaal_georegister_nl.rb +38 -0
  49. data/lib/geocoder/lookups/osmnames.rb +57 -0
  50. data/lib/geocoder/lookups/pc_miler.rb +85 -0
  51. data/lib/geocoder/lookups/pdok_nl.rb +43 -0
  52. data/lib/geocoder/lookups/photon.rb +89 -0
  53. data/lib/geocoder/lookups/pickpoint.rb +1 -1
  54. data/lib/geocoder/lookups/smarty_streets.rb +6 -1
  55. data/lib/geocoder/lookups/telize.rb +1 -1
  56. data/lib/geocoder/lookups/tencent.rb +9 -9
  57. data/lib/geocoder/lookups/test.rb +5 -0
  58. data/lib/geocoder/lookups/twogis.rb +58 -0
  59. data/lib/geocoder/lookups/uk_ordnance_survey_names.rb +59 -0
  60. data/lib/geocoder/lookups/yandex.rb +6 -7
  61. data/lib/geocoder/query.rb +1 -1
  62. data/lib/geocoder/results/abstract_api.rb +146 -0
  63. data/lib/geocoder/results/amazon_location_service.rb +62 -0
  64. data/lib/geocoder/results/azure.rb +65 -0
  65. data/lib/geocoder/results/baidu.rb +0 -4
  66. data/lib/geocoder/results/ban_data_gouv_fr.rb +28 -3
  67. data/lib/geocoder/results/db_ip_com.rb +1 -1
  68. data/lib/geocoder/results/esri.rb +5 -2
  69. data/lib/geocoder/results/geoapify.rb +179 -0
  70. data/lib/geocoder/results/here.rb +20 -22
  71. data/lib/geocoder/results/ip2location_io.rb +21 -0
  72. data/lib/geocoder/results/ip2location_lite.rb +47 -0
  73. data/lib/geocoder/results/ipbase.rb +40 -0
  74. data/lib/geocoder/results/ipgeolocation.rb +59 -0
  75. data/lib/geocoder/results/ipqualityscore.rb +54 -0
  76. data/lib/geocoder/results/ipregistry.rb +304 -0
  77. data/lib/geocoder/results/mapbox.rb +34 -10
  78. data/lib/geocoder/results/melissa_street.rb +46 -0
  79. data/lib/geocoder/results/nationaal_georegister_nl.rb +62 -0
  80. data/lib/geocoder/results/nominatim.rb +27 -15
  81. data/lib/geocoder/results/osmnames.rb +56 -0
  82. data/lib/geocoder/results/pc_miler.rb +98 -0
  83. data/lib/geocoder/results/pdok_nl.rb +62 -0
  84. data/lib/geocoder/results/photon.rb +119 -0
  85. data/lib/geocoder/results/twogis.rb +76 -0
  86. data/lib/geocoder/results/uk_ordnance_survey_names.rb +59 -0
  87. data/lib/geocoder/results/yandex.rb +217 -59
  88. data/lib/geocoder/sql.rb +4 -4
  89. data/lib/geocoder/util.rb +29 -0
  90. data/lib/geocoder/version.rb +1 -1
  91. data/lib/maxmind_database.rb +12 -12
  92. data/lib/tasks/maxmind.rake +1 -1
  93. metadata +81 -23
  94. data/examples/autoexpire_cache_dalli.rb +0 -62
  95. data/examples/autoexpire_cache_redis.rb +0 -28
  96. data/lib/geocoder/lookups/dstk.rb +0 -22
  97. data/lib/geocoder/lookups/geocoder_us.rb +0 -51
  98. data/lib/geocoder/results/dstk.rb +0 -6
  99. data/lib/geocoder/results/geocoder_us.rb +0 -39
  100. data/lib/hash_recursive_merge.rb +0 -74
metadata CHANGED
@@ -1,19 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geocoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Reisner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-23 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Provides object geocoding (by street or IP address), reverse geocoding
14
- (coordinates to street address), distance queries for ActiveRecord and Mongoid,
15
- result caching, and more. Designed for Rails but works with Sinatra and other Rack
16
- frameworks too.
11
+ date: 2024-12-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: base64
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: csv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
41
+ description: Object geocoding (by street or IP address), reverse geocoding (coordinates
42
+ to street address), distance queries for ActiveRecord and Mongoid, result caching,
43
+ and more. Designed for Rails but works with Sinatra and other Rack frameworks too.
17
44
  email:
18
45
  - alex@alexreisner.com
19
46
  executables:
@@ -24,11 +51,12 @@ files:
24
51
  - CHANGELOG.md
25
52
  - LICENSE
26
53
  - README.md
54
+ - bin/console
27
55
  - bin/geocode
28
- - examples/autoexpire_cache_dalli.rb
29
- - examples/autoexpire_cache_redis.rb
56
+ - examples/app_defined_lookup_services.rb
30
57
  - examples/cache_bypass.rb
31
58
  - examples/reverse_geocode_job.rb
59
+ - lib/easting_northing.rb
32
60
  - lib/generators/geocoder/config/config_generator.rb
33
61
  - lib/generators/geocoder/config/templates/initializer.rb
34
62
  - lib/generators/geocoder/maxmind/geolite_city_generator.rb
@@ -38,6 +66,9 @@ files:
38
66
  - lib/generators/geocoder/migration_version.rb
39
67
  - lib/geocoder.rb
40
68
  - lib/geocoder/cache.rb
69
+ - lib/geocoder/cache_stores/base.rb
70
+ - lib/geocoder/cache_stores/generic.rb
71
+ - lib/geocoder/cache_stores/redis.rb
41
72
  - lib/geocoder/calculations.rb
42
73
  - lib/geocoder/cli.rb
43
74
  - lib/geocoder/configuration.rb
@@ -48,18 +79,20 @@ files:
48
79
  - lib/geocoder/kernel_logger.rb
49
80
  - lib/geocoder/logger.rb
50
81
  - lib/geocoder/lookup.rb
82
+ - lib/geocoder/lookups/abstract_api.rb
51
83
  - lib/geocoder/lookups/amap.rb
84
+ - lib/geocoder/lookups/amazon_location_service.rb
85
+ - lib/geocoder/lookups/azure.rb
52
86
  - lib/geocoder/lookups/baidu.rb
53
87
  - lib/geocoder/lookups/baidu_ip.rb
54
88
  - lib/geocoder/lookups/ban_data_gouv_fr.rb
55
89
  - lib/geocoder/lookups/base.rb
56
90
  - lib/geocoder/lookups/bing.rb
57
91
  - lib/geocoder/lookups/db_ip_com.rb
58
- - lib/geocoder/lookups/dstk.rb
59
92
  - lib/geocoder/lookups/esri.rb
60
93
  - lib/geocoder/lookups/freegeoip.rb
94
+ - lib/geocoder/lookups/geoapify.rb
61
95
  - lib/geocoder/lookups/geocoder_ca.rb
62
- - lib/geocoder/lookups/geocoder_us.rb
63
96
  - lib/geocoder/lookups/geocodio.rb
64
97
  - lib/geocoder/lookups/geoip2.rb
65
98
  - lib/geocoder/lookups/geoportail_lu.rb
@@ -69,9 +102,15 @@ files:
69
102
  - lib/geocoder/lookups/google_premier.rb
70
103
  - lib/geocoder/lookups/here.rb
71
104
  - lib/geocoder/lookups/ip2location.rb
105
+ - lib/geocoder/lookups/ip2location_io.rb
106
+ - lib/geocoder/lookups/ip2location_lite.rb
72
107
  - lib/geocoder/lookups/ipapi_com.rb
108
+ - lib/geocoder/lookups/ipbase.rb
73
109
  - lib/geocoder/lookups/ipdata_co.rb
110
+ - lib/geocoder/lookups/ipgeolocation.rb
74
111
  - lib/geocoder/lookups/ipinfo_io.rb
112
+ - lib/geocoder/lookups/ipqualityscore.rb
113
+ - lib/geocoder/lookups/ipregistry.rb
75
114
  - lib/geocoder/lookups/ipstack.rb
76
115
  - lib/geocoder/lookups/latlon.rb
77
116
  - lib/geocoder/lookups/location_iq.rb
@@ -80,9 +119,15 @@ files:
80
119
  - lib/geocoder/lookups/maxmind.rb
81
120
  - lib/geocoder/lookups/maxmind_geoip2.rb
82
121
  - lib/geocoder/lookups/maxmind_local.rb
122
+ - lib/geocoder/lookups/melissa_street.rb
123
+ - lib/geocoder/lookups/nationaal_georegister_nl.rb
83
124
  - lib/geocoder/lookups/nominatim.rb
84
125
  - lib/geocoder/lookups/opencagedata.rb
126
+ - lib/geocoder/lookups/osmnames.rb
127
+ - lib/geocoder/lookups/pc_miler.rb
128
+ - lib/geocoder/lookups/pdok_nl.rb
85
129
  - lib/geocoder/lookups/pelias.rb
130
+ - lib/geocoder/lookups/photon.rb
86
131
  - lib/geocoder/lookups/pickpoint.rb
87
132
  - lib/geocoder/lookups/pointpin.rb
88
133
  - lib/geocoder/lookups/postcode_anywhere_uk.rb
@@ -91,6 +136,8 @@ files:
91
136
  - lib/geocoder/lookups/telize.rb
92
137
  - lib/geocoder/lookups/tencent.rb
93
138
  - lib/geocoder/lookups/test.rb
139
+ - lib/geocoder/lookups/twogis.rb
140
+ - lib/geocoder/lookups/uk_ordnance_survey_names.rb
94
141
  - lib/geocoder/lookups/yandex.rb
95
142
  - lib/geocoder/models/active_record.rb
96
143
  - lib/geocoder/models/base.rb
@@ -100,18 +147,20 @@ files:
100
147
  - lib/geocoder/query.rb
101
148
  - lib/geocoder/railtie.rb
102
149
  - lib/geocoder/request.rb
150
+ - lib/geocoder/results/abstract_api.rb
103
151
  - lib/geocoder/results/amap.rb
152
+ - lib/geocoder/results/amazon_location_service.rb
153
+ - lib/geocoder/results/azure.rb
104
154
  - lib/geocoder/results/baidu.rb
105
155
  - lib/geocoder/results/baidu_ip.rb
106
156
  - lib/geocoder/results/ban_data_gouv_fr.rb
107
157
  - lib/geocoder/results/base.rb
108
158
  - lib/geocoder/results/bing.rb
109
159
  - lib/geocoder/results/db_ip_com.rb
110
- - lib/geocoder/results/dstk.rb
111
160
  - lib/geocoder/results/esri.rb
112
161
  - lib/geocoder/results/freegeoip.rb
162
+ - lib/geocoder/results/geoapify.rb
113
163
  - lib/geocoder/results/geocoder_ca.rb
114
- - lib/geocoder/results/geocoder_us.rb
115
164
  - lib/geocoder/results/geocodio.rb
116
165
  - lib/geocoder/results/geoip2.rb
117
166
  - lib/geocoder/results/geoportail_lu.rb
@@ -121,9 +170,15 @@ files:
121
170
  - lib/geocoder/results/google_premier.rb
122
171
  - lib/geocoder/results/here.rb
123
172
  - lib/geocoder/results/ip2location.rb
173
+ - lib/geocoder/results/ip2location_io.rb
174
+ - lib/geocoder/results/ip2location_lite.rb
124
175
  - lib/geocoder/results/ipapi_com.rb
176
+ - lib/geocoder/results/ipbase.rb
125
177
  - lib/geocoder/results/ipdata_co.rb
178
+ - lib/geocoder/results/ipgeolocation.rb
126
179
  - lib/geocoder/results/ipinfo_io.rb
180
+ - lib/geocoder/results/ipqualityscore.rb
181
+ - lib/geocoder/results/ipregistry.rb
127
182
  - lib/geocoder/results/ipstack.rb
128
183
  - lib/geocoder/results/latlon.rb
129
184
  - lib/geocoder/results/location_iq.rb
@@ -132,9 +187,15 @@ files:
132
187
  - lib/geocoder/results/maxmind.rb
133
188
  - lib/geocoder/results/maxmind_geoip2.rb
134
189
  - lib/geocoder/results/maxmind_local.rb
190
+ - lib/geocoder/results/melissa_street.rb
191
+ - lib/geocoder/results/nationaal_georegister_nl.rb
135
192
  - lib/geocoder/results/nominatim.rb
136
193
  - lib/geocoder/results/opencagedata.rb
194
+ - lib/geocoder/results/osmnames.rb
195
+ - lib/geocoder/results/pc_miler.rb
196
+ - lib/geocoder/results/pdok_nl.rb
137
197
  - lib/geocoder/results/pelias.rb
198
+ - lib/geocoder/results/photon.rb
138
199
  - lib/geocoder/results/pickpoint.rb
139
200
  - lib/geocoder/results/pointpin.rb
140
201
  - lib/geocoder/results/postcode_anywhere_uk.rb
@@ -143,6 +204,8 @@ files:
143
204
  - lib/geocoder/results/telize.rb
144
205
  - lib/geocoder/results/tencent.rb
145
206
  - lib/geocoder/results/test.rb
207
+ - lib/geocoder/results/twogis.rb
208
+ - lib/geocoder/results/uk_ordnance_survey_names.rb
146
209
  - lib/geocoder/results/yandex.rb
147
210
  - lib/geocoder/sql.rb
148
211
  - lib/geocoder/stores/active_record.rb
@@ -150,8 +213,8 @@ files:
150
213
  - lib/geocoder/stores/mongo_base.rb
151
214
  - lib/geocoder/stores/mongo_mapper.rb
152
215
  - lib/geocoder/stores/mongoid.rb
216
+ - lib/geocoder/util.rb
153
217
  - lib/geocoder/version.rb
154
- - lib/hash_recursive_merge.rb
155
218
  - lib/maxmind_database.rb
156
219
  - lib/tasks/geocoder.rake
157
220
  - lib/tasks/maxmind.rake
@@ -161,11 +224,7 @@ licenses:
161
224
  metadata:
162
225
  source_code_uri: https://github.com/alexreisner/geocoder
163
226
  changelog_uri: https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md
164
- post_install_message: |2+
165
-
166
-
167
- NOTE: Geocoder's default IP address lookup has changed from FreeGeoIP.net to IPInfo.io. If you explicitly specify :freegeoip in your configuration you must choose a different IP lookup before FreeGeoIP is discontinued on July 1, 2018. If you do not explicitly specify :freegeoip you do not need to change anything.
168
-
227
+ post_install_message:
169
228
  rdoc_options: []
170
229
  require_paths:
171
230
  - lib
@@ -180,9 +239,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
239
  - !ruby/object:Gem::Version
181
240
  version: '0'
182
241
  requirements: []
183
- rubyforge_project:
184
- rubygems_version: 2.5.2
185
- signing_key:
242
+ rubygems_version: 3.3.26
243
+ signing_key:
186
244
  specification_version: 4
187
245
  summary: Complete geocoding solution for Ruby.
188
246
  test_files: []
@@ -1,62 +0,0 @@
1
- # This class implements a cache with simple delegation to the the Dalli Memcached client
2
- # https://github.com/mperham/dalli
3
- #
4
- # A TTL is set on initialization
5
-
6
- class AutoexpireCacheDalli
7
- def initialize(store, ttl = 86400)
8
- @store = store
9
- @keys = 'GeocoderDalliClientKeys'
10
- @ttl = ttl
11
- end
12
-
13
- def [](url)
14
- res = @store.get(url)
15
- res = YAML::load(res) if res.present?
16
- res
17
- end
18
-
19
- def []=(url, value)
20
- if value.nil?
21
- del(url)
22
- else
23
- key_cache_add(url) if @store.add(url, YAML::dump(value), @ttl)
24
- end
25
- value
26
- end
27
-
28
- def keys
29
- key_cache
30
- end
31
-
32
- def del(url)
33
- key_cache_delete(url) if @store.delete(url)
34
- end
35
-
36
- private
37
-
38
- def key_cache
39
- the_keys = @store.get(@keys)
40
- if the_keys.nil?
41
- @store.add(@keys, YAML::dump([]))
42
- []
43
- else
44
- YAML::load(the_keys)
45
- end
46
- end
47
-
48
- def key_cache_add(key)
49
- @store.replace(@keys, YAML::dump(key_cache << key))
50
- end
51
-
52
- def key_cache_delete(key)
53
- tmp = key_cache
54
- tmp.delete(key)
55
- @store.replace(@keys, YAML::dump(tmp))
56
- end
57
- end
58
-
59
- # Here Dalli is set up as on Heroku using the Memcachier gem.
60
- # https://devcenter.heroku.com/articles/memcachier#ruby
61
- # On other setups you might have to specify your Memcached server in Dalli::Client.new
62
- Geocoder.configure(:cache => AutoexpireCacheDalli.new(Dalli::Client.new))
@@ -1,28 +0,0 @@
1
- # This class implements a cache with simple delegation to the Redis store, but
2
- # when it creates a key/value pair, it also sends an EXPIRE command with a TTL.
3
- # It should be fairly simple to do the same thing with Memcached.
4
- class AutoexpireCacheRedis
5
- def initialize(store, ttl = 86400)
6
- @store = store
7
- @ttl = ttl
8
- end
9
-
10
- def [](url)
11
- @store.get(url)
12
- end
13
-
14
- def []=(url, value)
15
- @store.set(url, value)
16
- @store.expire(url, @ttl)
17
- end
18
-
19
- def keys
20
- @store.keys
21
- end
22
-
23
- def del(url)
24
- @store.del(url)
25
- end
26
- end
27
-
28
- Geocoder.configure(:cache => AutoexpireCacheRedis.new(Redis.new))
@@ -1,22 +0,0 @@
1
- # More information about the Data Science Toolkit can be found at:
2
- # http://www.datasciencetoolkit.org/. The provided APIs mimic the
3
- # Google geocoding api.
4
-
5
- require 'geocoder/lookups/google'
6
- require 'geocoder/results/dstk'
7
-
8
- module Geocoder::Lookup
9
- class Dstk < Google
10
-
11
- def name
12
- "Data Science Toolkit"
13
- end
14
-
15
- private # ----------------------------------------------------------------
16
-
17
- def base_query_url(query)
18
- host = configuration[:host] || "www.datasciencetoolkit.org"
19
- "#{protocol}://#{host}/maps/api/geocode/json?"
20
- end
21
- end
22
- end
@@ -1,51 +0,0 @@
1
- require 'geocoder/lookups/base'
2
- require "geocoder/results/geocoder_us"
3
-
4
- module Geocoder::Lookup
5
- class GeocoderUs < Base
6
-
7
- def name
8
- "Geocoder.us"
9
- end
10
-
11
- def supported_protocols
12
- [:http]
13
- end
14
-
15
- private # ----------------------------------------------------------------
16
-
17
- def base_query_url(query)
18
- base_query_url_with_optional_key(configuration.api_key)
19
- end
20
-
21
- def cache_key(query)
22
- base_query_url_with_optional_key(nil) + url_query_string(query)
23
- end
24
-
25
- def base_query_url_with_optional_key(key = nil)
26
- base = "#{protocol}://"
27
- if configuration.api_key
28
- base << "#{configuration.api_key}@"
29
- end
30
- base + "geocoder.us/member/service/csv/geocode?"
31
- end
32
-
33
- def results(query)
34
- return [] unless doc = fetch_data(query)
35
- if doc[0].to_s =~ /^(\d+)\:/
36
- return []
37
- else
38
- return [doc.size == 5 ? ((doc[0..1] << nil) + doc[2..4]) : doc]
39
- end
40
- end
41
-
42
- def query_url_params(query)
43
- (query.text =~ /^\d{5}(?:-\d{4})?$/ ? {:zip => query} : {:address => query.sanitized_text}).merge(super)
44
- end
45
-
46
- def parse_raw_data(raw_data)
47
- raw_data.chomp.split(',')
48
- end
49
- end
50
- end
51
-
@@ -1,6 +0,0 @@
1
- require 'geocoder/results/google'
2
-
3
- module Geocoder::Result
4
- class Dstk < Google
5
- end
6
- end
@@ -1,39 +0,0 @@
1
- require 'geocoder/results/base'
2
-
3
- module Geocoder::Result
4
- class GeocoderUs < Base
5
- def coordinates
6
- [@data[0].to_f, @data[1].to_f]
7
- end
8
-
9
- def address(format = :full)
10
- "#{street_address}, #{city}, #{state} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
11
- end
12
-
13
- def street_address
14
- @data[2]
15
- end
16
-
17
- def city
18
- @data[3]
19
- end
20
-
21
- def state
22
- @data[4]
23
- end
24
-
25
- alias_method :state_code, :state
26
-
27
- def postal_code
28
- @data[5]
29
- end
30
-
31
- def country
32
- 'United States'
33
- end
34
-
35
- def country_code
36
- 'US'
37
- end
38
- end
39
- end
@@ -1,74 +0,0 @@
1
- #
2
- # = Hash Recursive Merge
3
- #
4
- # Merges a Ruby Hash recursively, Also known as deep merge.
5
- # Recursive version of Hash#merge and Hash#merge!.
6
- #
7
- # Category:: Ruby
8
- # Package:: Hash
9
- # Author:: Simone Carletti <weppos@weppos.net>
10
- # Copyright:: 2007-2008 The Authors
11
- # License:: MIT License
12
- # Link:: http://www.simonecarletti.com/
13
- # Source:: http://gist.github.com/gists/6391/
14
- #
15
- module HashRecursiveMerge
16
-
17
- #
18
- # Recursive version of Hash#merge!
19
- #
20
- # Adds the contents of +other_hash+ to +hsh+,
21
- # merging entries in +hsh+ with duplicate keys with those from +other_hash+.
22
- #
23
- # Compared with Hash#merge!, this method supports nested hashes.
24
- # When both +hsh+ and +other_hash+ contains an entry with the same key,
25
- # it merges and returns the values from both arrays.
26
- #
27
- # h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
28
- # h2 = {"b" => 254, "c" => {"c1" => 16, "c3" => 94}}
29
- # h1.rmerge!(h2) #=> {"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}}
30
- #
31
- # Simply using Hash#merge! would return
32
- #
33
- # h1.merge!(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
34
- #
35
- def rmerge!(other_hash)
36
- merge!(other_hash) do |key, oldval, newval|
37
- oldval.class == self.class ? oldval.rmerge!(newval) : newval
38
- end
39
- end
40
-
41
- #
42
- # Recursive version of Hash#merge
43
- #
44
- # Compared with Hash#merge!, this method supports nested hashes.
45
- # When both +hsh+ and +other_hash+ contains an entry with the same key,
46
- # it merges and returns the values from both arrays.
47
- #
48
- # Compared with Hash#merge, this method provides a different approch
49
- # for merging nasted hashes.
50
- # If the value of a given key is an Hash and both +other_hash+ abd +hsh
51
- # includes the same key, the value is merged instead replaced with
52
- # +other_hash+ value.
53
- #
54
- # h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
55
- # h2 = {"b" => 254, "c" => {"c1" => 16, "c3" => 94}}
56
- # h1.rmerge(h2) #=> {"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}}
57
- #
58
- # Simply using Hash#merge would return
59
- #
60
- # h1.merge(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
61
- #
62
- def rmerge(other_hash)
63
- r = {}
64
- merge(other_hash) do |key, oldval, newval|
65
- r[key] = oldval.class == self.class ? oldval.rmerge(newval) : newval
66
- end
67
- end
68
-
69
- end
70
-
71
-
72
- class Hash
73
- include HashRecursiveMerge
74
- end