summaryrefslogtreecommitdiff
path: root/bin/lib/less/tree/variable.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/lib/less/tree/variable.js')
-rw-r--r--bin/lib/less/tree/variable.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/lib/less/tree/variable.js b/bin/lib/less/tree/variable.js
new file mode 100644
index 00000000..ee557e1d
--- /dev/null
+++ b/bin/lib/less/tree/variable.js
@@ -0,0 +1,26 @@
+(function (tree) {
+
+tree.Variable = function (name, index, file) { this.name = name, this.index = index, this.file = file };
+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 { type: 'Name',
+ message: "variable " + name + " is undefined",
+ filename: this.file,
+ index: this.index };
+ }
+ }
+};
+
+})(require('../tree'));