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;