ruby_mapnik 0.1 → 0.1.2

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 CHANGED
@@ -11,13 +11,13 @@ https://github.com/mapnik/Ruby-Mapnik
11
11
  == Description
12
12
 
13
13
  A set of bindings between Ruby and Mapnik. Supports many of the common uses for
14
- Mapnik, and one day, might support al of them. Rundering is available using
15
- the plain agg library, or via Cairo, if the rcairo gem is installed and
16
- Mapnik has been compiled with Cairo support.
14
+ Mapnik, and one day, might support all of them. Rendering is available using
15
+ the standard AGG library, or additionally via Cairo, if the rcairo gem is
16
+ installed and Mapnik has been compiled with Cairo support.
17
17
 
18
18
  == Installation
19
19
 
20
- Coming Soon!
20
+ gem install ruby_mapnik
21
21
 
22
22
  Note: on osx the default rake compile will try to build universal, and your
23
23
  mapnik install is unlikely built universal. Check the architecture of libmapnik2.dylib like:
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ Hoe.plugin :bundler, :rubygems, :doofus, :git
28
28
  Hoe.spec 'ruby_mapnik' do
29
29
  developer('Elliot Laster', 'elliotlaster@gmail.com')
30
30
  self.readme_file = 'README.rdoc'
31
- # self.history_file = 'CHANGELOG.rdoc'
31
+ self.history_file = 'History.txt'
32
32
  self.extra_deps << ['rice', '>= 1.4.2']
33
33
  self.extra_dev_deps << ['rake-compiler', '>= 0']
34
34
 
@@ -30,15 +30,9 @@ SOFTWARE.
30
30
  #include <mapnik/wkt/wkt_factory.hpp>
31
31
  #include <mapnik/feature.hpp>
32
32
 
33
- // A cop out of sorts. I'll need to do more research on how to transfer ownership
34
- // via rice.
35
- void add_geometry(mapnik::Feature * self, std::string wkt){
36
- std::pair<bool,mapnik::geometry_type*> result = mapnik::from_wkt(wkt);
37
- if (result.first){
38
- self->add_geometry(result.second);
39
- } else {
40
- throw std::runtime_error("Failed to parse WKT");
41
- }
33
+ void add_geometries_from_wkt(mapnik::Feature * self, std::string wkt){
34
+ bool result = mapnik::from_wkt(wkt, self->paths());
35
+ if (!result) throw std::runtime_error("Failed to parse WKT");
42
36
  }
43
37
 
44
38
  void register_feature(Rice::Module rb_mapnik){
@@ -52,5 +46,5 @@ void register_feature(Rice::Module rb_mapnik){
52
46
  rb_cfeature.define_method("number_of_geometries", &mapnik::Feature::num_geometries);
53
47
  rb_cfeature.define_method("envelope", &mapnik::Feature::envelope);
54
48
 
55
- rb_cfeature.define_method("add_geometry", &add_geometry, Rice::Arg("geom"));
49
+ rb_cfeature.define_method("add_geometries_from_wkt", &add_geometries_from_wkt, Rice::Arg("geom"));
56
50
  }
@@ -32,14 +32,25 @@ SOFTWARE.
32
32
  #include <mapnik/wkt/wkt_factory.hpp>
33
33
 
34
34
  namespace{
35
+
36
+ typedef boost::ptr_vector<mapnik::geometry_type> path_type;
37
+
35
38
  // Borrowed from the python bindings...
36
- mapnik::geometry_type * make_from_wkt(std::string const& wkt) {
39
+ void from_wkt_impl(path_type& p, std::string const& wkt)
40
+ {
41
+ bool result = mapnik::from_wkt(wkt, p);
42
+ if (!result) throw std::runtime_error("Failed to parse WKT");
43
+ }
44
+
45
+ /*
46
+ mapnik::geometry_type * from_wkt_impl(std::string const& wkt) {
37
47
  std::pair<bool,mapnik::geometry_type*> result = mapnik::from_wkt(wkt);
38
48
  if (result.first){
39
49
  return result.second;
40
50
  }
41
51
  throw std::runtime_error("Failed to parse WKT");
42
52
  }
53
+ */
43
54
 
44
55
  }
45
56
 
@@ -65,9 +76,11 @@ void register_geometry(Rice::Module rb_mapnik){
65
76
  geometry_enum.define_value("MultiPolygon",mapnik::MultiPolygon);
66
77
 
67
78
  Rice::Data_Type< mapnik::geometry_type > rb_cgeometry2d = Rice::define_class_under< mapnik::geometry_type >(rb_mapnik, "Geometry2d");
68
- rb_cgeometry2d.define_singleton_method("from_wkt", &make_from_wkt, Rice::Arg("wkt"));
69
79
  rb_cgeometry2d.define_method("envelope", &mapnik::geometry_type::envelope);
70
80
  rb_cgeometry2d.define_method("type", &mapnik::geometry_type::type);
71
81
  rb_cgeometry2d.define_method("area", &mapnik::geometry_type::area);
82
+
83
+ Rice::Data_Type< path_type > rb_cpath = Rice::define_class_under< path_type >(rb_mapnik, "Path");
84
+ rb_cpath.define_singleton_method("from_wkt", &from_wkt_impl, Rice::Arg("wkt"));
72
85
  }
73
86
 
@@ -163,13 +163,25 @@ namespace {
163
163
  void register_map(Rice::Module rb_mapnik){
164
164
  /*
165
165
  @@Module_var rb_mapnik = Mapnik
166
+ Document-class: Mapnik::Map
167
+
168
+ Maps are exactly what they sound like: the reason you are using mapnik. Maps
169
+ have layers, which wrap a datasource, and styles, which contain instructions
170
+ on how to render those layers.
171
+
172
+ Maps can be rendered to basic image formats (jpg, png), as well as to cairo
173
+ surfaces and contexts, if mapnik has been compiled with cairo support, and if
174
+ the rcairo gem is installed.
175
+
166
176
  */
167
177
  Rice::Data_Type< mapnik::Map > rb_cmap = Rice::define_class_under< mapnik::Map >(rb_mapnik, "Map");
168
178
 
169
179
  /*
170
180
  * Document-method: new
181
+ * Instantiates a new map object. The map is yielded if a block is given.
171
182
  * @return [Mapnik::Map] a new map object
172
183
  * @yield [map] the new map object
184
+
173
185
  */
174
186
  rb_cmap.define_constructor(Rice::Constructor< mapnik::Map >());
175
187
 
@@ -235,6 +247,7 @@ void register_map(Rice::Module rb_mapnik){
235
247
 
236
248
  /*
237
249
  * Document-method: height
250
+ * The height of the rendered image in pixels.
238
251
  * @return [Integer]
239
252
  */
240
253
  rb_cmap.define_method("height", &mapnik::Map::height);
@@ -243,7 +256,8 @@ void register_map(Rice::Module rb_mapnik){
243
256
  * Document-method: height=
244
257
  * call-seq:
245
258
  * height=(height_in_pixels)
246
- * @param [Integer]
259
+ * Sets the height of the rendered image.
260
+ * @param [Integer] height_in_pixels
247
261
  * @return [nil]
248
262
  */
249
263
  rb_cmap.define_method("height=", &mapnik::Map::set_height);
@@ -265,6 +279,8 @@ void register_map(Rice::Module rb_mapnik){
265
279
 
266
280
  /*
267
281
  * Document-method: srs
282
+ * The spatial reference system string for the map. It does not need to match
283
+ * the srs of any of the layers.
268
284
  * @return [String]
269
285
  */
270
286
  rb_cmap.define_method("srs", &mapnik::Map::srs);
@@ -273,6 +289,9 @@ void register_map(Rice::Module rb_mapnik){
273
289
  * Document-method: srs=
274
290
  * call-seq:
275
291
  * srs=(new_srs)
292
+ * Sets the spatial reference system that will be used to render the map. All
293
+ * layers will have thier data reprojected to this srs behind the scenes.
294
+ *
276
295
  * @param [String]
277
296
  * @return [nil]
278
297
  */
@@ -280,14 +299,16 @@ void register_map(Rice::Module rb_mapnik){
280
299
 
281
300
  /*
282
301
  * Document-method: width
302
+ * The width of the image in pixels.
283
303
  * @return [Integer]
284
304
  */
285
305
  rb_cmap.define_method("width", &mapnik::Map::width);
286
306
 
287
307
  /*
288
- * Document-method width=
308
+ * Document-method: width=
289
309
  * call-seq:
290
310
  * width=(new_width)
311
+ * Sets the width of the image.
291
312
  * @param [Integer] new_width in pixels
292
313
  * @return [nil]
293
314
  */
@@ -327,6 +348,7 @@ void register_map(Rice::Module rb_mapnik){
327
348
 
328
349
  /*
329
350
  * Document-method: zoom_all
351
+ * Zooms the map so that all of the envelopes of the layers are visible.
330
352
  * @return [nil]
331
353
  */
332
354
  rb_cmap.define_method("zoom_all", &mapnik::Map::zoom_all);
@@ -335,6 +357,9 @@ void register_map(Rice::Module rb_mapnik){
335
357
  * Document-method: zoom_to_box
336
358
  * call-seq:
337
359
  * zoom_to_box(envelope)
360
+ * Zooms the map such that the envelope provided is all that will be rendered.
361
+ * The height and width of the map will stay the same, but the content will be
362
+ * zoomed.
338
363
  * @param [Mapnik::Envelope] envelope
339
364
  * @return [nil]
340
365
  */
@@ -344,6 +369,7 @@ void register_map(Rice::Module rb_mapnik){
344
369
  * Document-method: resize
345
370
  * call-seq:
346
371
  * resize(new_width, new_height)
372
+ * Resizes the height and width of the map in one step.
347
373
  * @param [Integer] new_width in pixels
348
374
  * @param [Integer] new_height in pixels
349
375
  * @return [nil]
@@ -39,7 +39,9 @@ LIBDIR = Config::CONFIG['libdir']
39
39
  INCLUDEDIR = Config::CONFIG['includedir']
40
40
 
41
41
  $LDFLAGS += " -lmapnik2 "
42
- $CFLAGS += %x{mapnik-config --cflags}
42
+
43
+ # force whitespace padding to avoid: https://github.com/mapnik/Ruby-Mapnik/issues/7
44
+ $CFLAGS += " " + %x{mapnik-config --cflags} + " "
43
45
 
44
46
  #------------------------------------------------------------------------------#
45
47
  # Ruby-Mapnik configuration
@@ -75,4 +77,4 @@ if RUBY_PLATFORM =~ /darwin/
75
77
  append_ld_flags '-all_load'
76
78
  end
77
79
 
78
- create_makefile("ruby_mapnik")
80
+ create_makefile("ruby_mapnik/ruby_mapnik")
@@ -62,7 +62,6 @@ module Mapnik
62
62
  styles
63
63
  end
64
64
 
65
- private :__style_list__, :__append_style__
66
65
 
67
66
  end
68
67
 
@@ -86,6 +86,7 @@ module Mapnik
86
86
 
87
87
  class << self
88
88
 
89
+ # Loads a map from an xml string.
89
90
  # @return [Mapnik::Map]
90
91
  def from_xml(xml, strict = false, base_path = "")
91
92
  map = new
@@ -93,15 +94,25 @@ module Mapnik
93
94
  map
94
95
  end
95
96
 
97
+ # Loads a map from an xml file.
96
98
  # @return [Mapnik::Map]
97
- def from_file(filename, strict = false)
99
+ # @param [File, String] file Can be a string representing a file path, or a file object
100
+ def from_file(file, strict = false)
101
+ if file.is_a?(File)
102
+ path = File.expand_path(file.path)
103
+ else
104
+ path = file
105
+ end
98
106
  map = new
99
- __load_map__(map, filename, strict)
107
+ __load_map__(map, path, strict)
100
108
  map
101
109
  end
102
110
 
103
111
  end
104
112
 
113
+ # Creates and yeilds a new style object, then adds that style to the
114
+ # map's collection of styles, under the name passed in. Makes no effort
115
+ # to de-dupe style name collisions.
105
116
  # @return [Mapnik::Style]
106
117
  def style(name)
107
118
  style = Mapnik::Style.new
@@ -109,6 +120,7 @@ module Mapnik
109
120
  styles[name] = style
110
121
  end
111
122
 
123
+ # The styles for this map.
112
124
  # @return [Mapnik::StyleContainer]
113
125
  def styles
114
126
  styles = MapStyleContainer[__styles__]
@@ -116,6 +128,9 @@ module Mapnik
116
128
  styles
117
129
  end
118
130
 
131
+ # Creates and yields a new layer object, then adds that layer to the map's
132
+ # collection of layers. If the srs is not provided in the initial call,
133
+ # it will need to be provided in the block.
119
134
  # @return [Mapnik::Layer]
120
135
  def layer(name, srs = nil)
121
136
  layer = Mapnik::Layer.new(name, srs)
@@ -124,20 +139,22 @@ module Mapnik
124
139
  layers << layer
125
140
  end
126
141
 
142
+ # The layers associated with this map
127
143
  # @return [Mapnik::MapLayerContainer]
128
144
  def layers
129
145
  layers = MapLayerContainer.new(__layers__)
130
146
  layers.map = self
131
147
  layers
132
148
  end
133
-
134
- # @return [nil]
149
+
150
+ # Renders the map to a file. Returns true or false depending if the
151
+ # render was successful. The image type is inferred from the filename.
152
+ # @param [String] filename Should end in one of "png", "jpg", or "tiff"
153
+ # @return [Boolean]
135
154
  def render_to_file(filename)
136
155
  __render_to_file__(filename)
156
+ return File.exists?(filename)
137
157
  end
138
-
139
- private :__styles__, :__insert_style__, :__remove_style__, :__layers__,
140
- :__add_layer__, :__remove_layer__
141
158
 
142
159
  end
143
160
 
@@ -39,8 +39,6 @@ module Mapnik
39
39
  __inverse_pt__(obj)
40
40
  end
41
41
  end
42
-
43
- private :__forward_pt__, :__forward_env__, :__inverse_pt__, :__inverse_env__
44
-
42
+
45
43
  end
46
44
  end
@@ -99,9 +99,7 @@ module Mapnik
99
99
  symbol_container.rule = self
100
100
  symbol_container
101
101
  end
102
-
103
- private :__symbols__, :__append_symbol__, :__remove_symbol__
104
-
102
+
105
103
  end
106
104
  end
107
105
 
@@ -50,9 +50,7 @@ module Mapnik
50
50
  dashes.stroke = self
51
51
  dashes
52
52
  end
53
-
54
- private :__dashes__, :__add_dash__
55
-
53
+
56
54
  end
57
55
 
58
56
  end
@@ -58,9 +58,7 @@ module Mapnik
58
58
  rules.style = self
59
59
  rules
60
60
  end
61
-
62
- private :__rules__, :__add_rule__
63
-
61
+
64
62
  end
65
63
 
66
64
  end
data/lib/ruby_mapnik.rb CHANGED
@@ -23,7 +23,7 @@ require 'forwardable'
23
23
 
24
24
  path = File.expand_path(File.dirname(__FILE__))
25
25
 
26
- require 'ruby_mapnik_config'
26
+ require "#{path}/ruby_mapnik_config"
27
27
  require "#{path}/ruby_mapnik/ruby_mapnik"
28
28
  require "#{path}/ruby_mapnik/mapnik/rule"
29
29
  require "#{path}/ruby_mapnik/mapnik/style"
@@ -37,7 +37,7 @@ require "#{path}/ruby_mapnik/mapnik/tile"
37
37
 
38
38
 
39
39
  module Mapnik
40
- VERSION = '0.1'
40
+ VERSION = '0.1.2'
41
41
 
42
42
  FontEngine.register_fonts(FONT_PATH)
43
43
  DatasourceCache.register(INPUT_PLUGIN_PATH)
data/test/test_helper.rb CHANGED
@@ -20,7 +20,9 @@
20
20
  ******************************************************************************
21
21
  =end
22
22
  require "test/unit"
23
- require "ruby_mapnik"
23
+
24
+ CURRENT_PATH = File.expand_path(File.dirname(__FILE__))
25
+ require File.join(CURRENT_PATH, '..', 'lib', 'ruby_mapnik')
24
26
 
25
27
  unless defined?(SHAPEFILE)
26
28
  SHAPEFILE = "#{File.expand_path(File.dirname(__FILE__))}/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD"
@@ -26,7 +26,7 @@ class TestMapnikFeature < Test::Unit::TestCase
26
26
  def test_should_add_a_geometry
27
27
  feature = Mapnik::Feature.new(1)
28
28
  assert_equal(0, feature.number_of_geometries)
29
- feature.add_geometry("POINT(30 10)")
29
+ feature.add_geometries_from_wkt("POINT(30 10)")
30
30
  assert_equal(1, feature.number_of_geometries)
31
31
  end
32
32
 
@@ -2,6 +2,8 @@ require "test_helper"
2
2
 
3
3
  class TestMapnikGeometry < Test::Unit::TestCase
4
4
 
5
+ STATEMENT = "Geometry tests no longer valid. See https://github.com/mapnik/Ruby-Mapnik/issues/11"
6
+
5
7
  def test_presence
6
8
  assert Mapnik::GeometryType
7
9
  assert Mapnik::Geometry2d
@@ -13,60 +15,72 @@ class TestMapnikGeometry < Test::Unit::TestCase
13
15
  end
14
16
 
15
17
  def test_should_make_point_from_wkt
16
- point = Mapnik::Geometry2d.from_wkt("POINT(30 10)")
17
- assert_equal Mapnik::GeometryType::Point, point.type
18
- assert_equal 30, point.envelope.min_x
19
- assert_equal 30, point.envelope.max_x
20
- assert_equal 10, point.envelope.max_y
21
- assert_equal 10, point.envelope.min_y
22
- assert_equal 0, point.area
18
+ omit(STATEMENT)
19
+ # point = Mapnik::Geometry2d.from_wkt("POINT(30 10)")
20
+ # assert_equal Mapnik::GeometryType::Point, point.type
21
+ # assert_equal 30, point.envelope.min_x
22
+ # assert_equal 30, point.envelope.max_x
23
+ # assert_equal 10, point.envelope.max_y
24
+ # assert_equal 10, point.envelope.min_y
25
+ # assert_equal 0, point.area
23
26
  end
24
27
 
25
28
  def test_should_make_linestring_from_wkt
26
- linestring = Mapnik::Geometry2d.from_wkt("LINESTRING (29 11, 12 30, 41 40)")
27
- assert_equal Mapnik::GeometryType::LineString, linestring.type
28
- assert_equal 12, linestring.envelope.min_x
29
- assert_equal 41, linestring.envelope.max_x
30
- assert_equal 40, linestring.envelope.max_y
31
- assert_equal 11, linestring.envelope.min_y
29
+ omit(STATEMENT)
30
+ # linestring = Mapnik::Geometry2d.from_wkt("LINESTRING (29 11, 12 30, 41 40)")
31
+ # assert_equal Mapnik::GeometryType::LineString, linestring.type
32
+ # assert_equal 12, linestring.envelope.min_x
33
+ # assert_equal 41, linestring.envelope.max_x
34
+ # assert_equal 40, linestring.envelope.max_y
35
+ # assert_equal 11, linestring.envelope.min_y
32
36
  # assert_equal 0, linestring.area -> Not sure what the correct value is here
33
37
  end
34
38
 
35
39
  def test_should_make_polygon_from_wkt
36
- polygon = Mapnik::Geometry2d.from_wkt("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))")
37
- assert_equal Mapnik::GeometryType::Polygon, polygon.type
38
- assert_equal 10, polygon.envelope.min_x
39
- assert_equal 40, polygon.envelope.max_x
40
- assert_equal 40, polygon.envelope.max_y
41
- assert_equal 10, polygon.envelope.min_y
40
+ omit(STATEMENT)
41
+ # polygon = Mapnik::Geometry2d.from_wkt("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))")
42
+ # assert_equal Mapnik::GeometryType::Polygon, polygon.type
43
+ # assert_equal 10, polygon.envelope.min_x
44
+ # assert_equal 40, polygon.envelope.max_x
45
+ # assert_equal 40, polygon.envelope.max_y
46
+ # assert_equal 10, polygon.envelope.min_y
42
47
  # assert_equal 0, polygon.area
43
48
  end
44
49
 
45
50
  def test_should_make_multipoint_from_wkt
46
- multipoint = Mapnik::Geometry2d.from_wkt("MULTIPOINT (10 40, 40 30, 20 20, 30 10)")
47
- assert_equal Mapnik::GeometryType::MultiPoint, multipoint.type
48
- assert_equal 10, multipoint.envelope.min_x
49
- assert_equal 40, multipoint.envelope.max_x
50
- assert_equal 40, multipoint.envelope.max_y
51
- assert_equal 10, multipoint.envelope.min_y
51
+ omit(STATEMENT)
52
+ # multipoint = Mapnik::Geometry2d.from_wkt("MULTIPOINT (10 40, 40 30, 20 20, 30 10)")
53
+ # assert_equal Mapnik::GeometryType::MultiPoint, multipoint.type
54
+ # assert_equal 10, multipoint.envelope.min_x
55
+ # assert_equal 40, multipoint.envelope.max_x
56
+ # assert_equal 40, multipoint.envelope.max_y
57
+ # assert_equal 10, multipoint.envelope.min_y
52
58
  end
53
59
 
54
60
  def test_should_make_multilinestring_from_wkt
55
- multi_line = Mapnik::Geometry2d.from_wkt("MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))")
56
- assert_equal Mapnik::GeometryType::MultiLineString, multi_line.type
57
- assert_equal 10, multi_line.envelope.min_x
58
- assert_equal 40, multi_line.envelope.max_x
59
- assert_equal 40, multi_line.envelope.max_y
60
- assert_equal 10, multi_line.envelope.min_y
61
+ omit(STATEMENT)
62
+ # multi_line = Mapnik::Geometry2d.from_wkt("MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))")
63
+ # assert_equal Mapnik::GeometryType::MultiLineString, multi_line.type
64
+ # assert_equal 10, multi_line.envelope.min_x
65
+ # assert_equal 40, multi_line.envelope.max_x
66
+ # assert_equal 40, multi_line.envelope.max_y
67
+ # assert_equal 10, multi_line.envelope.min_y
61
68
  end
62
69
 
63
70
  def test_should_make_multipolygon_from_wkt
64
- multi_polygon = Mapnik::Geometry2d.from_wkt("MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))")
65
- assert_equal Mapnik::GeometryType::MultiPolygon, multi_polygon.type
66
- assert_equal 5, multi_polygon.envelope.min_x
67
- assert_equal 45, multi_polygon.envelope.max_x
68
- assert_equal 40, multi_polygon.envelope.max_y
69
- assert_equal 5, multi_polygon.envelope.min_y
71
+ omit(STATEMENT)
72
+ # multi_polygon = Mapnik::Geometry2d.from_wkt("MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))")
73
+ # assert_equal Mapnik::GeometryType::MultiPolygon, multi_polygon.type
74
+ # assert_equal 5, multi_polygon.envelope.min_x
75
+ # assert_equal 45, multi_polygon.envelope.max_x
76
+ # assert_equal 40, multi_polygon.envelope.max_y
77
+ # assert_equal 5, multi_polygon.envelope.min_y
70
78
  end
79
+
80
+ private
71
81
 
82
+ def omit(str)
83
+ puts str
84
+ end
85
+
72
86
  end
@@ -147,7 +147,8 @@ class TestMapnikMap < Test::Unit::TestCase
147
147
  map = build_complete_map
148
148
  filename = File.join(File.expand_path(File.dirname(__FILE__)), "../tmp/world.png")
149
149
  assert_equal 0, File.size(filename) if File.exists?(filename)
150
- map.render_to_file(filename)
150
+ assert map.render_to_file(filename)
151
+ assert File.exists?(filename)
151
152
  File.delete(filename)
152
153
  end
153
154
 
@@ -158,15 +159,23 @@ class TestMapnikMap < Test::Unit::TestCase
158
159
  assert_equal map_1.srs, map_2.srs
159
160
  end
160
161
 
161
- def test_should_load_from_file
162
+ def test_should_load_from_file_path_string
162
163
  file_path = File.join(File.expand_path(File.dirname(__FILE__)), "data", "test_map.xml")
163
164
  map = Mapnik::Map.from_file(file_path)
164
165
  assert map.layers.any?
165
166
  assert map.styles['My Style']
166
167
  end
167
168
 
168
- private
169
+ def test_should_load_from_file
170
+ file = File.open(File.join(File.expand_path(File.dirname(__FILE__)), "data", "test_map.xml"))
171
+ map = Mapnik::Map.from_file(file)
172
+ assert map.layers.any?
173
+ assert map.styles['My Style']
174
+ end
169
175
 
176
+
177
+ private
178
+
170
179
  def build_complete_map
171
180
  map = Mapnik::Map.new
172
181
  map.width = 600
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_mapnik
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- version: "0.1"
9
+ - 2
10
+ version: 0.1.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - Elliot Laster
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-09-09 00:00:00 -04:00
18
+ date: 2011-10-09 00:00:00 -04:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -64,9 +65,9 @@ dependencies:
64
65
  version_requirements: *id003
65
66
  description: |-
66
67
  A set of bindings between Ruby and Mapnik. Supports many of the common uses for
67
- Mapnik, and one day, might support al of them. Rundering is available using
68
- the plain agg library, or via Cairo, if the rcairo gem is installed and
69
- Mapnik has been compiled with Cairo support.
68
+ Mapnik, and one day, might support all of them. Rendering is available using
69
+ the standard AGG library, or additionally via Cairo, if the rcairo gem is
70
+ installed and Mapnik has been compiled with Cairo support.
70
71
  email:
71
72
  - elliotlaster@gmail.com
72
73
  executables: []