UNPKG

node-less

Version:

Less Compiler For Node

50 lines (42 loc) 1.6 kB
(function (module) { var Dimension = require('./dimension.js'), Color = require('./color.js'); var Operation = function (op, operands, isSpaced) { this.op = op.trim(); this.operands = operands; this.isSpaced = isSpaced; }; Operation.prototype = { type: "Operation", accept: function (visitor) { this.operands = visitor.visit(this.operands); }, eval: function (env) { var a = this.operands[0].eval(env), b = this.operands[1].eval(env), temp; if (env.isMathOn()) { if (a instanceof Dimension && b instanceof Color) { if (this.op === '*' || this.op === '+') { temp = b, b = a, a = temp; } else { throw { type: "Operation", message: "Can't substract or divide a color from a number" }; } } if (!a.operate) { throw { type: "Operation", message: "Operation on an invalid type" }; } return a.operate(env, this.op, b); } else { return new Operation(this.op, [a, b], this.isSpaced); } }, toCSS: function (env) { var separator = this.isSpaced ? " " : ""; return this.operands[0].toCSS() + separator + this.op + separator + this.operands[1].toCSS(); } }; module.exports = Operation; })(module);