From 9cac8ec2f66b9ef33078569f639912956c8de06f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 20 Feb 2013 00:09:38 -0700 Subject: [PATCH] Moving GeoJSON into parser package Need to discuss whether we want all to require constructing a new parser. I liked the simple `ol.io.geojson.read` function. --- src/ol/{io => parser}/geojson.js | 50 ++++++++++----------- test/spec/ol/{io => parser}/geojson.test.js | 16 ++++--- 2 files changed, 35 insertions(+), 31 deletions(-) rename src/ol/{io => parser}/geojson.js (75%) rename test/spec/ol/{io => parser}/geojson.test.js (91%) diff --git a/src/ol/io/geojson.js b/src/ol/parser/geojson.js similarity index 75% rename from src/ol/io/geojson.js rename to src/ol/parser/geojson.js index bfd8bd8250..1df8ebf4d4 100644 --- a/src/ol/io/geojson.js +++ b/src/ol/parser/geojson.js @@ -1,4 +1,4 @@ -goog.provide('ol.io.geojson'); +goog.provide('ol.parser.geojson'); goog.require('ol.Feature'); goog.require('ol.geom.Geometry'); @@ -17,10 +17,10 @@ goog.require('ol.geom.Polygon'); * ol.geom.Geometry|Array.} Parsed geometry or array * of geometries. */ -ol.io.geojson.read = function(str) { +ol.parser.geojson.read = function(str) { // TODO: add options and accept projection var json = /** @type {GeoJSONObject} */ (JSON.parse(str)); - return ol.io.geojson.parse_(json); + return ol.parser.geojson.parse_(json); }; @@ -31,43 +31,43 @@ ol.io.geojson.read = function(str) { * of geometries. * @private */ -ol.io.geojson.parse_ = function(json) { +ol.parser.geojson.parse_ = function(json) { var result; switch (json.type) { case 'FeatureCollection': - result = ol.io.geojson.parseFeatureCollection_( + result = ol.parser.geojson.parseFeatureCollection_( /** @type {GeoJSONFeatureCollection} */ (json)); break; case 'Feature': - result = ol.io.geojson.parseFeature_( + result = ol.parser.geojson.parseFeature_( /** @type {GeoJSONFeature} */ (json)); break; case 'GeometryCollection': - result = ol.io.geojson.parseGeometryCollection_( + result = ol.parser.geojson.parseGeometryCollection_( /** @type {GeoJSONGeometryCollection} */ (json)); break; case 'Point': - result = ol.io.geojson.parsePoint_( + result = ol.parser.geojson.parsePoint_( /** @type {GeoJSONGeometry} */ (json)); break; case 'LineString': - result = ol.io.geojson.parseLineString_( + result = ol.parser.geojson.parseLineString_( /** @type {GeoJSONGeometry} */ (json)); break; case 'Polygon': - result = ol.io.geojson.parsePolygon_( + result = ol.parser.geojson.parsePolygon_( /** @type {GeoJSONGeometry} */ (json)); break; case 'MultiPoint': - result = ol.io.geojson.parseMultiPoint_( + result = ol.parser.geojson.parseMultiPoint_( /** @type {GeoJSONGeometry} */ (json)); break; case 'MultiLineString': - result = ol.io.geojson.parseMultiLineString_( + result = ol.parser.geojson.parseMultiLineString_( /** @type {GeoJSONGeometry} */ (json)); break; case 'MultiPolygon': - result = ol.io.geojson.parseMultiPolygon_( + result = ol.parser.geojson.parseMultiPolygon_( /** @type {GeoJSONGeometry} */ (json)); break; default: @@ -82,11 +82,11 @@ ol.io.geojson.parse_ = function(json) { * @return {ol.Feature} Parsed feature. * @private */ -ol.io.geojson.parseFeature_ = function(json) { +ol.parser.geojson.parseFeature_ = function(json) { var geomJson = json.geometry, geometry = null; if (geomJson) { - geometry = /** @type {ol.geom.Geometry} */ (ol.io.geojson.parse_( + geometry = /** @type {ol.geom.Geometry} */ (ol.parser.geojson.parse_( /** @type {GeoJSONGeometry} */ (geomJson))); } var feature = new ol.Feature(); @@ -101,14 +101,14 @@ ol.io.geojson.parseFeature_ = function(json) { * @return {Array.} Parsed array of features. * @private */ -ol.io.geojson.parseFeatureCollection_ = function(json) { +ol.parser.geojson.parseFeatureCollection_ = function(json) { var features = json.features, len = features.length, result = new Array(len), i; for (i = 0; i < len; ++i) { - result[i] = ol.io.geojson.parse_( + result[i] = ol.parser.geojson.parse_( /** @type {GeoJSONFeature} */ (features[i])); } return result; @@ -120,14 +120,14 @@ ol.io.geojson.parseFeatureCollection_ = function(json) { * @return {Array.} Parsed array of geometries. * @private */ -ol.io.geojson.parseGeometryCollection_ = function(json) { +ol.parser.geojson.parseGeometryCollection_ = function(json) { var geometries = json.geometries, len = geometries.length, result = new Array(len), i; for (i = 0; i < len; ++i) { - result[i] = ol.io.geojson.parse_( + result[i] = ol.parser.geojson.parse_( /** @type {GeoJSONGeometry} */ (geometries[i])); } return result; @@ -139,7 +139,7 @@ ol.io.geojson.parseGeometryCollection_ = function(json) { * @return {ol.geom.LineString} Parsed linestring. * @private */ -ol.io.geojson.parseLineString_ = function(json) { +ol.parser.geojson.parseLineString_ = function(json) { return new ol.geom.LineString(json.coordinates); }; @@ -149,7 +149,7 @@ ol.io.geojson.parseLineString_ = function(json) { * @return {ol.geom.MultiLineString} Parsed multi-linestring. * @private */ -ol.io.geojson.parseMultiLineString_ = function(json) { +ol.parser.geojson.parseMultiLineString_ = function(json) { return new ol.geom.MultiLineString(json.coordinates); }; @@ -159,7 +159,7 @@ ol.io.geojson.parseMultiLineString_ = function(json) { * @return {ol.geom.MultiPoint} Parsed multi-point. * @private */ -ol.io.geojson.parseMultiPoint_ = function(json) { +ol.parser.geojson.parseMultiPoint_ = function(json) { return new ol.geom.MultiPoint(json.coordinates); }; @@ -169,7 +169,7 @@ ol.io.geojson.parseMultiPoint_ = function(json) { * @return {ol.geom.MultiPolygon} Parsed multi-polygon. * @private */ -ol.io.geojson.parseMultiPolygon_ = function(json) { +ol.parser.geojson.parseMultiPolygon_ = function(json) { return new ol.geom.MultiPolygon(json.coordinates); }; @@ -179,7 +179,7 @@ ol.io.geojson.parseMultiPolygon_ = function(json) { * @return {ol.geom.Point} Parsed multi-point. * @private */ -ol.io.geojson.parsePoint_ = function(json) { +ol.parser.geojson.parsePoint_ = function(json) { return new ol.geom.Point(json.coordinates); }; @@ -189,6 +189,6 @@ ol.io.geojson.parsePoint_ = function(json) { * @return {ol.geom.Polygon} Parsed polygon. * @private */ -ol.io.geojson.parsePolygon_ = function(json) { +ol.parser.geojson.parsePolygon_ = function(json) { return new ol.geom.Polygon(json.coordinates); }; diff --git a/test/spec/ol/io/geojson.test.js b/test/spec/ol/parser/geojson.test.js similarity index 91% rename from test/spec/ol/io/geojson.test.js rename to test/spec/ol/parser/geojson.test.js index 7ad58d4455..dfbd3ae70d 100644 --- a/test/spec/ol/io/geojson.test.js +++ b/test/spec/ol/parser/geojson.test.js @@ -1,4 +1,6 @@ -describe('ol.io.geojson', function() { +goog.provide('ol.test.parser.geojson'); + +describe('ol.parser.geojson', function() { var data = { 'type': 'FeatureCollection', @@ -72,7 +74,7 @@ describe('ol.io.geojson', function() { coordinates: [10, 20] }); - var obj = ol.io.geojson.read(str); + var obj = ol.parser.geojson.read(str); expect(obj).toBeA(ol.geom.Point); expect(obj.coordinates[0]).toBe(10); expect(obj.coordinates[1]).toBe(20); @@ -84,7 +86,7 @@ describe('ol.io.geojson', function() { coordinates: [[10, 20], [30, 40]] }); - var obj = ol.io.geojson.read(str); + var obj = ol.parser.geojson.read(str); expect(obj).toBeA(ol.geom.LineString); expect(obj.coordinates[0]).toBe(10); expect(obj.coordinates[1]).toBe(20); @@ -101,7 +103,7 @@ describe('ol.io.geojson', function() { coordinates: [outer, inner1, inner2] }); - var obj = ol.io.geojson.read(str); + var obj = ol.parser.geojson.read(str); expect(obj).toBeA(ol.geom.Polygon); expect(obj.rings.length).toBe(3); expect(obj.rings[0]).toBeA(ol.geom.LinearRing); @@ -118,7 +120,7 @@ describe('ol.io.geojson', function() { ] }); - var array = ol.io.geojson.read(str); + var array = ol.parser.geojson.read(str); expect(array.length).toBe(2); expect(array[0]).toBeA(ol.geom.Point); expect(array[1]).toBeA(ol.geom.LineString); @@ -126,7 +128,7 @@ describe('ol.io.geojson', function() { it('parses feature collection', function() { var str = JSON.stringify(data), - array = ol.io.geojson.read(str); + array = ol.parser.geojson.read(str); expect(array.length).toBe(2); @@ -146,3 +148,5 @@ describe('ol.io.geojson', function() { }); }); + +goog.require('ol.parser.geojson');