maidenhead 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ad8ea73a10da985b1a7306998b711cae38c95310
4
+ data.tar.gz: ceb9292ef5f7e0d77d63e44e4c524124218a221c
5
+ SHA512:
6
+ metadata.gz: e73f5f0cf8657d206cb5675169d3f14d03720dd359303ffabb55a2390fb1427ccf9fdb3e7fe20d90a3eed69697f1ad89a716fd22596a5132ef19d6e8714fe265
7
+ data.tar.gz: 7d60888ef13bcc5987323c97143ed4e074839cc6860d5bed63ab28f0bd378a639596829a74d4fb4ff9258670ad2ea76971bd0b776e91939abb222a32cba341c6
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
@@ -0,0 +1,11 @@
1
+ rvm:
2
+ - 2.0.0
3
+ - 1.9.3
4
+ - rbx-19mode
5
+ - jruby-19mode
6
+
7
+ before_script:
8
+
9
+ notifications:
10
+ email:
11
+ - explorer@flame.org
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "minitest", ">= 0"
10
+ gem "yard", "~> 0.7"
11
+ gem "rdoc", "~> 3.12"
12
+ gem "bundler", "~> 1.0"
13
+ gem "jeweler", "~> 1.8.7"
14
+ gem "guard"
15
+ gem 'guard-minitest'
16
+ end
@@ -0,0 +1,28 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :minitest do
5
+ # with Minitest::Unit
6
+ watch(%r{^test/(.*)\/?test_(.*)\.rb})
7
+ watch(%r{^lib/(.*/)?([^/]+)\.rb}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
8
+ watch(%r{^test/test_helper\.rb}) { 'test' }
9
+
10
+ # with Minitest::Spec
11
+ # watch(%r{^spec/(.*)_spec\.rb})
12
+ # watch(%r{^lib/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
13
+ # watch(%r{^spec/spec_helper\.rb}) { 'spec' }
14
+
15
+ # Rails 4
16
+ # watch(%r{^app/(.+)\.rb}) { |m| "test/#{m[1]}_test.rb" }
17
+ # watch(%r{^app/controllers/application_controller\.rb}) { 'test/controllers' }
18
+ # watch(%r{^app/controllers/(.+)_controller\.rb}) { |m| "test/integration/#{m[1]}_test.rb" }
19
+ # watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
20
+ # watch(%r{^lib/(.+)\.rb}) { |m| "test/lib/#{m[1]}_test.rb" }
21
+ # watch(%r{^test/.+_test\.rb})
22
+ # watch(%r{^test/test_helper\.rb}) { 'test' }
23
+
24
+ # Rails < 4
25
+ # watch(%r{^app/controllers/(.*)\.rb}) { |m| "test/functional/#{m[1]}_test.rb" }
26
+ # watch(%r{^app/helpers/(.*)\.rb}) { |m| "test/helpers/#{m[1]}_test.rb" }
27
+ # watch(%r{^app/models/(.*)\.rb}) { |m| "test/unit/#{m[1]}_test.rb" }
28
+ end
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Michael Graff
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,20 @@
1
+ = maidenhead
2
+
3
+ This gem converts between latitude and longitude coordinates and the
4
+ Maidenhead Location System coordinates, with various degrees of accuracy.
5
+
6
+ == Contributing to maidenhead
7
+
8
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
9
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
10
+ * Fork the project.
11
+ * Start a feature/bugfix branch.
12
+ * Commit and push until you are happy with your contribution.
13
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
14
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
15
+
16
+ == Copyright
17
+
18
+ Copyright (c) 2013 Michael Graff. See LICENSE.txt for
19
+ further details.
20
+
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "maidenhead"
18
+ gem.homepage = "http://github.com/skandragon/maidenhead"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Maidenhead Locator System conversion}
21
+ gem.description = %Q{Convert between latitude/longitude and Maidenhead Locator System strings}
22
+ gem.email = "explorer@flame.org"
23
+ gem.authors = ["Michael Graff"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ task :default => :test
36
+
37
+ require 'yard'
38
+ YARD::Rake::YardocTask.new
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,124 @@
1
+ ##
2
+ # Easily convert between latitude and longitude coordinates the the Maidenhead
3
+ # Locator System coordinates.
4
+ class Maidenhead
5
+
6
+ #
7
+ # Verify that the provided Maidenhead locator string is valid.
8
+ #
9
+ def self.valid_maidenhead?(location)
10
+ return false unless location.is_a?String
11
+ return false unless location.length >= 2
12
+ return false unless (location.length % 2) == 0
13
+
14
+ length = location.length / 2
15
+ length.times do |counter|
16
+ grid = location[counter * 2, 2]
17
+ if (counter == 0)
18
+ return false unless grid =~ /[a-rA-R]{2}/
19
+ elsif (counter % 2) == 0
20
+ return false unless grid =~ /[a-xA-X]{2}/
21
+ else
22
+ return false unless grid =~ /[0-9]{2}/
23
+ end
24
+ end
25
+
26
+ true
27
+ end
28
+
29
+ #
30
+ # Convert from a Maidenhead locator string to latitude and longitude.
31
+ # Location may be between 1 and 5 grids in size (2 to 10 characters).
32
+ # Longer values may work, but accuracy is not guaranteed as latitude
33
+ # and longitude values returned are rounded ot 6 decimal places.
34
+ #
35
+ # For each grid, an arbitrary but repeatable latitude and longitude
36
+ # is returned.
37
+ def self.to_latlon(location)
38
+
39
+ unless valid_maidenhead?(location)
40
+ raise ArgumentError.new("Location is not a valid Maidenhead Locator System string")
41
+ end
42
+
43
+ length = location.length / 2
44
+ while (length < 5)
45
+ if (length % 2) == 1
46
+ location += '55'
47
+ else
48
+ location += 'LL'
49
+ end
50
+ length = location.length / 2
51
+ end
52
+
53
+ lat = 0
54
+ lon = 0
55
+
56
+ lat_multiplier = 10.0
57
+ lon_multiplier = 20.0
58
+
59
+ 5.times do |counter|
60
+ grid_lon = location[counter * 2, 1]
61
+ grid_lat = location[counter * 2 + 1, 1]
62
+
63
+ if counter == 0
64
+ lat += l2n(grid_lat) * lat_multiplier
65
+ lon += l2n(grid_lon) * lon_multiplier
66
+ elsif (counter % 2) == 0
67
+ lat_multiplier /= 24
68
+ lon_multiplier /= 24
69
+ lat += l2n(grid_lat) * lat_multiplier
70
+ lon += l2n(grid_lon) * lon_multiplier
71
+ else
72
+ lat_multiplier /= 10
73
+ lon_multiplier /= 10
74
+ lat += grid_lat.to_i * lat_multiplier
75
+ lon += grid_lon.to_i * lon_multiplier
76
+ end
77
+ end
78
+
79
+ [ (lat - 90).round(6), (lon - 180).round(6) ]
80
+ end
81
+
82
+ #
83
+ # Convert from latitude and longitude to a Maidenhead locator string.
84
+ # Latitude should be between -90 and 90, and longitude should be between
85
+ # -180 and 180. Precision defaults to 5 blocks, which returns 10 characters.
86
+ # More precise coordinates may work, but accuracy is not guaranteed.
87
+ def self.to_maidenhead(lat, lon, precision = 5)
88
+ locator = ''
89
+
90
+ lat = lat.to_f + 90
91
+ lon = lon.to_f + 180
92
+
93
+ # Calculate the field
94
+ lat = (lat / 10) + 0.0000001
95
+ lon = (lon / 20) + 0.0000001
96
+ locator += n2l(lon.floor).upcase + n2l(lat.floor).upcase
97
+ precision -= 1
98
+
99
+ # Calculate the remaining values
100
+ precision.times do |counter|
101
+ if (counter % 2) == 0
102
+ lat = (lat - lat.floor) * 10
103
+ lon = (lon - lon.floor) * 10
104
+ locator += "#{lon.floor}#{lat.floor}"
105
+ else
106
+ lat = (lat - lat.floor) * 24
107
+ lon = (lon - lon.floor) * 24
108
+ locator += n2l(lon.floor) + n2l(lat.floor)
109
+ end
110
+ end
111
+
112
+ locator
113
+ end
114
+
115
+ private
116
+
117
+ def self.l2n(letter)
118
+ letter.downcase.ord - 97
119
+ end
120
+
121
+ def self.n2l(number)
122
+ (number + 97).chr
123
+ end
124
+ end
@@ -0,0 +1,69 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "maidenhead"
8
+ s.version = "1.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael Graff"]
12
+ s.date = "2013-11-13"
13
+ s.description = "Convert between latitude/longitude and Maidenhead Locator System strings"
14
+ s.email = "explorer@flame.org"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".travis.yml",
22
+ "Gemfile",
23
+ "Guardfile",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "lib/maidenhead.rb",
29
+ "maidenhead.gemspec",
30
+ "test/helper.rb",
31
+ "test/test_maidenhead.rb"
32
+ ]
33
+ s.homepage = "http://github.com/skandragon/maidenhead"
34
+ s.licenses = ["MIT"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = "2.0.3"
37
+ s.summary = "Maidenhead Locator System conversion"
38
+
39
+ if s.respond_to? :specification_version then
40
+ s.specification_version = 4
41
+
42
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
+ s.add_development_dependency(%q<minitest>, [">= 0"])
44
+ s.add_development_dependency(%q<yard>, ["~> 0.7"])
45
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
46
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
47
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
48
+ s.add_development_dependency(%q<guard>, [">= 0"])
49
+ s.add_development_dependency(%q<guard-minitest>, [">= 0"])
50
+ else
51
+ s.add_dependency(%q<minitest>, [">= 0"])
52
+ s.add_dependency(%q<yard>, ["~> 0.7"])
53
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
54
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
55
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
56
+ s.add_dependency(%q<guard>, [">= 0"])
57
+ s.add_dependency(%q<guard-minitest>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<minitest>, [">= 0"])
61
+ s.add_dependency(%q<yard>, ["~> 0.7"])
62
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
63
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
64
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
65
+ s.add_dependency(%q<guard>, [">= 0"])
66
+ s.add_dependency(%q<guard-minitest>, [">= 0"])
67
+ end
68
+ end
69
+
@@ -0,0 +1,19 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'minitest/autorun'
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ require 'maidenhead'
15
+
16
+ class MiniTest::Unit::TestCase
17
+ end
18
+
19
+ MiniTest.autorun
@@ -0,0 +1,122 @@
1
+ require 'helper'
2
+
3
+ class TestMaidenhead < Minitest::Test
4
+ def test_convert_from_maidenhead_5
5
+ lat, lon = Maidenhead.to_latlon('IO93lo72hn')
6
+ assert_equal 53.593924, lat
7
+ assert_equal -1.022569, lon
8
+ end
9
+
10
+ def test_convert_from_maidenhead_4
11
+ lat, lon = Maidenhead.to_latlon('IO93lo72')
12
+ assert_equal 53.593576, lat
13
+ assert_equal -1.021181, lon
14
+ end
15
+
16
+ def test_convert_from_maidenhead_3
17
+ lat, lon = Maidenhead.to_latlon('IO93lo')
18
+ assert_equal 53.606076, lat
19
+ assert_equal -1.037847, lon
20
+ end
21
+
22
+ def test_convert_from_maidenhead_2
23
+ lat, lon = Maidenhead.to_latlon('IO93')
24
+ assert_equal 53.481076, lat
25
+ assert_equal -1.037847, lon
26
+ end
27
+
28
+ def test_convert_from_maidenhead_1
29
+ lat, lon = Maidenhead.to_latlon('IO')
30
+ assert_equal 55.481076, lat
31
+ assert_equal -9.037847, lon
32
+ end
33
+
34
+ def test_convert_to_maidenhead_5
35
+ maidenhead = Maidenhead.to_maidenhead(53.593923, -1.022569, 5)
36
+ assert_equal 'IO93lo72hn', maidenhead
37
+ end
38
+
39
+ def test_convert_to_maidenhead_4
40
+ maidenhead = Maidenhead.to_maidenhead(53.593923, -1.022569, 4)
41
+ assert_equal 'IO93lo72', maidenhead
42
+ end
43
+
44
+ def test_convert_to_maidenhead_3
45
+ maidenhead = Maidenhead.to_maidenhead(53.593923, -1.022569, 3)
46
+ assert_equal 'IO93lo', maidenhead
47
+ end
48
+
49
+ def test_convert_to_maidenhead_2
50
+ maidenhead = Maidenhead.to_maidenhead(53.593923, -1.022569, 2)
51
+ assert_equal 'IO93', maidenhead
52
+ end
53
+
54
+ def test_convert_to_maidenhead_1
55
+ maidenhead = Maidenhead.to_maidenhead(53.593923, -1.022569, 1)
56
+ assert_equal 'IO', maidenhead
57
+ end
58
+
59
+ def test_convert_JJ00aa
60
+ lat, lon = Maidenhead.to_latlon('JJ00aa00aa')
61
+ assert_equal lat, 0
62
+ assert_equal lon, 0
63
+ end
64
+
65
+ def test_edges_0
66
+ maidenhead = Maidenhead.to_maidenhead(-90, -180, 5)
67
+ assert_equal 'AA00aa00aa', maidenhead
68
+ end
69
+
70
+ def test_edges_1
71
+ maidenhead = Maidenhead.to_maidenhead(90, -180, 5)
72
+ assert_equal 'AS00aa00aa', maidenhead
73
+ end
74
+
75
+ def test_edges_2
76
+ maidenhead = Maidenhead.to_maidenhead(90, 180, 5)
77
+ assert_equal 'SS00aa00aa', maidenhead
78
+ end
79
+
80
+ def test_edges_3
81
+ maidenhead = Maidenhead.to_maidenhead(-90, 180, 5)
82
+ assert_equal 'SA00aa00aa', maidenhead
83
+ end
84
+
85
+ def test_throws_for_invalid_maidenhead
86
+ assert_raises(ArgumentError) do
87
+ Maidenhead.to_latlon('A')
88
+ end
89
+ end
90
+
91
+ def test_valid_maidenhead
92
+ matrix = {
93
+ 'AA' => true,
94
+ 'AA00' => true,
95
+ 'AA00AA' => true,
96
+ 'Rr99XX' => true,
97
+ 'rR99Xx99' => true,
98
+ 'RR99xX99Xx' => true,
99
+ 'RR99xX99xX' => true,
100
+
101
+ 12 => false,
102
+ '' => false,
103
+ nil => false,
104
+
105
+ 'A' => false,
106
+ 'A1' => false,
107
+ '00' => false,
108
+ 'AA0' => false,
109
+ 'AAAA' => false,
110
+ 'AA0A' => false,
111
+ 'SS99' => false,
112
+ }
113
+
114
+ matrix.each do |locator, expected_result|
115
+ if expected_result
116
+ assert Maidenhead.valid_maidenhead?(locator), "#{locator} should be valid"
117
+ else
118
+ refute Maidenhead.valid_maidenhead?(locator), "#{locator} should not be valid"
119
+ end
120
+ end
121
+ end
122
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: maidenhead
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Graff
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: yard
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3.12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jeweler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.8.7
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 1.8.7
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Convert between latitude/longitude and Maidenhead Locator System strings
112
+ email: explorer@flame.org
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files:
116
+ - LICENSE.txt
117
+ - README.rdoc
118
+ files:
119
+ - .document
120
+ - .travis.yml
121
+ - Gemfile
122
+ - Guardfile
123
+ - LICENSE.txt
124
+ - README.rdoc
125
+ - Rakefile
126
+ - VERSION
127
+ - lib/maidenhead.rb
128
+ - maidenhead.gemspec
129
+ - test/helper.rb
130
+ - test/test_maidenhead.rb
131
+ homepage: http://github.com/skandragon/maidenhead
132
+ licenses:
133
+ - MIT
134
+ metadata: {}
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ requirements: []
150
+ rubyforge_project:
151
+ rubygems_version: 2.0.3
152
+ signing_key:
153
+ specification_version: 4
154
+ summary: Maidenhead Locator System conversion
155
+ test_files: []