geos-extensions 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "geos-extensions"
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["J Smith"]
12
- s.date = "2011-11-09"
12
+ s.date = "2011-12-02"
13
13
  s.description = "Extensions for the GEOS library."
14
14
  s.email = "code@zoocasa.com"
15
15
  s.extra_rdoc_files = [
@@ -17,28 +17,29 @@ module Geos
17
17
  autoload :ActiveRecord, File.join(GEOS_EXTENSIONS_BASE, *%w{ geos active_record_extensions })
18
18
  autoload :GoogleMaps, File.join(GEOS_EXTENSIONS_BASE, *%w{ geos google_maps })
19
19
 
20
+ REGEXP_FLOAT = /(-?\d+(?:\.\d+)?)/
21
+ REGEXP_LAT_LNG = /#{REGEXP_FLOAT}\s*,\s*#{REGEXP_FLOAT}/
22
+
20
23
  REGEXP_WKT = /^\s*(?:SRID=(-?[0-9]+);)?(\s*[PLMCG].+)/im
21
24
  REGEXP_WKB_HEX = /^[A-Fa-f0-9\s]+$/
25
+
22
26
  REGEXP_G_LAT_LNG_BOUNDS = /^
23
27
  \(
24
- \(
25
- (-?\d+(?:\.\d+)?) # sw lat or x
26
- \s*,\s*
27
- (-?\d+(?:\.\d+)?) # sw lng or y
28
- \)
28
+ \(#{REGEXP_LAT_LNG}\) # sw
29
29
  \s*,\s*
30
- \(
31
- (-?\d+(?:\.\d+)?) # ne lat or x
32
- \s*,\s*
33
- (-?\d+(?:\.\d+)?) # ne lng or y
34
- \)
30
+ \(#{REGEXP_LAT_LNG}\) # ne
35
31
  \)
32
+ $
33
+ |
34
+ ^
35
+ #{REGEXP_LAT_LNG} # sw
36
+ \s*,\s*
37
+ #{REGEXP_LAT_LNG} # ne
36
38
  $/x
39
+
37
40
  REGEXP_G_LAT_LNG = /^
38
41
  \(?
39
- (-?\d+(?:\.\d+)?) # lat or x
40
- \s*,\s*
41
- (-?\d+(?:\.\d+)?) # lng or y
42
+ #{REGEXP_LAT_LNG}
42
43
  \)?
43
44
  $/x
44
45
 
@@ -108,7 +109,7 @@ module Geos
108
109
  geom = case geometry
109
110
  when REGEXP_G_LAT_LNG_BOUNDS
110
111
  coords = Array.new
111
- $~.captures.each_slice(2) { |f|
112
+ $~.captures.compact.each_slice(2) { |f|
112
113
  coords << f.collect(&:to_f)
113
114
  }
114
115
 
data/test/reader_tests.rb CHANGED
@@ -76,10 +76,20 @@ class GeosReaderTests < Test::Unit::TestCase
76
76
  bounds = Geos.from_g_lat_lng(BOUNDS_G_LAT_LNG)
77
77
 
78
78
  assert_kind_of(Geos::Polygon, bounds)
79
- assert_equal([ 0, 0 ], bounds.sw.to_a)
80
- assert_equal([ 5, 5 ], bounds.ne.to_a)
81
- assert_equal([ 0, 5 ], bounds.nw.to_a)
82
- assert_equal([ 5, 0 ], bounds.se.to_a)
79
+ assert_equal([ 0.1, 0.1 ], bounds.sw.to_a)
80
+ assert_equal([ 5.2, 5.2 ], bounds.ne.to_a)
81
+ assert_equal([ 0.1, 5.2 ], bounds.nw.to_a)
82
+ assert_equal([ 5.2, 0.1 ], bounds.se.to_a)
83
+ end
84
+
85
+ def test_from_g_lat_lng_bounds_url_value
86
+ bounds = Geos.from_g_lat_lng(BOUNDS_G_LAT_LNG_URL_VALUE)
87
+
88
+ assert_kind_of(Geos::Polygon, bounds)
89
+ assert_equal([ 0.1, 0.1 ], bounds.sw.to_a)
90
+ assert_equal([ 5.2, 5.2 ], bounds.ne.to_a)
91
+ assert_equal([ 0.1, 5.2 ], bounds.nw.to_a)
92
+ assert_equal([ 5.2, 0.1 ], bounds.se.to_a)
83
93
  end
84
94
 
85
95
  def test_read
data/test/test_helper.rb CHANGED
@@ -138,7 +138,8 @@ module TestHelper
138
138
 
139
139
  POLYGON_WITH_INTERIOR_RING = "POLYGON((0 0, 5 0, 5 5, 0 5, 0 0),(4 4, 4 1, 1 1, 1 4, 4 4))"
140
140
 
141
- BOUNDS_G_LAT_LNG = "((0, 0), (5, 5))"
141
+ BOUNDS_G_LAT_LNG = "((0.1, 0.1), (5.2, 5.2))"
142
+ BOUNDS_G_LAT_LNG_URL_VALUE = '0.1,0.1,5.2,5.2'
142
143
 
143
144
  def assert_saneness_of_point(point)
144
145
  assert_kind_of(Geos::Point, point)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geos-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-09 00:00:00.000000000 Z
12
+ date: 2011-12-02 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Extensions for the GEOS library.
15
15
  email: code@zoocasa.com