mirror of
https://github.com/less/less.js.git
synced 2026-01-22 21:58:14 -05:00
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
var Node = require("./node");
|
|
|
|
var Condition = function (op, l, r, i, negate) {
|
|
this.op = op.trim();
|
|
this.lvalue = l;
|
|
this.rvalue = r;
|
|
this.index = i;
|
|
this.negate = negate;
|
|
};
|
|
Condition.prototype = new Node();
|
|
Condition.prototype.type = "Condition";
|
|
Condition.prototype.accept = function (visitor) {
|
|
this.lvalue = visitor.visit(this.lvalue);
|
|
this.rvalue = visitor.visit(this.rvalue);
|
|
};
|
|
Condition.prototype.eval = function (context) {
|
|
var result = (function (op, a, b) {
|
|
switch (op) {
|
|
case 'and': return a && b;
|
|
case 'or': return a || b;
|
|
default:
|
|
switch (Node.compare(a, b)) {
|
|
case -1:
|
|
return op === '<' || op === '=<' || op === '<=';
|
|
case 0:
|
|
return op === '=' || op === '>=' || op === '=<' || op === '<=';
|
|
case 1:
|
|
return op === '>' || op === '>=';
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
})(this.op, this.lvalue.eval(context), this.rvalue.eval(context));
|
|
|
|
return this.negate ? !result : result;
|
|
};
|
|
module.exports = Condition;
|