os_map_ref 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/.travis.yml +12 -0
- data/README.md +18 -10
- data/Rakefile +5 -5
- data/lib/os_map_ref/input_processor.rb +37 -7
- data/lib/os_map_ref/location.rb +10 -6
- data/lib/os_map_ref/version.rb +1 -1
- data/os_map_ref.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12d54845568c88b7000830b89f9cf22dc0dd869f
|
4
|
+
data.tar.gz: 3724276fae454400abc143894458372ae74f012a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a89ed1be4cc0d2651a61ba9a1cba8bbc5ccf2b83bdf2fec3f2071f29b9ea44c2a0cd172a673a0c05da8645d2370146a0ff9e53d9dfc94ac78124405bf83828e6
|
7
|
+
data.tar.gz: 2b2fe98324f2e80b6550d5459c63120bebb0a3ed46ac334f10ff0fc9b11689c9a35673c028bafb78679dc159ac4bc833a87598b377c361cdd6650d1056d9720f
|
data/.rspec
ADDED
data/.travis.yml
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
|
2
4
|
rvm:
|
3
5
|
- 2.2.3
|
6
|
+
|
4
7
|
before_install: gem install bundler -v 1.11.2
|
8
|
+
|
9
|
+
# Have this option to stop travis-ci building twice. Currently we have travis set to build both
|
10
|
+
# PR's and pushes. However this means when we push to a PR we have to wait for Travis to finish
|
11
|
+
# 2 builds. If we unticked 'pushes' when the PR was finally merged that would not be built. The
|
12
|
+
# brute force approach would be to untick build PR's and just build all pushes. We instead have
|
13
|
+
# gone with the approach outlined here http://stackoverflow.com/a/31882307
|
14
|
+
branches:
|
15
|
+
only:
|
16
|
+
- master
|
data/README.md
CHANGED
@@ -1,27 +1,33 @@
|
|
1
1
|
# OsMapRef
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/EnvironmentAgency/os_map_ref.svg?branch=master)](https://travis-ci.org/EnvironmentAgency/os_map_ref)
|
4
|
+
|
3
5
|
This gem allows you to gather U.K. Ordnance Survey Eastings, North, and Map
|
4
6
|
References from a range of text inputs.
|
5
7
|
|
6
8
|
## Installation
|
7
9
|
|
8
|
-
Add this line to your application's Gemfile
|
10
|
+
Add this line to your application's Gemfile
|
9
11
|
|
10
12
|
```ruby
|
11
13
|
gem 'os_map_ref'
|
12
14
|
```
|
13
15
|
|
14
|
-
And then
|
16
|
+
And then update your dependencies by calling
|
15
17
|
|
16
|
-
|
18
|
+
```bash
|
19
|
+
$ bundle install
|
20
|
+
```
|
17
21
|
|
18
|
-
Or install it yourself as
|
22
|
+
Or install it yourself as
|
19
23
|
|
20
|
-
|
24
|
+
```bash
|
25
|
+
$ gem install os_map_ref
|
26
|
+
```
|
21
27
|
|
22
28
|
## Usage
|
23
29
|
|
24
|
-
To convert a map reference to eastings and northings
|
30
|
+
To convert a map reference to eastings and northings
|
25
31
|
|
26
32
|
```ruby
|
27
33
|
location = OsMapRef::Location.for 'ST5880171043'
|
@@ -31,7 +37,7 @@ location.northing == 171043
|
|
31
37
|
location.map_reference == 'ST 58801 71043'
|
32
38
|
```
|
33
39
|
|
34
|
-
To convert eastings and northings to a map reference
|
40
|
+
To convert eastings and northings to a map reference
|
35
41
|
|
36
42
|
```ruby
|
37
43
|
location = OsMapRef::Location.for '358801, 171043'
|
@@ -44,7 +50,7 @@ location.map_reference == 'ST 58801 71043'
|
|
44
50
|
### From OS Map Reference to Longitude and Latitude
|
45
51
|
|
46
52
|
If your end result needs to be longitude and latitude, you can combine the
|
47
|
-
OsMapRef output with that of another gem
|
53
|
+
OsMapRef output with that of another gem called
|
48
54
|
[global_convert](https://github.com/reggieb/global_convert)
|
49
55
|
|
50
56
|
For example
|
@@ -78,9 +84,11 @@ for an interactive prompt that will allow you to experiment.
|
|
78
84
|
|
79
85
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
80
86
|
|
81
|
-
## Contributing
|
87
|
+
## Contributing to this project
|
88
|
+
|
89
|
+
If you have an idea you'd like to contribute please log an issue.
|
82
90
|
|
83
|
-
|
91
|
+
All contributions should be submitted via a pull request.
|
84
92
|
|
85
93
|
## License
|
86
94
|
|
data/Rakefile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rake/testtask"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
begin
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
rescue LoadError
|
8
8
|
end
|
9
9
|
|
10
|
-
task :
|
10
|
+
task :test => :spec
|
11
11
|
|
12
12
|
task :default => :test
|
@@ -58,12 +58,12 @@ module OsMapRef
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def padded_map_reference_easting
|
61
|
-
map_reference_easting.ljust(
|
61
|
+
map_reference_easting.ljust((normal_length - 1), padding)
|
62
62
|
end
|
63
63
|
|
64
64
|
def padded_map_reference_northing
|
65
|
-
target_length = northing_longer_than_easting? ?
|
66
|
-
map_reference_northing.ljust(target_length,
|
65
|
+
target_length = northing_longer_than_easting? ? extended_length : normal_length
|
66
|
+
map_reference_northing.ljust((target_length - 1), padding)
|
67
67
|
end
|
68
68
|
|
69
69
|
def northing_longer_than_easting?
|
@@ -80,11 +80,41 @@ module OsMapRef
|
|
80
80
|
|
81
81
|
def get_easting_and_northing
|
82
82
|
match = easting_northing_pattern.match input
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
easting = match[1]
|
84
|
+
northing = match[3]
|
85
|
+
length = northing.length > easting.length ? extended_length : normal_length
|
86
|
+
[
|
87
|
+
easting.ljust(normal_length, padding),
|
88
|
+
northing.ljust(length, padding)
|
89
|
+
]
|
90
|
+
end
|
91
|
+
|
92
|
+
def extended_length
|
93
|
+
normal_length + 1
|
94
|
+
end
|
95
|
+
|
96
|
+
def normal_length
|
97
|
+
6
|
98
|
+
end
|
99
|
+
|
100
|
+
def padding
|
101
|
+
'0'
|
102
|
+
end
|
103
|
+
|
104
|
+
# Matches are:
|
105
|
+
# 1: First digits which may be followed with a decimal point and more digits
|
106
|
+
# 2: The decimal point and trailing digits from first match (if present)
|
107
|
+
# 3: Second digits which may be followed with a decimal point and more digits
|
108
|
+
# 4: The decimal point and trailing digits from second match (if present)
|
109
|
+
# So:
|
110
|
+
# "1234.5, 6789.0" --> 1: "1234.5", 2: ".5", 3: "6789.0", 4: ".0"
|
111
|
+
# "1234 6789" --> 1: "1234", 2: nil, 3: "6789", 4: nil
|
86
112
|
def easting_northing_pattern
|
87
|
-
|
113
|
+
eastings = /\d{3,6}/ # 3 to 6 digits
|
114
|
+
northings = /\d{3,7}/ # 3 to 7 digits
|
115
|
+
decimals = /\.\d+/ # decimal point and trailing digits
|
116
|
+
separator = /[\,\s]+/ # commas or spaces
|
117
|
+
/(#{eastings}(#{decimals})?)#{separator}(#{northings}(#{decimals})?)/
|
88
118
|
end
|
89
119
|
end
|
90
120
|
end
|
data/lib/os_map_ref/location.rb
CHANGED
@@ -9,8 +9,12 @@ module OsMapRef
|
|
9
9
|
|
10
10
|
def initialize(args={})
|
11
11
|
@map_reference = args[:map_reference].freeze if args[:map_reference]
|
12
|
-
@easting = args[:easting]
|
13
|
-
@northing = args[:northing]
|
12
|
+
@easting = remove_decimals(args[:easting]) if args[:easting]
|
13
|
+
@northing = remove_decimals(args[:northing]) if args[:northing]
|
14
|
+
end
|
15
|
+
|
16
|
+
def remove_decimals(number)
|
17
|
+
number.to_s.sub /\.\d*/, ""
|
14
18
|
end
|
15
19
|
|
16
20
|
def map_reference
|
@@ -26,7 +30,7 @@ module OsMapRef
|
|
26
30
|
end
|
27
31
|
|
28
32
|
def short_easting
|
29
|
-
easting.to_s[1..-1]
|
33
|
+
easting.to_s[1..-1]
|
30
34
|
end
|
31
35
|
|
32
36
|
def long_northing?
|
@@ -38,7 +42,7 @@ module OsMapRef
|
|
38
42
|
end
|
39
43
|
|
40
44
|
def short_northing
|
41
|
-
northing.to_s[chars_in_northing_start..-1]
|
45
|
+
northing.to_s[chars_in_northing_start..-1]
|
42
46
|
end
|
43
47
|
|
44
48
|
def chars_in_northing_start
|
@@ -50,11 +54,11 @@ module OsMapRef
|
|
50
54
|
end
|
51
55
|
|
52
56
|
def easting
|
53
|
-
@easting ||= easting_from_map_reference
|
57
|
+
@easting ||= easting_from_map_reference
|
54
58
|
end
|
55
59
|
|
56
60
|
def northing
|
57
|
-
@northing ||= northing_from_map_reference
|
61
|
+
@northing ||= northing_from_map_reference
|
58
62
|
end
|
59
63
|
|
60
64
|
def northing_from_map_reference
|
data/lib/os_map_ref/version.rb
CHANGED
data/os_map_ref.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Nichols
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: This gem allows you to gather U.K. Ordnance Survey Eastings, North, and
|
56
70
|
Map References from a range of text inputs; and output them in a consistent manner
|
57
71
|
email:
|
@@ -61,6 +75,7 @@ extensions: []
|
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
63
77
|
- ".gitignore"
|
78
|
+
- ".rspec"
|
64
79
|
- ".travis.yml"
|
65
80
|
- Gemfile
|
66
81
|
- LICENSE
|