(new) variable variables

This commit is contained in:
Alexis Sellier
2011-05-11 11:29:27 -04:00
parent 37ee7eb8d5
commit e2ad523746
4 changed files with 15 additions and 2 deletions

View File

@@ -568,7 +568,7 @@ less.Parser = function Parser(env) {
variable: function () {
var name, index = i;
if (input.charAt(i) === '@' && (name = $(/^@[\w-]+/))) {
if (input.charAt(i) === '@' && (name = $(/^@@?[\w-]+/))) {
return new(tree.Variable)(name, index);
}
},

View File

@@ -5,13 +5,17 @@ tree.Variable.prototype = {
eval: function (env) {
var variable, v, name = this.name;
if (name.indexOf('@@') == 0) {
name = '@' + new(tree.Variable)(name.slice(1)).eval(env).value;
}
if (variable = tree.find(env.frames, function (frame) {
if (v = frame.variable(name)) {
return v.value.eval(env);
}
})) { return variable }
else {
throw { message: "variable " + this.name + " is undefined",
throw { message: "variable " + name + " is undefined",
index: this.index };
}
}

View File

@@ -16,3 +16,6 @@
url: url('Trebuchet');
multi: something 'A', B, C, 'Trebuchet';
}
.variable-names {
name: 'hello';
}

View File

@@ -38,3 +38,9 @@
url: url(@a);
multi: something @multi, @a;
}
.variable-names {
@var: 'hello';
@name: 'var';
name: @@name;
}