Files
less.js/lib/less/tree/variable-call.js
Matthew Dean 6237e13b14 [Feature] Namespaced values (#3242)
* calc() fix - fixes #974
* Parses and retrieves a namespaced value
* Adds a bunch of new tests for aliasing and namespacing
* Added more CSS Grid tests
* Added tests for passing mixins into mixins, since it's just another value
* Release v3.5.0-beta.4
2018-06-30 09:32:02 -07:00

37 lines
1.2 KiB
JavaScript

var Node = require('./node'),
Variable = require('./variable'),
Ruleset = require('./ruleset'),
DetachedRuleset = require('./detached-ruleset'),
LessError = require('../less-error');
var VariableCall = function (variable, index, currentFileInfo) {
this.variable = variable;
this._index = index;
this._fileInfo = currentFileInfo;
this.allowRoot = true;
};
VariableCall.prototype = new Node();
VariableCall.prototype.type = 'VariableCall';
VariableCall.prototype.eval = function (context) {
var rules, detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context),
error = new LessError({message: 'Could not evaluate variable call ' + this.variable});
if (!detachedRuleset.ruleset) {
if (Array.isArray(detachedRuleset)) {
rules = detachedRuleset;
}
else if (Array.isArray(detachedRuleset.value)) {
rules = detachedRuleset.value;
}
else {
throw error;
}
detachedRuleset = new DetachedRuleset(new Ruleset('', rules));
}
if (detachedRuleset.ruleset) {
return detachedRuleset.callEval(context);
}
throw error;
};
module.exports = VariableCall;