diff --git a/lib/carto/tree/call.js b/lib/carto/tree/call.js index 6e9566b..50b0fbd 100644 --- a/lib/carto/tree/call.js +++ b/lib/carto/tree/call.js @@ -78,6 +78,7 @@ tree.Call.prototype = { }; } if (fn !== args.length && + !(Array.isArray(fn) && _.include(fn, args.length)) && // support variable-arg functions like `colorize-alpha` fn !== -1) { env.error({ diff --git a/lib/carto/tree/reference.js b/lib/carto/tree/reference.js index e6ef872..3109969 100644 --- a/lib/carto/tree/reference.js +++ b/lib/carto/tree/reference.js @@ -12,6 +12,14 @@ ref.setData = function(data) { ref.data = data; ref.selector_cache = generateSelectorCache(data); ref.mapnikFunctions = generateMapnikFunctions(data); + + ref.mapnikFunctions.matrix = [6]; + ref.mapnikFunctions.translate = [1, 2]; + ref.mapnikFunctions.scale = [1, 2]; + ref.mapnikFunctions.rotate = [1, 3]; + ref.mapnikFunctions.skewX = [1]; + ref.mapnikFunctions.skewY = [1]; + ref.required_cache = generateRequiredProperties(data); }; diff --git a/test/errorhandling/bad_op.mml b/test/errorhandling/bad_op.mml new file mode 100644 index 0000000..c01f1a3 --- /dev/null +++ b/test/errorhandling/bad_op.mml @@ -0,0 +1,15 @@ +{ + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Stylesheet": [ + "bad_op.mss" + ], + "Layer": [{ + "id": "world", + "name": "world", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "file": "http://tilemill-data.s3.amazonaws.com/test_data/shape_demo.zip", + "type": "shape" + } + }] +} diff --git a/test/errorhandling/bad_op.mss b/test/errorhandling/bad_op.mss new file mode 100644 index 0000000..dac63df --- /dev/null +++ b/test/errorhandling/bad_op.mss @@ -0,0 +1,3 @@ +#world { + line-width: 20% + 2px; +} diff --git a/test/errorhandling/bad_op.result b/test/errorhandling/bad_op.result new file mode 100644 index 0000000..017498c --- /dev/null +++ b/test/errorhandling/bad_op.result @@ -0,0 +1 @@ +bad_op.mss:2:4 If two operands differ, the first must not be % \ No newline at end of file diff --git a/test/errorhandling/bad_op_2.mml b/test/errorhandling/bad_op_2.mml new file mode 100644 index 0000000..3f8e503 --- /dev/null +++ b/test/errorhandling/bad_op_2.mml @@ -0,0 +1,15 @@ +{ + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Stylesheet": [ + "bad_op_2.mss" + ], + "Layer": [{ + "id": "world", + "name": "world", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "file": "http://tilemill-data.s3.amazonaws.com/test_data/shape_demo.zip", + "type": "shape" + } + }] +} diff --git a/test/errorhandling/bad_op_2.mss b/test/errorhandling/bad_op_2.mss new file mode 100644 index 0000000..a50ca10 --- /dev/null +++ b/test/errorhandling/bad_op_2.mss @@ -0,0 +1,3 @@ +#world { + line-width: 20px * 2%; +} diff --git a/test/errorhandling/bad_op_2.result b/test/errorhandling/bad_op_2.result new file mode 100644 index 0000000..452c4e0 --- /dev/null +++ b/test/errorhandling/bad_op_2.result @@ -0,0 +1 @@ +bad_op_2.mss:2:4 Percent values can only be added or subtracted from other values \ No newline at end of file diff --git a/test/errorhandling/invaliddimension.mml b/test/errorhandling/invaliddimension.mml new file mode 100644 index 0000000..9c62378 --- /dev/null +++ b/test/errorhandling/invaliddimension.mml @@ -0,0 +1,15 @@ +{ + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Stylesheet": [ + "invaliddimension.mss" + ], + "Layer": [{ + "id": "world", + "name": "world", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "file": "http://tilemill-data.s3.amazonaws.com/test_data/shape_demo.zip", + "type": "shape" + } + }] +} diff --git a/test/errorhandling/invaliddimension.mss b/test/errorhandling/invaliddimension.mss new file mode 100644 index 0000000..d753c13 --- /dev/null +++ b/test/errorhandling/invaliddimension.mss @@ -0,0 +1,3 @@ +#world { + line-width: 10wifflewaffles; +} diff --git a/test/errorhandling/invaliddimension.result b/test/errorhandling/invaliddimension.result new file mode 100644 index 0000000..dcf75c2 --- /dev/null +++ b/test/errorhandling/invaliddimension.result @@ -0,0 +1 @@ +invaliddimension.mss:2:4 Invalid unit: 'wifflewaffles' \ No newline at end of file diff --git a/test/rendering/transforms.mss b/test/rendering/transforms.mss index 297b652..ffa19d1 100644 --- a/test/rendering/transforms.mss +++ b/test/rendering/transforms.mss @@ -2,4 +2,6 @@ #world { point-file: url(foo.png); point-transform: translate( @trans * 2, @trans); + marker-width: 2; + marker-transform: scale(2); } diff --git a/test/rendering/transforms.result b/test/rendering/transforms.result index 94b483c..4dca4d1 100644 --- a/test/rendering/transforms.result +++ b/test/rendering/transforms.result @@ -3,9 +3,10 @@ -