mirror of
https://github.com/less/less.js.git
synced 2026-01-22 13:48:03 -05:00
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
var Expression = require("../tree/expression");
|
|
|
|
var functionCaller = function(name, context, index, currentFileInfo) {
|
|
this.name = name.toLowerCase();
|
|
this.index = index;
|
|
this.context = context;
|
|
this.currentFileInfo = currentFileInfo;
|
|
|
|
this.func = context.frames[0].functionRegistry.get(this.name);
|
|
};
|
|
functionCaller.prototype.isValid = function() {
|
|
return Boolean(this.func);
|
|
};
|
|
functionCaller.prototype.call = function(args) {
|
|
|
|
// This code is terrible and should be replaced as per this issue...
|
|
// https://github.com/less/less.js/issues/2477
|
|
if (Array.isArray(args)) {
|
|
args = args.filter(function (item) {
|
|
if (item.type === "Comment") {
|
|
return false;
|
|
}
|
|
return true;
|
|
})
|
|
.map(function(item) {
|
|
if (item.type === "Expression") {
|
|
var subNodes = item.value.filter(function (item) {
|
|
if (item.type === "Comment") {
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
if (subNodes.length === 1) {
|
|
return subNodes[0];
|
|
} else {
|
|
return new Expression(subNodes);
|
|
}
|
|
}
|
|
return item;
|
|
});
|
|
}
|
|
|
|
return this.func.apply(this, args);
|
|
};
|
|
|
|
module.exports = functionCaller;
|