From 7bc2081138c19cff8b4294e3c8d845eb8bc73197 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 9 Dec 2014 11:53:19 +0100 Subject: [PATCH 1/4] Update closure-util to v1.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 33c143b78f..4022d67e81 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "async": "0.9.0", - "closure-util": "1.1.0", + "closure-util": "1.2.0", "fs-extra": "0.12.0", "graceful-fs": "3.0.2", "htmlparser2": "3.7.3", From 443c9749fbc6c3940ceeee199998683f9e10d51b Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 17 Nov 2014 13:26:29 +0100 Subject: [PATCH 2/4] Update closure-library version --- closure-util.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/closure-util.json b/closure-util.json index f408d99efd..88e5b109ac 100644 --- a/closure-util.json +++ b/closure-util.json @@ -1,3 +1,3 @@ { - "library_url": "https://github.com/google/closure-library/archive/fb35d5232edef340dd9a7c6e479556829d0fa452.zip" + "library_url": "https://github.com/google/closure-library/archive/5b7a6ce1974c230dc169cb93ed5f9689e880aa50.zip" } From f8b59dbd5309bff11887ededd6e22dfd89d98023 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 17 Nov 2014 11:49:05 +0100 Subject: [PATCH 3/4] Use goog.array.extend instead of ol.array.safeExtend The upstream implementation now supports large arrays. See https://github.com/google/closure-library/pull/356 --- src/ol/array.js | 19 ------------------- src/ol/format/gml/gml3format.js | 4 ++-- src/ol/format/gml/gmlbaseformat.js | 4 ++-- src/ol/format/kmlformat.js | 5 ++--- src/ol/geom/linestring.js | 4 ++-- src/ol/geom/multilinestring.js | 8 ++++---- src/ol/geom/multipoint.js | 4 ++-- src/ol/geom/multipolygon.js | 6 +++--- src/ol/geom/polygon.js | 3 +-- 9 files changed, 18 insertions(+), 39 deletions(-) diff --git a/src/ol/array.js b/src/ol/array.js index 9e4ffc1da2..882a501262 100644 --- a/src/ol/array.js +++ b/src/ol/array.js @@ -37,25 +37,6 @@ ol.array.binaryFindNearest = function(arr, target) { }; -/** - * Safe version of goog.array.extend that does not risk to overflow the stack - * even if `array2` contains a large number of elements. - * - * @param {Array.} array1 Array 1. - * @param {Array.} array2 Array 2. - * @template T - */ -ol.array.safeExtend = function(array1, array2) { - // goog.array.extend uses Array.prototype.push.apply, which can overflow the - // stack if array2 contains too many elements. Repeatedly calling push - // performs as well on modern browsers. - var i, ii; - for (i = 0, ii = array2.length; i < ii; ++i) { - array1.push(array2[i]); - } -}; - - /** * @param {Array.} arr Array. * @param {number} target Target. diff --git a/src/ol/format/gml/gml3format.js b/src/ol/format/gml/gml3format.js index 59167e1f40..d0d879b0b6 100644 --- a/src/ol/format/gml/gml3format.js +++ b/src/ol/format/gml/gml3format.js @@ -1,12 +1,12 @@ goog.provide('ol.format.GML'); goog.provide('ol.format.GML3'); +goog.require('goog.array'); goog.require('goog.asserts'); goog.require('goog.dom'); goog.require('goog.dom.NodeType'); goog.require('goog.object'); goog.require('ol.Feature'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.format.Feature'); goog.require('ol.format.GMLBase'); @@ -283,7 +283,7 @@ ol.format.GML3.prototype.readSurface_ = function(node, objectStack) { var ends = [flatCoordinates.length]; var i, ii; for (i = 1, ii = flatLinearRings.length; i < ii; ++i) { - ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); + goog.array.extend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length); } polygon.setFlatCoordinates( diff --git a/src/ol/format/gml/gmlbaseformat.js b/src/ol/format/gml/gmlbaseformat.js index 1e1e9dcfc7..6baa27b61f 100644 --- a/src/ol/format/gml/gmlbaseformat.js +++ b/src/ol/format/gml/gmlbaseformat.js @@ -3,13 +3,13 @@ // envelopes/extents, only geometries! goog.provide('ol.format.GMLBase'); +goog.require('goog.array'); goog.require('goog.asserts'); goog.require('goog.dom'); goog.require('goog.dom.NodeType'); goog.require('goog.object'); goog.require('goog.string'); goog.require('ol.Feature'); -goog.require('ol.array'); goog.require('ol.format.Feature'); goog.require('ol.format.XMLFeature'); goog.require('ol.geom.Geometry'); @@ -390,7 +390,7 @@ ol.format.GMLBase.prototype.readPolygon = function(node, objectStack) { var ends = [flatCoordinates.length]; var i, ii; for (i = 1, ii = flatLinearRings.length; i < ii; ++i) { - ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); + goog.array.extend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length); } polygon.setFlatCoordinates( diff --git a/src/ol/format/kmlformat.js b/src/ol/format/kmlformat.js index 64ed4ef197..36114a3825 100644 --- a/src/ol/format/kmlformat.js +++ b/src/ol/format/kmlformat.js @@ -14,7 +14,6 @@ goog.require('goog.math'); goog.require('goog.object'); goog.require('goog.string'); goog.require('ol.Feature'); -goog.require('ol.array'); goog.require('ol.color'); goog.require('ol.feature'); goog.require('ol.format.Feature'); @@ -850,7 +849,7 @@ ol.format.KML.readMultiGeometry_ = function(node, objectStack) { geometry = geometries[i]; goog.asserts.assertInstanceof(geometry, ol.geom.Point); goog.asserts.assert(geometry.getLayout() == layout); - ol.array.safeExtend(flatCoordinates, geometry.getFlatCoordinates()); + goog.array.extend(flatCoordinates, geometry.getFlatCoordinates()); } var multiPoint = new ol.geom.MultiPoint(null); multiPoint.setFlatCoordinates(layout, flatCoordinates); @@ -916,7 +915,7 @@ ol.format.KML.readPolygon_ = function(node, objectStack) { var ends = [flatCoordinates.length]; var i, ii; for (i = 1, ii = flatLinearRings.length; i < ii; ++i) { - ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); + goog.array.extend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length); } polygon.setFlatCoordinates( diff --git a/src/ol/geom/linestring.js b/src/ol/geom/linestring.js index 7e2bcf74c5..0d80bca4f1 100644 --- a/src/ol/geom/linestring.js +++ b/src/ol/geom/linestring.js @@ -1,7 +1,7 @@ goog.provide('ol.geom.LineString'); +goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.SimpleGeometry'); @@ -69,7 +69,7 @@ ol.geom.LineString.prototype.appendCoordinate = function(coordinate) { if (goog.isNull(this.flatCoordinates)) { this.flatCoordinates = coordinate.slice(); } else { - ol.array.safeExtend(this.flatCoordinates, coordinate); + goog.array.extend(this.flatCoordinates, coordinate); } this.changed(); }; diff --git a/src/ol/geom/multilinestring.js b/src/ol/geom/multilinestring.js index 728168b198..751636a8b9 100644 --- a/src/ol/geom/multilinestring.js +++ b/src/ol/geom/multilinestring.js @@ -1,7 +1,7 @@ goog.provide('ol.geom.MultiLineString'); +goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.LineString'); @@ -63,7 +63,7 @@ ol.geom.MultiLineString.prototype.appendLineString = function(lineString) { if (goog.isNull(this.flatCoordinates)) { this.flatCoordinates = lineString.getFlatCoordinates().slice(); } else { - ol.array.safeExtend( + goog.array.extend( this.flatCoordinates, lineString.getFlatCoordinates().slice()); } this.ends_.push(this.flatCoordinates.length); @@ -212,7 +212,7 @@ ol.geom.MultiLineString.prototype.getFlatMidpoints = function() { var end = ends[i]; var midpoint = ol.geom.flat.interpolate.lineString( flatCoordinates, offset, end, stride, 0.5); - ol.array.safeExtend(midpoints, midpoint); + goog.array.extend(midpoints, midpoint); offset = end; } return midpoints; @@ -313,7 +313,7 @@ ol.geom.MultiLineString.prototype.setLineStrings = function(lineStrings) { // FIXME better handle the case of non-matching layouts goog.asserts.assert(lineString.getLayout() == layout); } - ol.array.safeExtend(flatCoordinates, lineString.getFlatCoordinates()); + goog.array.extend(flatCoordinates, lineString.getFlatCoordinates()); ends.push(flatCoordinates.length); } this.setFlatCoordinates(layout, flatCoordinates, ends); diff --git a/src/ol/geom/multipoint.js b/src/ol/geom/multipoint.js index f19dfd6dfd..32b1cc02ae 100644 --- a/src/ol/geom/multipoint.js +++ b/src/ol/geom/multipoint.js @@ -1,7 +1,7 @@ goog.provide('ol.geom.MultiPoint'); +goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.Point'); @@ -39,7 +39,7 @@ ol.geom.MultiPoint.prototype.appendPoint = function(point) { if (goog.isNull(this.flatCoordinates)) { this.flatCoordinates = point.getFlatCoordinates().slice(); } else { - ol.array.safeExtend(this.flatCoordinates, point.getFlatCoordinates()); + goog.array.extend(this.flatCoordinates, point.getFlatCoordinates()); } this.changed(); }; diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js index b881e2eb12..3dafa464d6 100644 --- a/src/ol/geom/multipolygon.js +++ b/src/ol/geom/multipolygon.js @@ -1,7 +1,7 @@ goog.provide('ol.geom.MultiPolygon'); +goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.MultiPoint'); @@ -97,7 +97,7 @@ ol.geom.MultiPolygon.prototype.appendPolygon = function(polygon) { this.endss_.push(); } else { var offset = this.flatCoordinates.length; - ol.array.safeExtend(this.flatCoordinates, polygon.getFlatCoordinates()); + goog.array.extend(this.flatCoordinates, polygon.getFlatCoordinates()); ends = polygon.getEnds().slice(); var i, ii; for (i = 0, ii = ends.length; i < ii; ++i) { @@ -397,7 +397,7 @@ ol.geom.MultiPolygon.prototype.setPolygons = function(polygons) { for (j = 0, jj = ends.length; j < jj; ++j) { ends[j] += offset; } - ol.array.safeExtend(flatCoordinates, polygon.getFlatCoordinates()); + goog.array.extend(flatCoordinates, polygon.getFlatCoordinates()); endss.push(ends); } this.setFlatCoordinates(layout, flatCoordinates, endss); diff --git a/src/ol/geom/polygon.js b/src/ol/geom/polygon.js index d3af928088..4eea4150e3 100644 --- a/src/ol/geom/polygon.js +++ b/src/ol/geom/polygon.js @@ -2,7 +2,6 @@ goog.provide('ol.geom.Polygon'); goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.LinearRing'); @@ -92,7 +91,7 @@ ol.geom.Polygon.prototype.appendLinearRing = function(linearRing) { if (goog.isNull(this.flatCoordinates)) { this.flatCoordinates = linearRing.getFlatCoordinates().slice(); } else { - ol.array.safeExtend(this.flatCoordinates, linearRing.getFlatCoordinates()); + goog.array.extend(this.flatCoordinates, linearRing.getFlatCoordinates()); } this.ends_.push(this.flatCoordinates.length); this.changed(); From 1238ab0df0a8ce7ce457b6cdf55ca9f7e545306f Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 19 Nov 2014 09:23:11 +0100 Subject: [PATCH 4/4] Remove ol.Object.capitalize and use goog.string.capitalize --- src/ol/object.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/ol/object.js b/src/ol/object.js index 7bc76dbfe5..fe5a613fd1 100644 --- a/src/ol/object.js +++ b/src/ol/object.js @@ -12,6 +12,7 @@ goog.require('goog.events'); goog.require('goog.events.Event'); goog.require('goog.functions'); goog.require('goog.object'); +goog.require('goog.string'); goog.require('ol.Observable'); @@ -223,15 +224,6 @@ ol.Object.getterNameCache_ = {}; ol.Object.setterNameCache_ = {}; -/** - * @param {string} str String. - * @return {string} Capitalized string. - */ -ol.Object.capitalize = function(str) { - return str.substr(0, 1).toUpperCase() + str.substr(1); -}; - - /** * @param {string} key Key name. * @return {string} Change name. @@ -250,7 +242,7 @@ ol.Object.getChangeEventType = function(key) { ol.Object.getGetterName = function(key) { return ol.Object.getterNameCache_.hasOwnProperty(key) ? ol.Object.getterNameCache_[key] : - (ol.Object.getterNameCache_[key] = 'get' + ol.Object.capitalize(key)); + (ol.Object.getterNameCache_[key] = 'get' + goog.string.capitalize(key)); }; @@ -261,7 +253,7 @@ ol.Object.getGetterName = function(key) { ol.Object.getSetterName = function(key) { return ol.Object.setterNameCache_.hasOwnProperty(key) ? ol.Object.setterNameCache_[key] : - (ol.Object.setterNameCache_[key] = 'set' + ol.Object.capitalize(key)); + (ol.Object.setterNameCache_[key] = 'set' + goog.string.capitalize(key)); };