grid_square 0.0.5 → 0.0.6

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.
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: