os_map_ref 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -8
- data/Rakefile +20 -7
- data/lib/os_map_ref.rb +2 -0
- data/lib/os_map_ref/error.rb +2 -0
- data/lib/os_map_ref/input_processor.rb +2 -0
- data/lib/os_map_ref/location.rb +2 -0
- data/lib/os_map_ref/version.rb +3 -1
- data/spec/os_map_ref/input_processor_spec.rb +109 -0
- data/spec/os_map_ref/location_spec.rb +237 -0
- data/spec/os_map_ref_spec.rb +12 -0
- data/spec/spec_helper.rb +75 -0
- metadata +35 -35
- data/.codeclimate.yml +0 -19
- data/.gitignore +0 -9
- data/.rspec +0 -2
- data/.rubocop.yml +0 -122
- data/.travis.yml +0 -31
- data/CHANGELOG.md +0 -61
- data/Gemfile +0 -4
- data/os_map_ref.gemspec +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 408a8566ec988e46917ddec0ab4540092b446dcd
|
4
|
+
data.tar.gz: 91cbf8775320c6fab6668a02b8ef299e8c12525b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a374de093e186f14ec61721c1652b25549d66ec66c027e1c9f9f2640a8bb778843c04a4954e60bde30fba3841b391e0d3ee08c53f8eb22c189b953c0bab324c
|
7
|
+
data.tar.gz: 82334f32ea0d3f8e0c7f9c1f528211e944a0cc34f79ea9ea1fa5c777b845cde1ad5adbf24b7de7917083ede26cc17a7d35233f23adc938ae37bf8ded92759be9
|
data/README.md
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# OsMapRef
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/DEFRA/
|
4
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/
|
5
|
-
[![Test Coverage](https://api.codeclimate.com/v1/badges/
|
6
|
-
[![security](https://hakiri.io/github/DEFRA/
|
7
|
-
[![Dependency Status](https://dependencyci.com/github/DEFRA/os_map_ref/badge)](https://dependencyci.com/github/DEFRA/os_map_ref)
|
3
|
+
[![Build Status](https://travis-ci.org/DEFRA/os-map-ref.svg?branch=master)](https://travis-ci.org/DEFRA/os-map-ref)
|
4
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/17df026b62cc3912f842/maintainability)](https://codeclimate.com/github/DEFRA/os-map-ref/maintainability)
|
5
|
+
[![Test Coverage](https://api.codeclimate.com/v1/badges/17df026b62cc3912f842/test_coverage)](https://codeclimate.com/github/DEFRA/os-map-ref/test_coverage)
|
6
|
+
[![security](https://hakiri.io/github/DEFRA/os-map-ref/master.svg)](https://hakiri.io/github/DEFRA/os-map-ref/master)
|
8
7
|
[![Gem Version](https://badge.fury.io/rb/os_map_ref.svg)](https://badge.fury.io/rb/os_map_ref)
|
9
8
|
|
10
9
|
This gem allows you to gather U.K. Ordnance Survey Eastings, North, and Map
|
@@ -83,9 +82,7 @@ puts "Longitude = #{location.lon} in radians."
|
|
83
82
|
|
84
83
|
## Development
|
85
84
|
|
86
|
-
After checking out the repo, run `bin/setup` to install dependencies.
|
87
|
-
Then, run `rake test` to run the tests. You can also run `bin/console`
|
88
|
-
for an interactive prompt that will allow you to experiment.
|
85
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
89
86
|
|
90
87
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
91
88
|
|
data/Rakefile
CHANGED
@@ -1,16 +1,29 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "bundler/setup"
|
5
|
+
rescue LoadError
|
6
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
7
|
+
end
|
8
|
+
|
9
|
+
Bundler::GemHelper.install_tasks
|
3
10
|
|
11
|
+
# This is wrapped to prevent an error when rake is called in environments where
|
12
|
+
# rspec may not be available, e.g. production. As such we don't need to handle
|
13
|
+
# the error.
|
14
|
+
# rubocop:disable Lint/HandleExceptions
|
4
15
|
begin
|
5
16
|
require "rspec/core/rake_task"
|
17
|
+
|
6
18
|
RSpec::Core::RakeTask.new(:spec)
|
7
|
-
rescue LoadError => err
|
8
|
-
puts "Load error: #{err}"
|
9
|
-
end
|
10
19
|
|
11
|
-
task
|
20
|
+
task default: :spec
|
21
|
+
rescue LoadError
|
22
|
+
# no rspec available
|
23
|
+
end
|
24
|
+
# rubocop:enable Lint/HandleExceptions
|
12
25
|
|
13
|
-
task
|
26
|
+
require "github_changelog_generator/task"
|
14
27
|
|
15
28
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
16
29
|
end
|
data/lib/os_map_ref.rb
CHANGED
data/lib/os_map_ref/error.rb
CHANGED
data/lib/os_map_ref/location.rb
CHANGED
data/lib/os_map_ref/version.rb
CHANGED
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe OsMapRef::InputProcessor do
|
6
|
+
|
7
|
+
let(:map_reference) { "ST 58901 71053" }
|
8
|
+
let(:long_map_reference) { "HT 58901 71053" }
|
9
|
+
let(:easting) { "358901" }
|
10
|
+
let(:northing) { "171053" }
|
11
|
+
|
12
|
+
describe ".new" do
|
13
|
+
context "with map reference" do
|
14
|
+
it "should return formated map reference" do
|
15
|
+
input_cleaner = described_class.new(map_reference)
|
16
|
+
expect(input_cleaner.params[:map_reference]).to eq(map_reference)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "with map reference without spaces" do
|
21
|
+
it "should return formated map reference" do
|
22
|
+
input_cleaner = described_class.new(map_reference.gsub(/\s+/, ""))
|
23
|
+
expect(input_cleaner.params[:map_reference]).to eq(map_reference)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "with lower case map reference" do
|
28
|
+
it "should return formated map reference" do
|
29
|
+
input_cleaner = described_class.new(map_reference.downcase)
|
30
|
+
expect(input_cleaner.params[:map_reference]).to eq(map_reference)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "with long map reference" do
|
35
|
+
it "should return formated map reference" do
|
36
|
+
input_cleaner = described_class.new(long_map_reference)
|
37
|
+
expect(input_cleaner.params[:map_reference]).to eq(long_map_reference)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with long map reference without spaces" do
|
42
|
+
it "should return formated map reference" do
|
43
|
+
input_cleaner = described_class.new(long_map_reference.gsub(/\s+/, ""))
|
44
|
+
expect(input_cleaner.params[:map_reference]).to eq(long_map_reference)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "with six figure map reference" do
|
49
|
+
let(:map_reference) { "ST589710" }
|
50
|
+
it "should return formated map reference" do
|
51
|
+
input_cleaner = described_class.new(map_reference)
|
52
|
+
expect(input_cleaner.params[:map_reference]).to eq("ST 58900 71000")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "with easting and northings" do
|
57
|
+
let(:expected) { { easting: easting, northing: northing } }
|
58
|
+
|
59
|
+
it "should handle easting and nothing separated by space" do
|
60
|
+
input = [easting, northing].join(" ")
|
61
|
+
input_cleaner = described_class.new(input)
|
62
|
+
expect(input_cleaner.params).to eq(expected)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should handle easting and nothing separated by comma" do
|
66
|
+
input = [easting, northing].join(",")
|
67
|
+
input_cleaner = described_class.new(input)
|
68
|
+
expect(input_cleaner.params).to eq(expected)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should handle easting and nothing separated by space and space" do
|
72
|
+
input = [easting, northing].join(", ")
|
73
|
+
input_cleaner = described_class.new(input)
|
74
|
+
expect(input_cleaner.params).to eq(expected)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "with short eastings and northings" do
|
79
|
+
it "should pad out short input" do
|
80
|
+
input = "123 456"
|
81
|
+
input_cleaner = described_class.new(input)
|
82
|
+
expected = { easting: "123000", northing: "456000" }
|
83
|
+
expect(input_cleaner.params).to eq(expected)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "with short eastings and northings, but longer northing" do
|
88
|
+
it "should pad out short input" do
|
89
|
+
input = "456 1234"
|
90
|
+
input_cleaner = described_class.new(input)
|
91
|
+
expected = { easting: "456000", northing: "1234000" }
|
92
|
+
expect(input_cleaner.params).to eq(expected)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "with decimals in eastings and northings" do
|
97
|
+
it "should pass on the decimal elements" do
|
98
|
+
input = "308901.4,101053.3"
|
99
|
+
input_cleaner = described_class.new(input)
|
100
|
+
expected = { easting: "308901.4", northing: "101053.3" }
|
101
|
+
expect(input_cleaner.params).to eq(expected)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should raise error on unknown input" do
|
106
|
+
expect { described_class.new("unknown").params }.to raise_error(OsMapRef::Error)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,237 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe OsMapRef::Location do
|
6
|
+
|
7
|
+
let(:map_reference) { "ST 58901 71053" }
|
8
|
+
let(:easting) { "358901" }
|
9
|
+
let(:northing) { "171053" }
|
10
|
+
let(:long_map_reference) { "HT 58901 71053" }
|
11
|
+
let(:long_northing) { "1171053" }
|
12
|
+
|
13
|
+
describe ".for" do
|
14
|
+
it "should accept a map reference" do
|
15
|
+
location = described_class.for map_reference
|
16
|
+
expect(location.map_reference).to eq(map_reference)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should accept a map reference without space" do
|
20
|
+
location = described_class.for map_reference.delete(" ")
|
21
|
+
expect(location.map_reference).to eq(map_reference)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should accept a downcase map reference" do
|
25
|
+
location = described_class.for map_reference.downcase
|
26
|
+
expect(location.map_reference).to eq(map_reference)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should accept easting and northing" do
|
30
|
+
location = described_class.for [easting, northing].join(" ")
|
31
|
+
expect(location.map_reference).to eq(map_reference)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe ".new" do
|
36
|
+
it "should accept easting and northing strings" do
|
37
|
+
location = described_class.new easting: easting.to_s, northing: northing.to_s
|
38
|
+
expect(location.easting).to eq(easting)
|
39
|
+
expect(location.northing).to eq(northing)
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when initiated with map_reference" do
|
43
|
+
let(:location) { described_class.new map_reference: map_reference }
|
44
|
+
|
45
|
+
describe ".map_reference" do
|
46
|
+
it "should return input" do
|
47
|
+
expect(location.map_reference).to eq(map_reference)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe ".easting" do
|
52
|
+
it "should be calculated from map_reference" do
|
53
|
+
expect(location.easting).to eq(easting)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe ".northing" do
|
58
|
+
it "should be calculated from map_reference" do
|
59
|
+
expect(location.northing).to eq(northing)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when initiated with easting and northing" do
|
65
|
+
let(:location) { described_class.new easting: easting, northing: northing }
|
66
|
+
|
67
|
+
describe ".map_reference" do
|
68
|
+
it "should be calculated from easting and northing" do
|
69
|
+
expect(location.map_reference).to eq(map_reference)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe ".easting" do
|
74
|
+
it "should return input" do
|
75
|
+
expect(location.easting).to eq(easting)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe ".northing" do
|
80
|
+
it "should return input" do
|
81
|
+
expect(location.northing).to eq(northing)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe ".grid_easting" do
|
86
|
+
it "should be first number of easting" do
|
87
|
+
expect(location.grid_easting).to eq(3)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe ".short_easting" do
|
92
|
+
it "should be number after first number of easting" do
|
93
|
+
expect(location.short_easting).to eq("58901")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe ".grid_northing" do
|
98
|
+
it "should be first number of northing" do
|
99
|
+
expect(location.grid_northing).to eq(1)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe ".short_northing" do
|
104
|
+
it "should be number after first number of northing" do
|
105
|
+
expect(location.short_northing).to eq("71053")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context "when initiated with easting and long northing" do
|
111
|
+
let(:location) { described_class.new easting: easting, northing: long_northing }
|
112
|
+
|
113
|
+
describe ".grid_northing" do
|
114
|
+
it "should be the first two numbers of northing" do
|
115
|
+
expect(location.grid_northing).to eq(11)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe ".short_northing" do
|
120
|
+
it "should be the number after the first two numbers of northing" do
|
121
|
+
expect(location.short_northing).to eq("71053")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context "when eastings and northing second character a zero" do
|
127
|
+
let(:map_reference) { "ST 08901 01053" }
|
128
|
+
let(:easting) { "308901" }
|
129
|
+
let(:northing) { "101053" }
|
130
|
+
let(:location) { described_class.new easting: easting, northing: northing }
|
131
|
+
|
132
|
+
describe ".map_reference" do
|
133
|
+
it "should be calculated from easting and northing" do
|
134
|
+
expect(location.map_reference).to eq(map_reference)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "when eastings and northing contain decimals" do
|
140
|
+
let(:map_reference) { "ST 08901 01053" }
|
141
|
+
let(:easting) { "308901.4" }
|
142
|
+
let(:northing) { "101053.3" }
|
143
|
+
let(:location) { described_class.new easting: easting, northing: northing }
|
144
|
+
|
145
|
+
describe ".map_reference" do
|
146
|
+
it "should be calculated from easting and northing" do
|
147
|
+
expect(location.map_reference).to eq(map_reference)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
context "when eastings and northing is one unit into grid from origin" do
|
153
|
+
let(:map_reference) { "SV 00001 00001" }
|
154
|
+
let(:easting) { "000001" }
|
155
|
+
let(:northing) { "000001" }
|
156
|
+
|
157
|
+
context "and eastings and northings defined" do
|
158
|
+
let(:location) { described_class.new easting: easting, northing: northing }
|
159
|
+
|
160
|
+
describe ".map_reference" do
|
161
|
+
it "should be calculated from easting and northing" do
|
162
|
+
expect(location.map_reference).to eq(map_reference)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context "and map reference is defined" do
|
168
|
+
let(:location) { described_class.new map_reference: map_reference }
|
169
|
+
|
170
|
+
describe ".easting" do
|
171
|
+
it "should be calculated from map_reference" do
|
172
|
+
expect(location.easting).to eq(easting)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe ".northing" do
|
177
|
+
it "should be calculated from map_reference" do
|
178
|
+
expect(location.northing).to eq(northing)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context "when grid_reference prefix not in grid" do
|
184
|
+
let(:map_reference) { "zz 00001 00001" }
|
185
|
+
let(:location) { described_class.new map_reference: map_reference }
|
186
|
+
|
187
|
+
it "should raise an exception" do
|
188
|
+
expect { location.easting }.to raise_error(OsMapRef::Error)
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context "when northing is long" do
|
195
|
+
let(:map_reference) { long_map_reference }
|
196
|
+
let(:northing) { long_northing }
|
197
|
+
|
198
|
+
context "and eastings and northings defined" do
|
199
|
+
let(:location) { described_class.new easting: easting, northing: northing }
|
200
|
+
|
201
|
+
describe ".map_reference" do
|
202
|
+
it "should be calculated from easting and northing" do
|
203
|
+
expect(location.map_reference).to eq(map_reference)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
context "and map reference is defined" do
|
209
|
+
let(:location) { described_class.new map_reference: map_reference }
|
210
|
+
|
211
|
+
describe ".easting" do
|
212
|
+
it "should be calculated from map_reference" do
|
213
|
+
expect(location.easting).to eq(easting)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
describe ".northing" do
|
218
|
+
it "should be calculated from map_reference" do
|
219
|
+
expect(location.northing).to eq(northing)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe ".remove_decimals" do
|
227
|
+
let(:location) { described_class.new map_reference: map_reference }
|
228
|
+
|
229
|
+
it "should return the number if no decimals" do
|
230
|
+
expect(location.remove_decimals("308901")).to eq("308901")
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should return the number with decimals removed" do
|
234
|
+
expect(location.remove_decimals("308901.4")).to eq("308901")
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Code coverage
|
4
|
+
require "simplecov"
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
# any custom configs like groups and filters can be here at a central place
|
8
|
+
|
9
|
+
# Standard filters
|
10
|
+
add_filter "lib/os_map_ref/version"
|
11
|
+
# It's standard to ignore the spec folder when determining coverage
|
12
|
+
add_filter "/spec/"
|
13
|
+
|
14
|
+
# You can make Simplecov ignore sections of by wrapping them in # :nocov:
|
15
|
+
# tags. However without knowledge of this `nocov` doesn't mean a lot so here
|
16
|
+
# we take advantage of a feature that allows us to use a custom token to do
|
17
|
+
# the same thing `nocov` does. Now in our code any sections we want to exclude
|
18
|
+
# from test coverage stats we wrap in # :simplecov_ignore: tokens.
|
19
|
+
# https://github.com/colszowka/simplecov#ignoringskipping-code
|
20
|
+
nocov_token "simplecov_ignore"
|
21
|
+
end
|
22
|
+
|
23
|
+
require_relative "../lib/os_map_ref"
|
24
|
+
|
25
|
+
RSpec.configure do |config|
|
26
|
+
|
27
|
+
config.expect_with :rspec do |expectations|
|
28
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
29
|
+
# and `failure_message` of custom matchers include text for helper methods
|
30
|
+
# defined using `chain`, e.g.:
|
31
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
32
|
+
# # => "be bigger than 2 and smaller than 4"
|
33
|
+
# ...rather than:
|
34
|
+
# # => "be bigger than 2"
|
35
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
36
|
+
end
|
37
|
+
config.mock_with :rspec do |mocks|
|
38
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
39
|
+
# a real object. This is generally recommended, and will default to
|
40
|
+
# `true` in RSpec 4.
|
41
|
+
mocks.verify_partial_doubles = true
|
42
|
+
end
|
43
|
+
|
44
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
45
|
+
# be too noisy due to issues in dependencies.
|
46
|
+
config.warnings = true
|
47
|
+
|
48
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
49
|
+
# file, and it's useful to allow more verbose output when running an
|
50
|
+
# individual spec file.
|
51
|
+
if config.files_to_run.one?
|
52
|
+
# Use the documentation formatter for detailed output,
|
53
|
+
# unless a formatter has already been configured
|
54
|
+
# (e.g. via a command-line flag).
|
55
|
+
config.default_formatter = "doc"
|
56
|
+
end
|
57
|
+
|
58
|
+
# Print the 10 slowest examples and example groups at the
|
59
|
+
# end of the spec run, to help surface which specs are running
|
60
|
+
# particularly slow.
|
61
|
+
# config.profile_examples = 2
|
62
|
+
|
63
|
+
# Run specs in random order to surface order dependencies. If you find an
|
64
|
+
# order dependency and want to debug it, you can fix the order by providing
|
65
|
+
# the seed, which is printed after each run.
|
66
|
+
# --seed 1234
|
67
|
+
config.order = :random
|
68
|
+
|
69
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
70
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
71
|
+
# test failures related to randomization by passing the same `--seed` value
|
72
|
+
# as the one that triggered the failure.
|
73
|
+
Kernel.srand config.seed
|
74
|
+
|
75
|
+
end
|
metadata
CHANGED
@@ -1,73 +1,73 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: os_map_ref
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Defra
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: github_changelog_generator
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.8'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: simplecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -88,13 +88,6 @@ executables: []
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
-
- ".codeclimate.yml"
|
92
|
-
- ".gitignore"
|
93
|
-
- ".rspec"
|
94
|
-
- ".rubocop.yml"
|
95
|
-
- ".travis.yml"
|
96
|
-
- CHANGELOG.md
|
97
|
-
- Gemfile
|
98
91
|
- LICENSE
|
99
92
|
- README.md
|
100
93
|
- Rakefile
|
@@ -105,10 +98,13 @@ files:
|
|
105
98
|
- lib/os_map_ref/input_processor.rb
|
106
99
|
- lib/os_map_ref/location.rb
|
107
100
|
- lib/os_map_ref/version.rb
|
108
|
-
- os_map_ref.
|
109
|
-
|
101
|
+
- spec/os_map_ref/input_processor_spec.rb
|
102
|
+
- spec/os_map_ref/location_spec.rb
|
103
|
+
- spec/os_map_ref_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
homepage: https://github.com/DEFRA/os-map-ref
|
110
106
|
licenses:
|
111
|
-
-
|
107
|
+
- The Open Government Licence (OGL) Version 3
|
112
108
|
metadata: {}
|
113
109
|
post_install_message:
|
114
110
|
rdoc_options: []
|
@@ -118,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
114
|
requirements:
|
119
115
|
- - ">="
|
120
116
|
- !ruby/object:Gem::Version
|
121
|
-
version: '
|
117
|
+
version: '2.4'
|
122
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
119
|
requirements:
|
124
120
|
- - ">="
|
@@ -126,9 +122,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
122
|
version: '0'
|
127
123
|
requirements: []
|
128
124
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.6.
|
125
|
+
rubygems_version: 2.6.14
|
130
126
|
signing_key:
|
131
127
|
specification_version: 4
|
132
128
|
summary: A tool to help handle UK Ordnance Survey map references, in particular to
|
133
129
|
convert them to other coordinate systems
|
134
|
-
test_files:
|
130
|
+
test_files:
|
131
|
+
- spec/spec_helper.rb
|
132
|
+
- spec/os_map_ref/location_spec.rb
|
133
|
+
- spec/os_map_ref/input_processor_spec.rb
|
134
|
+
- spec/os_map_ref_spec.rb
|
data/.codeclimate.yml
DELETED
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
TargetRubyVersion: 2.2
|
3
|
-
# Cop names are not displayed in offense messages by default. We find it useful to include this information so we can
|
4
|
-
# use it to investigate what the fix may be.
|
5
|
-
DisplayCopNames: true
|
6
|
-
# Style guide URLs are not displayed in offense messages by default. Again we find it useful to go straight to the
|
7
|
-
# documentation for a rule when investigating what the fix may be.
|
8
|
-
DisplayStyleGuide: true
|
9
|
-
Include:
|
10
|
-
- "**/*.gemspec"
|
11
|
-
- "**/*.rake"
|
12
|
-
- "**/*.rb"
|
13
|
-
- "**/Gemfile"
|
14
|
-
- "**/Rakefile"
|
15
|
-
Exclude:
|
16
|
-
- "**/bin/*"
|
17
|
-
|
18
|
-
# Rubymine disagrees and not sure how to fix Rubymine indentation right now
|
19
|
-
Layout/CaseIndentation:
|
20
|
-
Enabled: false
|
21
|
-
|
22
|
-
# We believe it looks cluttered not having the ability to have empty lines after
|
23
|
-
# the module, class, and block declarations
|
24
|
-
Layout/EmptyLinesAroundBlockBody:
|
25
|
-
Enabled: false
|
26
|
-
Layout/EmptyLinesAroundModuleBody:
|
27
|
-
Enabled: false
|
28
|
-
Layout/EmptyLinesAroundClassBody:
|
29
|
-
Enabled: false
|
30
|
-
|
31
|
-
# Without this exclusion a line like this `expect { subject.call }` will get
|
32
|
-
# flagged as an error by Rubocop. This is a deliberate idiom in rspec so rather
|
33
|
-
# than add exceptions where it is used, we exclude spec's from this rule here.
|
34
|
-
# https://github.com/bbatsov/rubocop/issues/4222
|
35
|
-
Lint/AmbiguousBlockAssociation:
|
36
|
-
Exclude:
|
37
|
-
- "spec/**/*"
|
38
|
-
|
39
|
-
# TODO: Understand what the issue is and whether this needs to be more formally disabled (i.e. the dev team agree)
|
40
|
-
# We don't understand this for now - seems to prevent perfectly reasonable meta-programming
|
41
|
-
Lint/NestedMethodDefinition:
|
42
|
-
Enabled: false
|
43
|
-
|
44
|
-
# We felt as a team that the default size of 15 was too low, and blocked what to us are sound methods which would not
|
45
|
-
# add any value if broken up, for exampler composer type methods. Therefore we agreed to up the score to 20 to allow
|
46
|
-
# for these types of methods
|
47
|
-
Metrics/AbcSize:
|
48
|
-
Max: 40
|
49
|
-
|
50
|
-
# We don't feel we can help having a large gemspec, hence we exclude it.
|
51
|
-
# We don't feel it makes sense to split specs and factories over multiple files,
|
52
|
-
# or when in a context be forced to try and come up with slightly different ones
|
53
|
-
# in order to reduce the block length. Hence we exclude specs and factories from
|
54
|
-
# this rule.
|
55
|
-
# Shared examples are the same as specs, but don't have the _spec.rb extension
|
56
|
-
# hence they are listed separately
|
57
|
-
Metrics/BlockLength:
|
58
|
-
Exclude:
|
59
|
-
- "**/*.gemspec"
|
60
|
-
- "**/spec/**/*_spec.rb"
|
61
|
-
- "**/spec/**/*_factory.rb"
|
62
|
-
- "**/spec/shared_examples/*.rb"
|
63
|
-
|
64
|
-
# We believe the default of 10 lines for a method length is too restrictive and often quickly hit just because we need
|
65
|
-
# to specify the namesspace, class and method before then doing something with it.
|
66
|
-
Metrics/MethodLength:
|
67
|
-
Max: 30
|
68
|
-
Metrics/ModuleLength:
|
69
|
-
Max: 400
|
70
|
-
Exclude:
|
71
|
-
- "**/spec/**/*_spec.rb"
|
72
|
-
|
73
|
-
# We believe the default 80 characters is too restrictive and that lines can still be readable and maintainable
|
74
|
-
# when no more than 120 characters. This also allows us to maximise our screen space.
|
75
|
-
Metrics/LineLength:
|
76
|
-
Max: 120
|
77
|
-
Exclude:
|
78
|
-
- "**spec/factories/**/*.rb"
|
79
|
-
- "**spec/features/**/*_spec.rb"
|
80
|
-
- "**spec/models/**/*_spec.rb"
|
81
|
-
- "**spec/policies/**/*_spec.rb"
|
82
|
-
- "**spec/routing/**/*_spec.rb"
|
83
|
-
|
84
|
-
# Turn these off as can totally mess with the expect{...}.to syntax
|
85
|
-
# Also reports on model validations using Proc.new { style blocks but trying to use do .. end raises invalid syntax
|
86
|
-
Style/BlockDelimiters:
|
87
|
-
Exclude:
|
88
|
-
- "**spec/**/*_spec.rb"
|
89
|
-
|
90
|
-
# As a web app, as long as the team commit to using well named classes for
|
91
|
-
# controllers, models etc it should not be necessary to add top-level class
|
92
|
-
# documentation.
|
93
|
-
Style/Documentation:
|
94
|
-
Enabled: false
|
95
|
-
|
96
|
-
# We've found the sprintf style for formatting strings can be useful when storing a formatted string as a template,
|
97
|
-
# and passing in strings that can vary with context. Therefore we chose to disable this rule.
|
98
|
-
Style/FormatString:
|
99
|
-
Enabled: false
|
100
|
-
|
101
|
-
# When using Ruby >= 2.3, Rubocop wants to add a comment to the top of *.rb
|
102
|
-
# to aid migration to frozen literals in Ruby 3.0. We are not interested in
|
103
|
-
# modifying every file at this point, so this cop is disabled for now.
|
104
|
-
Style/FrozenStringLiteralComment:
|
105
|
-
Enabled: false
|
106
|
-
|
107
|
-
# In specs we like to use the pattern of updating within an expect do block and
|
108
|
-
# then asserting a given attribute has changed as a result. This requires
|
109
|
-
# chaining hence we exclude specs from this rule
|
110
|
-
Style/MethodCalledOnDoEndBlock:
|
111
|
-
Exclude:
|
112
|
-
- "**/spec/**/*_spec.rb"
|
113
|
-
|
114
|
-
# There are no relative performance improvements using '' over "", therefore we believe there is more
|
115
|
-
# value in using "" for all strings irrespective of whether string interpolation is used
|
116
|
-
Style/StringLiterals:
|
117
|
-
EnforcedStyle: double_quotes
|
118
|
-
|
119
|
-
# Rubocop 0.42 introduced this cop - disabling for now until we have time to resolve
|
120
|
-
# the issues it raises.
|
121
|
-
Style/MethodMissing:
|
122
|
-
Enabled: false
|
data/.travis.yml
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# Needed as part of submitting test coverage statistics to CodeClimate as part
|
2
|
-
# of the build
|
3
|
-
# https://docs.codeclimate.com/v1.0/docs/travis-ci-test-coverage
|
4
|
-
env:
|
5
|
-
global:
|
6
|
-
- CC_TEST_REPORTER_ID=df8a9d5af846f573eb944b1e7ba0ea40ec79efe0f3350af095054e2d5a6f2d56
|
7
|
-
|
8
|
-
language: ruby
|
9
|
-
cache: bundler
|
10
|
-
|
11
|
-
rvm:
|
12
|
-
- 2.2.3
|
13
|
-
|
14
|
-
# Travis CI clones repositories to a depth of 50 commits, which is only really
|
15
|
-
# useful if you are performing git operations.
|
16
|
-
# https://docs.travis-ci.com/user/customizing-the-build/#Git-Clone-Depth
|
17
|
-
git:
|
18
|
-
depth: 3
|
19
|
-
|
20
|
-
before_script:
|
21
|
-
# Setup to support the CodeClimate test coverage submission
|
22
|
-
# As per CodeClimate's documentation, they suggest only running
|
23
|
-
# ./cc-test-reporter commands on travis-ci push builds only. Hence we wrap all
|
24
|
-
# the codeclimate test coverage related commands in a check that tests if we
|
25
|
-
# are in a pull request or not.
|
26
|
-
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter; fi
|
27
|
-
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then chmod +x ./cc-test-reporter; fi
|
28
|
-
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter before-build; fi
|
29
|
-
|
30
|
-
after_script:
|
31
|
-
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
|
data/CHANGELOG.md
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# Change Log
|
2
|
-
|
3
|
-
## [v0.4.2](https://github.com/DEFRA/os_map_ref/tree/v0.4.2) (2017-10-30)
|
4
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.4.1...v0.4.2)
|
5
|
-
|
6
|
-
**Merged pull requests:**
|
7
|
-
|
8
|
-
- Bump version no. for release of v0.4.2 [\#19](https://github.com/DEFRA/os_map_ref/pull/19) ([Cruikshanks](https://github.com/Cruikshanks))
|
9
|
-
- Add changelog and ability to auto generate it [\#18](https://github.com/DEFRA/os_map_ref/pull/18) ([Cruikshanks](https://github.com/Cruikshanks))
|
10
|
-
- Fix badge links in README pointing 2 old EA Github [\#17](https://github.com/DEFRA/os_map_ref/pull/17) ([Cruikshanks](https://github.com/Cruikshanks))
|
11
|
-
- Fix and update codeclimate and travis-ci config [\#16](https://github.com/DEFRA/os_map_ref/pull/16) ([Cruikshanks](https://github.com/Cruikshanks))
|
12
|
-
- Add std rubocop config and resolve issues found [\#15](https://github.com/DEFRA/os_map_ref/pull/15) ([Cruikshanks](https://github.com/Cruikshanks))
|
13
|
-
- Correct details in gemspec [\#14](https://github.com/DEFRA/os_map_ref/pull/14) ([Cruikshanks](https://github.com/Cruikshanks))
|
14
|
-
- Integrate project with Hakiri [\#13](https://github.com/DEFRA/os_map_ref/pull/13) ([Cruikshanks](https://github.com/Cruikshanks))
|
15
|
-
|
16
|
-
## [v0.4.1](https://github.com/DEFRA/os_map_ref/tree/v0.4.1) (2016-05-17)
|
17
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.4.0...v0.4.1)
|
18
|
-
|
19
|
-
**Merged pull requests:**
|
20
|
-
|
21
|
-
- Confirm codeclimate api key [\#12](https://github.com/DEFRA/os_map_ref/pull/12) ([Cruikshanks](https://github.com/Cruikshanks))
|
22
|
-
- Integrate project with codeclimate [\#11](https://github.com/DEFRA/os_map_ref/pull/11) ([Cruikshanks](https://github.com/Cruikshanks))
|
23
|
-
- Add version badge to README [\#10](https://github.com/DEFRA/os_map_ref/pull/10) ([Cruikshanks](https://github.com/Cruikshanks))
|
24
|
-
|
25
|
-
## [v0.4.0](https://github.com/DEFRA/os_map_ref/tree/v0.4.0) (2016-04-05)
|
26
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.3.0...v0.4.0)
|
27
|
-
|
28
|
-
**Merged pull requests:**
|
29
|
-
|
30
|
-
- Correct error in grid: skipped K instead of I in right-hand portion [\#9](https://github.com/DEFRA/os_map_ref/pull/9) ([reggieb](https://github.com/reggieb))
|
31
|
-
- Fix/improve range of inputs accepted [\#8](https://github.com/DEFRA/os_map_ref/pull/8) ([reggieb](https://github.com/reggieb))
|
32
|
-
|
33
|
-
## [v0.3.0](https://github.com/DEFRA/os_map_ref/tree/v0.3.0) (2016-04-04)
|
34
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.2.0...v0.3.0)
|
35
|
-
|
36
|
-
**Closed issues:**
|
37
|
-
|
38
|
-
- Convert tests to Rspec [\#2](https://github.com/DEFRA/os_map_ref/issues/2)
|
39
|
-
|
40
|
-
**Merged pull requests:**
|
41
|
-
|
42
|
-
- Changes tests over to rspec [\#7](https://github.com/DEFRA/os_map_ref/pull/7) ([reggieb](https://github.com/reggieb))
|
43
|
-
- Update contribution section in README [\#6](https://github.com/DEFRA/os_map_ref/pull/6) ([Cruikshanks](https://github.com/Cruikshanks))
|
44
|
-
- Update travis configuration for repo [\#5](https://github.com/DEFRA/os_map_ref/pull/5) ([Cruikshanks](https://github.com/Cruikshanks))
|
45
|
-
- Bump version to 0.2.0 [\#4](https://github.com/DEFRA/os_map_ref/pull/4) ([reggieb](https://github.com/reggieb))
|
46
|
-
|
47
|
-
## [v0.2.0](https://github.com/DEFRA/os_map_ref/tree/v0.2.0) (2016-03-30)
|
48
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.1.1...v0.2.0)
|
49
|
-
|
50
|
-
**Merged pull requests:**
|
51
|
-
|
52
|
-
- fixed typo in prefix matrix [\#3](https://github.com/DEFRA/os_map_ref/pull/3) ([kennyevil](https://github.com/kennyevil))
|
53
|
-
- Add license details to README [\#1](https://github.com/DEFRA/os_map_ref/pull/1) ([Cruikshanks](https://github.com/Cruikshanks))
|
54
|
-
|
55
|
-
## [v0.1.1](https://github.com/DEFRA/os_map_ref/tree/v0.1.1) (2016-03-24)
|
56
|
-
[Full Changelog](https://github.com/DEFRA/os_map_ref/compare/v0.1.0...v0.1.1)
|
57
|
-
|
58
|
-
## [v0.1.0](https://github.com/DEFRA/os_map_ref/tree/v0.1.0) (2016-03-23)
|
59
|
-
|
60
|
-
|
61
|
-
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Gemfile
DELETED
data/os_map_ref.gemspec
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
lib = File.expand_path("../lib", __FILE__)
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
|
4
|
-
require "os_map_ref/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "os_map_ref"
|
8
|
-
spec.version = OsMapRef::VERSION
|
9
|
-
spec.authors = ["Environment Agency"]
|
10
|
-
spec.email = ["alan.cruikshanks@environment-agency.gov.uk"]
|
11
|
-
|
12
|
-
# rubocop:disable Metrics/LineLength
|
13
|
-
spec.summary = "A tool to help handle UK Ordnance Survey map references, in particular to convert them to other coordinate systems"
|
14
|
-
spec.description = "This gem allows you to gather U.K. Ordnance Survey Eastings, North, and Map References from a range of text inputs; and output them in a consistent manner"
|
15
|
-
# rubocop:enable Metrics/LineLength
|
16
|
-
spec.homepage = "https://github.com/DEFRA/os_map_ref"
|
17
|
-
spec.license = "Nonstandard"
|
18
|
-
|
19
|
-
spec.files = `git ls-files -z`
|
20
|
-
.split("\x0")
|
21
|
-
.reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
|
-
spec.bindir = "exe"
|
23
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
-
spec.require_paths = ["lib"]
|
25
|
-
|
26
|
-
spec.required_ruby_version = ">= 1.9"
|
27
|
-
|
28
|
-
spec.add_development_dependency "bundler", "~> 1.11"
|
29
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
-
spec.add_development_dependency "rspec"
|
31
|
-
spec.add_development_dependency "simplecov", "~> 0.13"
|
32
|
-
spec.add_development_dependency "github_changelog_generator"
|
33
|
-
end
|