geos-extensions 0.0.7 → 0.1.0
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/README.rdoc +49 -2
- data/Rakefile +6 -4
- data/VERSION +1 -0
- data/app/models/geos/geometry_column.rb +39 -0
- data/app/models/geos/spatial_ref_sys.rb +12 -0
- data/geos-extensions.gemspec +19 -19
- data/lib/{active_record_extensions → geos/active_record_extensions}/connection_adapters/postgresql_adapter.rb +0 -0
- data/lib/{active_record_extensions → geos/active_record_extensions}/geometry_columns.rb +2 -6
- data/lib/{active_record_extensions → geos/active_record_extensions}/geospatial_scopes.rb +12 -1
- data/lib/geos/active_record_extensions.rb +10 -0
- data/lib/geos/geos_helper.rb +104 -0
- data/lib/geos/google_maps/api_2.rb +180 -0
- data/lib/geos/google_maps/api_3.rb +169 -0
- data/lib/{google_maps → geos/google_maps}/polyline_encoder.rb +0 -0
- data/lib/geos/google_maps.rb +28 -0
- data/lib/geos/rails/engine.rb +6 -0
- data/lib/geos-extensions.rb +5 -5
- data/lib/geos_extensions.rb +18 -181
- data/{rails → lib}/tasks/test.rake +0 -0
- data/test/geospatial_scopes_test.rb +9 -0
- data/test/google_maps_api_2_test.rb +185 -0
- data/test/google_maps_api_3_test.rb +145 -0
- data/test/test_helper.rb +2 -0
- data/test/writer_test.rb +0 -171
- metadata +23 -22
- data/lib/active_record_extensions.rb +0 -8
- data/lib/geos_helper.rb +0 -51
- data/lib/google_maps.rb +0 -7
- data/rails/railtie.rb +0 -11
@@ -0,0 +1,145 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'json'
|
7
|
+
rescue LoadError
|
8
|
+
# do nothing
|
9
|
+
end
|
10
|
+
|
11
|
+
class GoogleMapsApi3Tests < Test::Unit::TestCase
|
12
|
+
include TestHelper
|
13
|
+
|
14
|
+
def setup
|
15
|
+
Geos::GoogleMaps.use_api(3)
|
16
|
+
|
17
|
+
@point = Geos.read(POINT_EWKB)
|
18
|
+
@polygon = Geos.read(POLYGON_EWKB)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_to_g_lat_lng
|
22
|
+
assert_equal("new google.maps.LatLng(10.01, 10.0)", @point.to_g_lat_lng)
|
23
|
+
assert_equal("new google.maps.LatLng(10.01, 10.0, true)", @point.to_g_lat_lng(:no_wrap => true))
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_to_jsonable
|
27
|
+
assert_equal({
|
28
|
+
:type => "point",
|
29
|
+
:lat => 10.01,
|
30
|
+
:lng => 10.0
|
31
|
+
}, @point.to_jsonable)
|
32
|
+
|
33
|
+
assert_equal({
|
34
|
+
:type => "polygon",
|
35
|
+
:polylines => [{
|
36
|
+
:points => "??_ibE_ibE_~cH_~cH_hgN_hgN~po]~po]",
|
37
|
+
:bounds => {
|
38
|
+
:sw => [ 0.0, 0.0 ],
|
39
|
+
:ne => [ 5.0, 5.0 ]
|
40
|
+
},
|
41
|
+
:levels=>"BBBBB"
|
42
|
+
}],
|
43
|
+
:options => {},
|
44
|
+
:encoded => true
|
45
|
+
}, @polygon.to_jsonable)
|
46
|
+
end
|
47
|
+
|
48
|
+
if defined?(JSON)
|
49
|
+
def test_to_g_polygon
|
50
|
+
assert_equal(
|
51
|
+
"new google.maps.Polygon([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], null, null, null, null, null, null)",
|
52
|
+
@polygon.to_g_polygon
|
53
|
+
)
|
54
|
+
|
55
|
+
assert_equal(
|
56
|
+
"new google.maps.Polygon([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], '#b00b1e', 5, 0.5, '#b00b1e', null, {\"mouseOutTolerence\":5})",
|
57
|
+
@polygon.to_g_polygon(
|
58
|
+
:stroke_color => '#b00b1e',
|
59
|
+
:stroke_weight => 5,
|
60
|
+
:stroke_opacity => 0.5,
|
61
|
+
:fill_color => '#b00b1e',
|
62
|
+
:polygon_options => {
|
63
|
+
:mouse_out_tolerence => 5
|
64
|
+
}
|
65
|
+
)
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_to_g_polyline
|
70
|
+
assert_equal(
|
71
|
+
"new google.maps.Polyline([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], null, null, null, null)",
|
72
|
+
@polygon.to_g_polyline
|
73
|
+
)
|
74
|
+
|
75
|
+
assert_equal(
|
76
|
+
"new google.maps.Polyline([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], '#b00b1e', 5, 0.5, {\"mouseOutTolerence\":5})",
|
77
|
+
@polygon.to_g_polyline(
|
78
|
+
:color => '#b00b1e',
|
79
|
+
:weight => 5,
|
80
|
+
:opacity => 0.5,
|
81
|
+
:polyline_options => {
|
82
|
+
:mouse_out_tolerence => 5
|
83
|
+
}
|
84
|
+
)
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_to_g_marker_long
|
89
|
+
marker = @point.to_g_marker
|
90
|
+
|
91
|
+
lat, lng, json = if marker =~ /^new\s+
|
92
|
+
google\.maps\.Marker\(\{
|
93
|
+
"position":\s*
|
94
|
+
new\s+google\.maps\.LatLng\(
|
95
|
+
(\d+\.\d+),\s*
|
96
|
+
(\d+\.\d+)
|
97
|
+
\)
|
98
|
+
\}\)
|
99
|
+
/x
|
100
|
+
[ $1, $2, $3 ]
|
101
|
+
end
|
102
|
+
|
103
|
+
assert_in_delta(lng.to_f, 10.00, 0.000001)
|
104
|
+
assert_in_delta(lat.to_f, 10.01, 0.000001)
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
def test_to_g_marker_with_options
|
109
|
+
marker = @point.to_g_marker({
|
110
|
+
:raise_on_drag => true,
|
111
|
+
:cursor => 'test'
|
112
|
+
}, {
|
113
|
+
:escape => %w{ position }
|
114
|
+
})
|
115
|
+
|
116
|
+
json = if marker =~ /^new\s+
|
117
|
+
google\.maps\.Marker\((
|
118
|
+
\{[^}]+\}
|
119
|
+
)/x
|
120
|
+
$1
|
121
|
+
end
|
122
|
+
|
123
|
+
assert_equal(
|
124
|
+
{ "raiseOnDrag" => true, "cursor" => 'test' },
|
125
|
+
JSON.load(json).reject { |k, v|
|
126
|
+
%w{ position }.include?(k)
|
127
|
+
}
|
128
|
+
)
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_to_g_json_point
|
132
|
+
assert_equal(
|
133
|
+
{ :coordinates => [ 10.0, 10.01, 0 ] },
|
134
|
+
@point.to_g_json_point
|
135
|
+
)
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_to_g_lat_lon_box
|
139
|
+
assert_equal(
|
140
|
+
{ :east => 5.0, :west => 0.0, :north => 5.0, :south => 0.0},
|
141
|
+
@polygon.to_g_lat_lon_box
|
142
|
+
)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -24,7 +24,9 @@ end
|
|
24
24
|
require File.join(File.dirname(__FILE__), %w{ .. lib geos_extensions })
|
25
25
|
|
26
26
|
puts "Ruby version #{RUBY_VERSION} - #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}"
|
27
|
+
puts "Geos library version #{Geos::VERSION}" if defined?(Geos::VERSION)
|
27
28
|
puts "GEOS version #{Geos::GEOS_VERSION}"
|
29
|
+
puts "GEOS extensions version #{Geos::GEOS_EXTENSIONS_VERSION}"
|
28
30
|
if defined?(Geos::FFIGeos)
|
29
31
|
puts "Using #{Geos::FFIGeos.geos_library_paths.join(', ')}"
|
30
32
|
end
|
data/test/writer_test.rb
CHANGED
@@ -2,12 +2,6 @@
|
|
2
2
|
$: << File.dirname(__FILE__)
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
begin
|
6
|
-
require 'json'
|
7
|
-
rescue LoadError
|
8
|
-
# do nothing
|
9
|
-
end
|
10
|
-
|
11
5
|
begin
|
12
6
|
require 'builder'
|
13
7
|
require 'stringio'
|
@@ -62,175 +56,10 @@ class GeosWriterTests < Test::Unit::TestCase
|
|
62
56
|
assert_in_delta(lat, 10.01, 0.000001)
|
63
57
|
end
|
64
58
|
|
65
|
-
def test_to_g_lat_lng
|
66
|
-
assert_equal("new google.maps.LatLng(10.01, 10.0)", @point.to_g_lat_lng)
|
67
|
-
assert_equal("new GLatLng(10.01, 10.0)", @point.to_g_lat_lng(:short_class => true))
|
68
|
-
end
|
69
|
-
|
70
59
|
def test_to_flickr_bbox
|
71
60
|
assert_equal('0.0,0.0,5.0,5.0', @polygon.to_flickr_bbox)
|
72
61
|
end
|
73
62
|
|
74
|
-
def test_to_jsonable
|
75
|
-
assert_equal({
|
76
|
-
:type => "point",
|
77
|
-
:lat => 10.01,
|
78
|
-
:lng => 10.0
|
79
|
-
}, @point.to_jsonable)
|
80
|
-
|
81
|
-
assert_equal({
|
82
|
-
:type => "polygon",
|
83
|
-
:polylines => [{
|
84
|
-
:points => "??_ibE_ibE_~cH_~cH_hgN_hgN~po]~po]",
|
85
|
-
:bounds => {
|
86
|
-
:sw => [ 0.0, 0.0 ],
|
87
|
-
:ne => [ 5.0, 5.0 ]
|
88
|
-
},
|
89
|
-
:levels=>"BBBBB"
|
90
|
-
}],
|
91
|
-
:options => {},
|
92
|
-
:encoded => true
|
93
|
-
}, @polygon.to_jsonable)
|
94
|
-
end
|
95
|
-
|
96
|
-
if defined?(JSON)
|
97
|
-
def test_to_g_polygon
|
98
|
-
assert_equal(
|
99
|
-
"new google.maps.Polygon([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], null, null, null, null, null, null)",
|
100
|
-
@polygon.to_g_polygon
|
101
|
-
)
|
102
|
-
|
103
|
-
assert_equal(
|
104
|
-
"new GPolygon([new GLatLng(0.0, 0.0), new GLatLng(1.0, 1.0), new GLatLng(2.5, 2.5), new GLatLng(5.0, 5.0), new GLatLng(0.0, 0.0)], null, null, null, null, null, null)",
|
105
|
-
@polygon.to_g_polygon({}, :short_class => true)
|
106
|
-
)
|
107
|
-
|
108
|
-
assert_equal(
|
109
|
-
"new google.maps.Polygon([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], '#b00b1e', 5, 0.5, '#b00b1e', null, {\"mouseOutTolerence\":5})",
|
110
|
-
@polygon.to_g_polygon(
|
111
|
-
:stroke_color => '#b00b1e',
|
112
|
-
:stroke_weight => 5,
|
113
|
-
:stroke_opacity => 0.5,
|
114
|
-
:fill_color => '#b00b1e',
|
115
|
-
:polygon_options => {
|
116
|
-
:mouse_out_tolerence => 5
|
117
|
-
}
|
118
|
-
)
|
119
|
-
)
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_to_g_polyline
|
123
|
-
assert_equal(
|
124
|
-
"new google.maps.Polyline([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], null, null, null, null)",
|
125
|
-
@polygon.to_g_polyline
|
126
|
-
)
|
127
|
-
|
128
|
-
assert_equal(
|
129
|
-
"new GPolyline([new GLatLng(0.0, 0.0), new GLatLng(1.0, 1.0), new GLatLng(2.5, 2.5), new GLatLng(5.0, 5.0), new GLatLng(0.0, 0.0)], null, null, null, null)",
|
130
|
-
@polygon.to_g_polyline({}, :short_class => true)
|
131
|
-
)
|
132
|
-
|
133
|
-
assert_equal(
|
134
|
-
"new google.maps.Polyline([new google.maps.LatLng(0.0, 0.0), new google.maps.LatLng(1.0, 1.0), new google.maps.LatLng(2.5, 2.5), new google.maps.LatLng(5.0, 5.0), new google.maps.LatLng(0.0, 0.0)], '#b00b1e', 5, 0.5, {\"mouseOutTolerence\":5})",
|
135
|
-
@polygon.to_g_polyline(
|
136
|
-
:color => '#b00b1e',
|
137
|
-
:weight => 5,
|
138
|
-
:opacity => 0.5,
|
139
|
-
:polyline_options => {
|
140
|
-
:mouse_out_tolerence => 5
|
141
|
-
}
|
142
|
-
)
|
143
|
-
)
|
144
|
-
end
|
145
|
-
|
146
|
-
def test_to_g_marker_long
|
147
|
-
marker = @point.to_g_marker
|
148
|
-
|
149
|
-
lat, lng, json = if marker =~ /^new\s+
|
150
|
-
google\.maps\.Marker\(
|
151
|
-
new\s+google\.maps\.LatLng\(
|
152
|
-
(\d+\.\d+)\s*,\s*
|
153
|
-
(\d+\.\d+)
|
154
|
-
\),\s*
|
155
|
-
((\{\}))
|
156
|
-
\)
|
157
|
-
/x
|
158
|
-
[ $1, $2, $3 ]
|
159
|
-
end
|
160
|
-
|
161
|
-
assert_in_delta(lng.to_f, 10.00, 0.000001)
|
162
|
-
assert_in_delta(lat.to_f, 10.01, 0.000001)
|
163
|
-
assert_equal(
|
164
|
-
{},
|
165
|
-
JSON.load(json)
|
166
|
-
)
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_to_g_marker_short_class
|
170
|
-
marker = @point.to_g_marker({}, :short_class => true)
|
171
|
-
|
172
|
-
lat, lng, json = if marker =~ /^new\s+
|
173
|
-
GMarker\(
|
174
|
-
new\s+GLatLng\(
|
175
|
-
(\d+\.\d+)\s*,\s*
|
176
|
-
(\d+\.\d+)
|
177
|
-
\),\s*
|
178
|
-
(\{\})
|
179
|
-
\)
|
180
|
-
/x
|
181
|
-
[ $1, $2, $3 ]
|
182
|
-
end
|
183
|
-
|
184
|
-
assert_in_delta(lng.to_f, 10.00, 0.000001)
|
185
|
-
assert_in_delta(lat.to_f, 10.01, 0.000001)
|
186
|
-
assert_equal(
|
187
|
-
{},
|
188
|
-
JSON.load(json)
|
189
|
-
)
|
190
|
-
end
|
191
|
-
|
192
|
-
|
193
|
-
def test_to_g_marker_with_options
|
194
|
-
marker = @point.to_g_marker(
|
195
|
-
:bounce_gravity => 1,
|
196
|
-
:bouncy => true
|
197
|
-
)
|
198
|
-
|
199
|
-
lat, lng, json = if marker =~ /^new\s+
|
200
|
-
google\.maps\.Marker\(
|
201
|
-
new\s+google\.maps\.LatLng\(
|
202
|
-
(\d+\.\d+)\s*,\s*
|
203
|
-
(\d+\.\d+)
|
204
|
-
\),\s*
|
205
|
-
(\{[^}]+\})
|
206
|
-
\)
|
207
|
-
/x
|
208
|
-
[ $1, $2, $3 ]
|
209
|
-
end
|
210
|
-
|
211
|
-
assert_in_delta(lng.to_f, 10.00, 0.000001)
|
212
|
-
assert_in_delta(lat.to_f, 10.01, 0.000001)
|
213
|
-
assert_equal(
|
214
|
-
{ "bounceGravity" => 1, "bouncy" => true },
|
215
|
-
JSON.load(json)
|
216
|
-
)
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_to_g_json_point
|
220
|
-
assert_equal(
|
221
|
-
{ :coordinates => [ 10.0, 10.01, 0 ] },
|
222
|
-
@point.to_g_json_point
|
223
|
-
)
|
224
|
-
end
|
225
|
-
|
226
|
-
def test_to_g_lat_lon_box
|
227
|
-
assert_equal(
|
228
|
-
{ :east => 5.0, :west => 0.0, :north => 5.0, :south => 0.0},
|
229
|
-
@polygon.to_g_lat_lon_box
|
230
|
-
)
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
63
|
if defined?(Builder::XmlMarkup)
|
235
64
|
def test_to_kml_point
|
236
65
|
out = StringIO.new
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geos-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.7
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- J Smith
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-06-27 00:00:00 Z
|
20
19
|
dependencies: []
|
21
20
|
|
22
21
|
description: Extensions for the GEOS library.
|
@@ -31,25 +30,31 @@ files:
|
|
31
30
|
- MIT-LICENSE
|
32
31
|
- README.rdoc
|
33
32
|
- Rakefile
|
33
|
+
- VERSION
|
34
|
+
- app/models/geos/geometry_column.rb
|
35
|
+
- app/models/geos/spatial_ref_sys.rb
|
34
36
|
- geos-extensions.gemspec
|
35
|
-
- lib/active_record_extensions.rb
|
36
|
-
- lib/active_record_extensions/connection_adapters/postgresql_adapter.rb
|
37
|
-
- lib/active_record_extensions/geometry_columns.rb
|
38
|
-
- lib/active_record_extensions/geospatial_scopes.rb
|
39
37
|
- lib/geos-extensions.rb
|
38
|
+
- lib/geos/active_record_extensions.rb
|
39
|
+
- lib/geos/active_record_extensions/connection_adapters/postgresql_adapter.rb
|
40
|
+
- lib/geos/active_record_extensions/geometry_columns.rb
|
41
|
+
- lib/geos/active_record_extensions/geospatial_scopes.rb
|
42
|
+
- lib/geos/geos_helper.rb
|
43
|
+
- lib/geos/google_maps.rb
|
44
|
+
- lib/geos/google_maps/api_2.rb
|
45
|
+
- lib/geos/google_maps/api_3.rb
|
46
|
+
- lib/geos/google_maps/polyline_encoder.rb
|
47
|
+
- lib/geos/rails/engine.rb
|
40
48
|
- lib/geos_extensions.rb
|
41
|
-
- lib/
|
42
|
-
- lib/google_maps.rb
|
43
|
-
- lib/google_maps/polyline_encoder.rb
|
44
|
-
- rails/railtie.rb
|
45
|
-
- rails/tasks/test.rake
|
49
|
+
- lib/tasks/test.rake
|
46
50
|
- test/fixtures/foos.yml
|
47
51
|
- test/geometry_columns_test.rb
|
48
52
|
- test/geospatial_scopes_test.rb
|
53
|
+
- test/google_maps_api_2_test.rb
|
54
|
+
- test/google_maps_api_3_test.rb
|
49
55
|
- test/reader_test.rb
|
50
56
|
- test/test_helper.rb
|
51
57
|
- test/writer_test.rb
|
52
|
-
has_rdoc: true
|
53
58
|
homepage: http://github.com/zoocasa/geos-extensions
|
54
59
|
licenses: []
|
55
60
|
|
@@ -79,13 +84,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
84
|
requirements: []
|
80
85
|
|
81
86
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
87
|
+
rubygems_version: 1.7.2
|
83
88
|
signing_key:
|
84
89
|
specification_version: 3
|
85
90
|
summary: Extensions for the GEOS library.
|
86
|
-
test_files:
|
87
|
-
|
88
|
-
- test/geospatial_scopes_test.rb
|
89
|
-
- test/reader_test.rb
|
90
|
-
- test/test_helper.rb
|
91
|
-
- test/writer_test.rb
|
91
|
+
test_files: []
|
92
|
+
|
@@ -1,8 +0,0 @@
|
|
1
|
-
|
2
|
-
module Geos
|
3
|
-
module ActiveRecord
|
4
|
-
autoload :GeometryColumns, File.join(GEOS_EXTENSIONS_BASE, %w{ active_record_extensions geometry_columns })
|
5
|
-
autoload :GeospatialScopes, File.join(GEOS_EXTENSIONS_BASE, %w{ active_record_extensions geospatial_scopes })
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
data/lib/geos_helper.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
|
2
|
-
module Geos::Helper
|
3
|
-
JS_ESCAPE_MAP = {
|
4
|
-
'\\' => '\\\\',
|
5
|
-
'</' => '<\/',
|
6
|
-
"\r\n" => '\n',
|
7
|
-
"\n" => '\n',
|
8
|
-
"\r" => '\n',
|
9
|
-
'"' => '\\"',
|
10
|
-
"'" => "\\'"
|
11
|
-
}
|
12
|
-
|
13
|
-
# Escape carrier returns and single and double quotes for JavaScript
|
14
|
-
# segments. Borrowed from ActiveSupport.
|
15
|
-
def self.escape_javascript(javascript) #:nodoc:
|
16
|
-
if javascript
|
17
|
-
javascript.gsub(/(\\|<\/|\r\n|[\n\r"'])/) { JS_ESCAPE_MAP[$1] }
|
18
|
-
else
|
19
|
-
''
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.camelize(lower_case_and_underscored_word, first_letter_in_uppercase = false)
|
24
|
-
if first_letter_in_uppercase
|
25
|
-
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
26
|
-
else
|
27
|
-
lower_case_and_underscored_word.to_s[0..0].downcase + camelize(lower_case_and_underscored_word, true)[1..-1]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.xml_options(*args) #:nodoc:
|
32
|
-
xml = if Builder::XmlMarkup === args.first
|
33
|
-
args.first
|
34
|
-
else
|
35
|
-
Builder::XmlMarkup.new(:indent => 4)
|
36
|
-
end
|
37
|
-
|
38
|
-
options = if Hash === args.last
|
39
|
-
args.last
|
40
|
-
else
|
41
|
-
Hash.new
|
42
|
-
end
|
43
|
-
|
44
|
-
[ xml, options ]
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.number_with_precision(number, precision = 6)
|
48
|
-
rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
|
49
|
-
"%01.#{precision}f" % rounded_number
|
50
|
-
end
|
51
|
-
end
|
data/lib/google_maps.rb
DELETED