what3words 2.2.0 → 3.1.0

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.
@@ -1,194 +1,248 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'rest-client'
4
+ require 'json'
5
+ require File.expand_path('../version', __FILE__)
6
+ require 'what3words/version'
4
7
 
5
8
  module What3Words
6
- # Document the responsibility of the class
7
- #
8
- class API # rubocop:disable Metrics/ClassLength
9
+ # What3Words v3 API wrapper
10
+ class API
9
11
  class Error < RuntimeError; end
10
12
  class ResponseError < Error; end
11
13
  class WordError < Error; end
12
14
 
13
- REGEX_3_WORD_ADDRESS = /^\p{L}+\.\p{L}+\.\p{L}+$/u
14
- REGEX_STRICT = /^\p{L}{3,}+\.\p{L}{3,}+\.\p{L}{3,}+$/u
15
-
16
- BASE_URL = 'https://api.what3words.com/v2/'.freeze
15
+ REGEX_3_WORD_ADDRESS = /^\/{0,3}(?:[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}|'<,.>?\/\";:£§º©®\s]+[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+|[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+){1,3}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+){1,3}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]+){1,3})$/u.freeze
16
+ BASE_URL = 'https://api.what3words.com/v3/'
17
17
 
18
18
  ENDPOINTS = {
19
- forward: 'forward',
20
- reverse: 'reverse',
21
- languages: 'languages',
19
+ convert_to_coordinates: 'convert-to-coordinates',
20
+ convert_to_3wa: 'convert-to-3wa',
21
+ available_languages: 'available-languages',
22
22
  autosuggest: 'autosuggest',
23
- standardblend: 'standardblend',
24
- autosuggest_ml: 'autosuggest-ml',
25
- standardblend_ml: 'standardblend-ml',
26
- grid: 'grid'
23
+ grid_section: 'grid-section'
27
24
  }.freeze
28
25
 
26
+ WRAPPER_VERSION = What3Words::VERSION
27
+
29
28
  def initialize(params)
30
29
  @key = params.fetch(:key)
31
30
  end
32
31
 
33
32
  attr_reader :key
34
33
 
35
- def forward(words, params = {})
36
- words_string = get_words_string words
37
- request_params = assemble_forward_request_params(words_string, params)
38
- response = request! :forward, request_params
39
- response
40
- end
41
-
42
- def reverse(position, params = {})
43
- request_params = assemble_reverse_request_params(position, params)
44
- response = request! :reverse, request_params
45
- response
46
- end
47
-
48
- def grid(bbox, params = {})
34
+ def convert_to_coordinates(words, params = {})
35
+ """
36
+ Take a 3 word address and turn it into a pair of coordinates.
37
+
38
+ Params
39
+ ------
40
+ :param string words: A 3 word address as a string
41
+ :param string format: Return data format type; can be one of json (the default), geojson
42
+ :rtype: Hash
43
+ """
44
+ words_string = get_words_string(words)
45
+ request_params = assemble_convert_to_coordinates_request_params(words_string, params)
46
+ request!(:convert_to_coordinates, request_params)
47
+ end
48
+
49
+ def convert_to_3wa(position, params = {})
50
+ """
51
+ Take latitude and longitude coordinates and turn them into a 3 word address.
52
+
53
+ Params
54
+ ------
55
+ :param array position: The coordinates of the location to convert to 3 word address
56
+ :param string format: Return data format type; can be one of json (the default), geojson
57
+ :param string language: A supported 3 word address language as an ISO 639-1 2 letter code.
58
+ :rtype: Hash
59
+ """
60
+ request_params = assemble_convert_to_3wa_request_params(position, params)
61
+ request!(:convert_to_3wa, request_params)
62
+ end
63
+
64
+ def grid_section(bbox, params = {})
65
+ """
66
+ Returns a section of the 3m x 3m what3words grid for a given area.
67
+
68
+ Params
69
+ ------
70
+ :param string bbox: Bounding box, specified by the northeast and southwest corner coordinates,
71
+ :param string format: Return data format type; can be one of json (the default), geojson
72
+ :rtype: Hash
73
+ """
49
74
  request_params = assemble_grid_request_params(bbox, params)
50
- response = request! :grid, request_params
51
- response
75
+ request!(:grid_section, request_params)
52
76
  end
53
77
 
54
- def languages
55
- request_params = assemble_common_request_params({})
56
- response = request! :languages, request_params
57
- response
58
- end
78
+ def available_languages
79
+ """
80
+ Retrieve a list of available 3 word languages.
59
81
 
60
- def autosuggest(addr, lang, focus = {}, clip = {}, params = {})
61
- request_params = assemble_autosuggest_request_params(addr, lang, focus,
62
- clip, params)
63
- response = request! :autosuggest, request_params
64
- response
82
+ :rtype: Hash
83
+ """
84
+ request_params = assemble_common_request_params({})
85
+ request!(:available_languages, request_params)
86
+ end
87
+
88
+ def autosuggest(input, params = {})
89
+ """
90
+ Returns a list of 3 word addresses based on user input and other parameters.
91
+
92
+ Params
93
+ ------
94
+ :param string input: The full or partial 3 word address to obtain suggestions for.
95
+ :param int n_results: The number of AutoSuggest results to return.
96
+ :param array focus: A location, specified as a latitude,longitude used to refine the results.
97
+ :param int n_focus_results: Specifies the number of results (must be <= n_results) within the results set which will have a focus.
98
+ :param string clip_to_country: Restricts autosuggest to only return results inside the countries specified by comma-separated list of uppercase ISO 3166-1 alpha-2 country codes.
99
+ :param array clip_to_bounding_box: Restrict autosuggest results to a bounding box, specified by coordinates.
100
+ :param array clip_to_circle: Restrict autosuggest results to a circle, specified by the center of the circle, latitude and longitude, and a distance in kilometres which represents the radius.
101
+ :param array clip_to_polygon: Restrict autosuggest results to a polygon, specified by a list of coordinates.
102
+ :param string input_type: For power users, used to specify voice input mode. Can be text (default), vocon-hybrid, nmdp-asr or generic-voice.
103
+ :param string prefer_land: Makes autosuggest prefer results on land to those in the sea.
104
+ :param string language: A supported 3 word address language as an ISO 639-1 2 letter code.
105
+ :rtype: Hash
106
+ """
107
+ request_params = assemble_autosuggest_request_params(input, params)
108
+ request!(:autosuggest, request_params)
109
+ end
110
+
111
+ def isPossible3wa(text)
112
+ """
113
+ Determines if the string passed in is the form of a three word address.
114
+ This does not validate whether it is a real address as it returns true for x.x.x
115
+
116
+ Params
117
+ ------
118
+ :param string text: text to check
119
+ :rtype: Boolean
120
+ """
121
+ regex_match = REGEX_3_WORD_ADDRESS
122
+ !(text.match(regex_match).nil?)
123
+ end
124
+
125
+ def findPossible3wa(text)
126
+ """
127
+ Searches the string passed in for all substrings in the form of a three word address.
128
+ This does not validate whether it is a real address as it will return x.x.x as a result
129
+
130
+ Params
131
+ ------
132
+ :param string text: text to check
133
+ :rtype: Array
134
+ """
135
+ regex_search = /[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002][^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}/
136
+ text.scan(regex_search)
137
+ end
138
+
139
+ def didYouMean(text)
140
+ """
141
+ Determines if the string passed in is almost in the form of a three word address.
142
+ This will return True for values such as 'filled-count-soap' and 'filled count soap'
143
+
144
+ Params
145
+ ------
146
+ :param string text: text to check
147
+ :rtype: Boolean
148
+ """
149
+ regex_match = /^\/?[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002 ,\\\-\/+'&\\:;|\u3000]{1,2}[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}[.\uFF61\u3002\uFF65\u30FB\uFE12\u17D4\u0964\u1362\u3002 ,\\\-\/+'&\\:;|\u3000]{1,2}[^0-9`~!@#$%^&*()+\-_=\[\{\]}\\|'<,.>?\/\";:£§º©®\s]{1,}$/
150
+ !(text.match(regex_match).nil?)
151
+ end
152
+
153
+ def isValid3wa(text)
154
+ """
155
+ Determines if the string passed in is a real three word address. It calls the API
156
+ to verify it refers to an actual place on earth.
157
+
158
+ Params
159
+ ------
160
+ :param String text: text to check
161
+
162
+ :rtype: Boolean
163
+ """
164
+ if isPossible3wa(text)
165
+ result = autosuggest(text, 'n-results': 1)
166
+ if result[:suggestions] && result[:suggestions].length > 0
167
+ return result[:suggestions][0][:words] == text
168
+ end
169
+ end
170
+ false
65
171
  end
66
172
 
67
- def autosuggest_ml(addr, lang, focus = {}, clip = {}, params = {})
68
- request_params = assemble_autosuggest_request_params(addr, lang, focus,
69
- clip, params)
70
- response = request! :autosuggest_ml, request_params
71
- response
72
- end
173
+ private
73
174
 
74
- def standardblend(addr, lang, focus = {}, params = {})
75
- request_params = assemble_standardblend_request_params(addr, lang, focus,
76
- params)
77
- response = request! :standardblend, request_params
78
- response
79
- end
175
+ def request!(endpoint_name, params)
176
+ headers = { "X-W3W-Wrapper": "what3words-Ruby/#{WRAPPER_VERSION}" }
177
+ response = RestClient.get(endpoint(endpoint_name), params: params, headers: headers)
178
+ parsed_response = JSON.parse(response.body)
80
179
 
81
- def standardblend_ml(addr, lang, focus = {}, params = {})
82
- request_params = assemble_standardblend_request_params(addr, lang, focus,
83
- params)
84
- response = request! :standardblend_ml, request_params
85
- response
86
- end
180
+ raise ResponseError, "#{parsed_response['code']}: #{parsed_response['message']}" if parsed_response['error'].to_s.strip != ''
87
181
 
88
- def assemble_common_request_params(params)
89
- h = { key: key }
90
- h[:lang] = params[:lang] if params[:lang]
91
- h[:format] = params[:format] if params[:format]
92
- h[:display] = params[:display] if params[:display]
93
- h
182
+ deep_symbolize_keys(parsed_response)
183
+ rescue RestClient::ExceptionWithResponse => e
184
+ handle_rest_client_error(e)
94
185
  end
95
- private :assemble_common_request_params
96
186
 
97
- def assemble_forward_request_params(words_string, params)
98
- h = { addr: words_string }
99
- h.merge(assemble_common_request_params(params))
187
+ def handle_rest_client_error(error)
188
+ parsed_response = JSON.parse(error.response)
189
+ raise ResponseError, "#{parsed_response['code']}: #{parsed_response['message']}" if parsed_response['error']
190
+ raise error
100
191
  end
101
- private :assemble_forward_request_params
102
192
 
103
- def assemble_grid_request_params(bbox, params)
104
- h = { bbox: bbox }
105
- h.merge(assemble_common_request_params(params))
106
- end
107
- private :assemble_grid_request_params
108
-
109
- def assemble_reverse_request_params(position, params)
110
- h = { coords: position.join(',') }
111
- h.merge(assemble_common_request_params(params))
193
+ def get_words_string(words)
194
+ words_string = words.is_a?(Array) ? words.join('.') : words.to_s
195
+ check_words(words_string)
196
+ words_string
112
197
  end
113
- private :assemble_reverse_request_params
114
198
 
115
- def assemble_autosuggest_request_params(addr, lang, focus, clip, params)
116
- h = { addr: addr }
117
- h[:lang] = lang
118
- h[:focus] = focus.join(',') if focus.respond_to? :join
119
- h[:clip] = clip if clip.respond_to? :to_str
120
- h.merge(assemble_common_request_params(params))
199
+ def check_words(words)
200
+ raise WordError, "#{words} is not a valid 3 word address" unless REGEX_3_WORD_ADDRESS.match?(words)
121
201
  end
122
- private :assemble_autosuggest_request_params
123
202
 
124
- def assemble_standardblend_request_params(addr, lang, focus, params)
125
- h = { addr: addr }
126
- h[:lang] = lang
127
- h[:focus] = focus.join(',') if focus.respond_to? :join
128
- h.merge(assemble_common_request_params(params))
203
+ def assemble_common_request_params(params)
204
+ { key: key }.merge(params.slice(:language, :format))
129
205
  end
130
- private :assemble_standardblend_request_params
131
206
 
132
- def request!(endpoint_name, params)
133
- # puts endpoint_name.inspect
134
- # puts params.inspect
135
- begin
136
- response = RestClient.get endpoint(endpoint_name), params: params
137
- rescue => e
138
- response = e.response
139
- end
140
- # puts '#{response.to_str}'
141
- # puts 'Response status: #{response.code}'
142
- response = JSON.parse(response.body)
143
- if response['code'].to_s.strip != ''
144
- raise ResponseError, "#{response['code']}: #{response['message']}"
145
- end
146
- deep_symbolize_keys(response)
207
+ def assemble_convert_to_coordinates_request_params(words_string, params)
208
+ { words: words_string }.merge(assemble_common_request_params(params))
147
209
  end
148
- private :request!
149
210
 
150
- def get_words_string(words)
151
- if words.respond_to? :to_str
152
- w = words
153
- elsif words.respond_to? :join
154
- w = words.join('.')
155
- else
156
- raise Error, "Cannot get words string for #{words.inspect}"
157
- end
158
- check_words w
211
+ def assemble_convert_to_3wa_request_params(position, params)
212
+ { coordinates: position.join(',') }.merge(assemble_common_request_params(params))
159
213
  end
160
- private :get_words_string
161
214
 
162
- def check_words(words)
163
- unless REGEX_3_WORD_ADDRESS.match(words)
164
- raise WordError, "#{words} is not a valid 3 word address"
165
- end
166
- words
167
- end
168
- private :check_words
169
-
170
- def deep_symbolize_keys(i)
171
- if i.is_a? Hash
172
- ni = {}
173
- # rubocop:disable Metrics/LineLength
174
- i.each { |k, v| ni[k.respond_to?(:to_sym) ? k.to_sym : k] = deep_symbolize_keys(v) }
175
- # rubocop:enable Metrics/LineLength
176
- elsif i.is_a? Array
177
- ni = i.map(&method(:deep_symbolize_keys))
215
+ def assemble_grid_request_params(bbox, params)
216
+ { 'bounding-box': bbox }.merge(assemble_common_request_params(params))
217
+ end
218
+
219
+ def assemble_autosuggest_request_params(input, params)
220
+ result = { input: input }
221
+ result[:'n-results'] = params[:'n-results'].to_i if params[:'n-results']
222
+ result[:focus] = params[:focus].join(',') if params[:focus].respond_to?(:join)
223
+ result[:'n-focus-results'] = params[:'n-focus-results'].to_i if params[:'n-focus-results']
224
+ result[:'clip-to-country'] = params[:'clip-to-country'] if params[:'clip-to-country'].respond_to?(:to_str)
225
+ result[:'clip-to-bounding-box'] = params[:'clip-to-bounding-box'].join(',') if params[:'clip-to-bounding-box'].respond_to?(:join)
226
+ result[:'clip-to-circle'] = params[:'clip-to-circle'].join(',') if params[:'clip-to-circle'].respond_to?(:join)
227
+ result[:'clip-to-polygon'] = params[:'clip-to-polygon'].join(',') if params[:'clip-to-polygon'].respond_to?(:join)
228
+ result[:'input-type'] = params[:'input-type'] if params[:'input-type'].respond_to?(:to_str)
229
+ result[:'prefer-land'] = params[:'prefer-land'] if params[:'prefer-land']
230
+ result.merge(assemble_common_request_params(params))
231
+ end
232
+
233
+ def deep_symbolize_keys(value)
234
+ case value
235
+ when Hash
236
+ value.transform_keys(&:to_sym).transform_values { |v| deep_symbolize_keys(v) }
237
+ when Array
238
+ value.map { |v| deep_symbolize_keys(v) }
178
239
  else
179
- ni = i
240
+ value
180
241
  end
181
-
182
- ni
183
- end
184
-
185
- def base_url
186
- BASE_URL
187
242
  end
188
- private :base_url
189
243
 
190
244
  def endpoint(name)
191
- base_url + ENDPOINTS.fetch(name)
245
+ BASE_URL + ENDPOINTS.fetch(name)
192
246
  end
193
247
  end
194
248
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # What3Words v3 API wrapper
1
4
  module What3Words
2
- VERSION = '2.2.0'.freeze
5
+ VERSION = '3.1.0' unless defined?(::What3Words::VERSION)
3
6
  end
data/lib/what3words.rb CHANGED
@@ -1,4 +1,6 @@
1
- module What3Words #:nodoc: don't document this
1
+ # frozen_string_literal: true
2
+
3
+ module What3Words # :nodoc: don't document this
2
4
  end
3
5
 
4
6
  require 'what3words/api'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: what3words
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - what3words
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-03 00:00:00.000000000 Z
11
+ date: 2024-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -73,79 +73,67 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '3.4'
75
75
  - !ruby/object:Gem::Dependency
76
- name: webmock
76
+ name: rubocop
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '2.0'
81
+ version: 0.48.1
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '2.0'
88
+ version: 0.48.1
89
89
  - !ruby/object:Gem::Dependency
90
- name: rubocop
90
+ name: webmock
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.48.1
95
+ version: '3.0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 0.48.1
103
- description:
102
+ version: '3.0'
103
+ description: A Ruby wrapper for the what3words API
104
104
  email:
105
105
  - development@what3words.com
106
106
  executables: []
107
107
  extensions: []
108
108
  extra_rdoc_files: []
109
109
  files:
110
- - ".editorconfig"
111
- - ".gitignore"
112
- - ".travis.yml"
113
- - Gemfile
114
- - LICENSE.txt
115
110
  - README.md
116
- - Rakefile
117
111
  - lib/what3words.rb
118
112
  - lib/what3words/api.rb
119
113
  - lib/what3words/version.rb
120
- - spec/config.sample.yaml
121
- - spec/lib/what3words/what3words_api_spec.rb
122
- - spec/spec_helper.rb
123
- - what3words.gemspec
124
- homepage: http://rubygems.org/gems/what3words
114
+ homepage: https://github.com/what3words/w3w-ruby-wrapper
125
115
  licenses:
126
116
  - MIT
127
- metadata: {}
117
+ metadata:
118
+ documentation_uri: https://www.rubydoc.info/gems/what3words
119
+ source_code_uri: https://github.com/what3words/w3w-ruby-wrapper
128
120
  post_install_message:
129
121
  rdoc_options: []
130
122
  require_paths:
131
123
  - lib
132
124
  required_ruby_version: !ruby/object:Gem::Requirement
133
125
  requirements:
134
- - - ">="
126
+ - - "~>"
135
127
  - !ruby/object:Gem::Version
136
- version: '0'
128
+ version: '2.6'
137
129
  required_rubygems_version: !ruby/object:Gem::Requirement
138
130
  requirements:
139
131
  - - ">="
140
132
  - !ruby/object:Gem::Version
141
133
  version: '0'
142
134
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.5.2
135
+ rubygems_version: 3.0.3.1
145
136
  signing_key:
146
137
  specification_version: 4
147
- summary: what3words API wrapper in Ruby
148
- test_files:
149
- - spec/config.sample.yaml
150
- - spec/lib/what3words/what3words_api_spec.rb
151
- - spec/spec_helper.rb
138
+ summary: Ruby wrapper for the what3words API
139
+ test_files: []
data/.editorconfig DELETED
@@ -1,17 +0,0 @@
1
- # EditorConfig is awesome: http://EditorConfig.org
2
-
3
- # top-most EditorConfig file
4
- root = true
5
-
6
- # Unix-style newlines with a newline ending every file
7
- [*]
8
- end_of_line = lf
9
- insert_final_newline = true
10
- trim_trailing_whitespace = true
11
-
12
- # Set default charset
13
- charset = utf-8
14
-
15
- # Indentation
16
- indent_style = space
17
- indent_size = 2
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- Gemfile.lock
6
- coverage
7
- doc/
8
- lib/bundler/man
9
- pkg
10
- rdoc
11
- spec/reports
12
- test/tmp
13
- test/version_tmp
14
- tmp
15
- .api_key
16
- .rspec
17
- spec/config.yaml
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4
4
- script: rake rubocop spec
5
- notifications:
6
- slack:
7
- secure: DvejcrOH6RdAdrGEPLUrnia9cES8iCHVlVSFAMwx2vaR/I3T9bfUiHnb3VHfiqx4cvDL+9wT3opG0sZkUCFJGqzA3E//VObKNXjwUFCUptFG68qgR7LZ3vDatWlUqU+32gWeYaHM3FpNP2E/IARjphaiF3jRUZbronqVzJZN2MbMsUYBeGq7v0AaLkgbxVgOWtBnMVcBPOnarEJqHyJlqQ2unYnIy+GNoOFtPMPNZobYTf0zxrycldYpP937yT4CTsY3I7RxuEtnY2sPYW+eFBESGLg6EfnjeOruROY+b9cSHIh1Qzr7Oup6a+oQ3+vCvLbYsGpEO04RTeTTtOGc7aRlUylmvuFPi7qQwOTZ+4KD5aIBh4p7bQiPfvAeqDU4pVJxPHHZirgjFpUpAvofj48SvDgwX9cFyAhAlDZ9qBOctmhphW9KNkcAW4MY421AdVAjFWwc5CU8G5oPdKcyWam3ZB3nHwKgZm6LLAcZgbG0rjZT+iPeQBvTKH3kPx7E1CkxZNkEralHJ3l+bDwY3GdzsgcMpT3bWNl3pLszFzgXljDScMU8my1+xjDQINEnI3TCJA4MhKkzYkRgfrEBkgPb2SiF7qnhbyMzSFbCU4jsM1MLQZolNG9EsjsxJLuL4YTC2wKOHajViUUeaCNIcNU5UXBQuit93RyMu7RrLRM=
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
data/LICENSE.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2016, 2017 What3Words Limited
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- require 'bundler/gem_tasks'
2
-
3
- begin
4
- require 'rubocop/rake_task'
5
- RuboCop::RakeTask.new(:rubocop) do |t|
6
- t.options = ['--display-cop-names']
7
- end
8
- require 'rspec/core/rake_task'
9
- RSpec::Core::RakeTask.new(:spec)
10
- rescue LoadError => e
11
- print e
12
- end
@@ -1 +0,0 @@
1
- # config.sample.yaml