adds parser support for arrays and also updates reference to add "ramp" function

This commit is contained in:
javi 2016-05-31 12:40:31 +02:00
parent 72d005a082
commit cf5886579f
5 changed files with 1109 additions and 588 deletions

View File

@ -477,6 +477,7 @@ carto.Parser = function Parser(env) {
return new tree.Dimension(value[1], value[2], memo);
}
}
},
// The variable part of a variable definition.
@ -725,10 +726,22 @@ carto.Parser = function Parser(env) {
},
// A sub-expression, contained by parenthensis
sub: function() {
var e;
var e, expressions = [];
if ($('(') && (e = $(this.expression)) && $(')')) {
return e;
if ($('(')) {
while (e = $(this.expression)) {
expressions.push(e);
if (! $(',')) { break; }
}
$(')');
}
if (expressions.length > 1) {
return new tree.Value(expressions.map(function(e) {
return e.value[0];
}));
} else if (expressions.length === 1) {
return new tree.Value(expressions);
}
},
// This is a misnomer because it actually handles multiplication

View File

@ -166,7 +166,8 @@ var _mapnik_reference_latest = {
["sharpen", 0],
["colorize-alpha", -1],
["color-to-alpha", 1],
["scale-hsla", 8]
["scale-hsla", 8],
["ramp", -1]
],
"doc": "A list of image filters."
},

View File

@ -54,7 +54,8 @@ var _mapnik_reference_latest = {
["x-gradient", 0],
["y-gradient", 0],
["invert", 0],
["sharpen", 0]
["sharpen", 0],
["ramp", 0]
],
"doc": "A list of image filters."
},

View File

@ -149,4 +149,21 @@ describe('RenderingJS', function() {
assert.equal(emptyFilterProps['marker-width'], null);
});
it ("should parse turbocarto", function(){
var css = [
'#layer {',
' marker-width: ramp([cartodb_id], (#fff, #bbb), jenks);',
'}'
].join('\n');
var shader = (new carto.RendererJS({ debug: true })).render(css);
var layer = shader.getLayers()[0];
var st = layer.shader['marker-width'].style({}, {zoom: 1})
assert.equal(st.name, "ramp")
assert.equal(st.args.length, 3);
assert.equal(st.args[1].value[0].rgb[0], 255);
assert.equal(st.args[1].value[0].rgb[1], 255);
assert.equal(st.args[1].value[0].rgb[2], 255);
assert.equal(st.args[2].value, 'jenks');
})
});

File diff suppressed because it is too large Load Diff