grid_square 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/lib/grid_square.rb CHANGED
@@ -2,76 +2,74 @@ require 'location'
2
2
  require 'radix_enumerator'
3
3
  require 'string_ext'
4
4
 
5
- module GridSquare
6
- class GridSquare
7
- attr_reader :grid_reference, :origin
8
-
9
- # location can be a string containing a GS reference or a pair
10
- # containing longitude and latitude.
11
- def initialize(grid_reference)
12
- @grid_reference = grid_reference
13
- decode
14
- end
15
-
16
- def self.encode(longitude, latitude, precision=4 )
17
- longitude += 180
18
- latitude += 90
19
- radixes = RadixEnumerator.new
20
- grid_reference = ''
21
- size = Location.new(360.0, 180.0)
22
- precision.times do
23
- zero,radix = *radixes.next
24
-
25
- lng = (radix * longitude / size.longitude).floor
26
- lat = (radix * latitude / size.latitude).floor
27
-
28
- grid_reference += "%s%s" % [(zero + lng).chr, (zero + lat).chr]
29
- size /= radix
30
- longitude -= lng * size.longitude
31
- latitude -= lat * size.latitude
32
- end
33
-
34
- new grid_reference.downcase_last
35
- end
36
-
37
- # Maidenhead locator names
38
- def field; precision 1; end
39
- def square; precision 2; end
40
- def subsquare; precision 3; end
41
- def extended_subsquare; precision 4; end
42
-
43
- # Return code to a given number of 2-digit fields
44
- def precision(num_fields)
45
- raise IndexError.new "GridSquare.square: insufficient precision to index #{num_fields} fields" unless grid_reference.length >= num_fields * 2
46
- grid_reference[0...num_fields*2].downcase_last
47
- end
48
-
49
- def decode
50
- radixes = RadixEnumerator.new
51
- @origin, @size = Location.new(-180.0, -90.0), Location.new(360.0, 180.0)
52
-
53
- @grid_reference.upcase.chars.each_slice(2) do |lng, lat|
54
- zero, radix = *radixes.next
55
- @size /= radix
56
- @origin += Location.new(@size.longitude * (lng.ord - zero), @size.latitude * (lat.ord - zero))
57
- end
5
+ class GridSquare
6
+ attr_reader :grid_reference, :origin
7
+
8
+ # location can be a string containing a GS reference or a pair
9
+ # containing longitude and latitude.
10
+ def initialize(grid_reference)
11
+ @grid_reference = grid_reference
12
+ decode
13
+ end
14
+
15
+ def self.encode(longitude, latitude, precision=4 )
16
+ longitude += 180
17
+ latitude += 90
18
+ radixes = RadixEnumerator.new
19
+ grid_reference = ''
20
+ size = Location.new(360.0, 180.0)
21
+ precision.times do
22
+ zero,radix = *radixes.next
23
+
24
+ lng = (radix * longitude / size.longitude).floor
25
+ lat = (radix * latitude / size.latitude).floor
26
+
27
+ grid_reference += "%s%s" % [(zero + lng).chr, (zero + lat).chr]
28
+ size /= radix
29
+ longitude -= lng * size.longitude
30
+ latitude -= lat * size.latitude
58
31
  end
59
-
60
- def width; @size.longitude; end
61
- def height; @size.latitude; end
62
-
63
- def left; @origin.longitude; end
64
- def bottom; @origin.latitude; end
65
- def top; (@origin + @size).latitude; end
66
- def right; (@origin + @size).longitude; end
67
-
68
- alias :west :left
69
- alias :south :bottom
70
- alias :east :right
71
- alias :north :top
72
-
73
- def center
74
- @origin + @size/2
32
+
33
+ new grid_reference.downcase_last
34
+ end
35
+
36
+ # Maidenhead locator names
37
+ def field; precision 1; end
38
+ def square; precision 2; end
39
+ def subsquare; precision 3; end
40
+ def extended_subsquare; precision 4; end
41
+
42
+ # Return code to a given number of 2-digit fields
43
+ def precision(num_fields)
44
+ raise IndexError.new "GridSquare.square: insufficient precision to index #{num_fields} fields" unless grid_reference.length >= num_fields * 2
45
+ grid_reference[0...num_fields*2].downcase_last
46
+ end
47
+
48
+ def decode
49
+ radixes = RadixEnumerator.new
50
+ @origin, @size = Location.new(-180.0, -90.0), Location.new(360.0, 180.0)
51
+
52
+ @grid_reference.upcase.chars.each_slice(2) do |lng, lat|
53
+ zero, radix = *radixes.next
54
+ @size /= radix
55
+ @origin += Location.new(@size.longitude * (lng.ord - zero), @size.latitude * (lat.ord - zero))
75
56
  end
76
57
  end
58
+
59
+ def width; @size.longitude; end
60
+ def height; @size.latitude; end
61
+
62
+ def left; @origin.longitude; end
63
+ def bottom; @origin.latitude; end
64
+ def top; (@origin + @size).latitude; end
65
+ def right; (@origin + @size).longitude; end
66
+
67
+ alias :west :left
68
+ alias :south :bottom
69
+ alias :east :right
70
+ alias :north :top
71
+
72
+ def center
73
+ @origin + @size/2
74
+ end
77
75
  end
@@ -1,3 +1,3 @@
1
1
  module GridSquare
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/lib/location.rb CHANGED
@@ -1,4 +1,4 @@
1
- module GridSquare
1
+ class GridSquare
2
2
  class Location
3
3
  attr_accessor :longitude, :latitude
4
4
  def initialize(longitude, latitude)
@@ -1,4 +1,4 @@
1
- module GridSquare
1
+ class GridSquare
2
2
  class RadixEnumerator
3
3
  def next
4
4
  if @enum.nil?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grid_square
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: