color-math
Version:
expressions to manipulate colors
105 lines (85 loc) • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.evaluate = evaluate;
Object.defineProperty(exports, "ColorScale", {
enumerable: true,
get: function get() {
return _ColorScale["default"];
}
});
Object.defineProperty(exports, "ValueType", {
enumerable: true,
get: function get() {
return _ValueType["default"];
}
});
Object.defineProperty(exports, "BlendMode", {
enumerable: true,
get: function get() {
return _BlendMode["default"];
}
});
exports.Nodes = exports.Evaluators = exports.Utils = void 0;
var Utils = _interopRequireWildcard(require("./utils"));
exports.Utils = Utils;
var Evaluators = _interopRequireWildcard(require("./evaluators"));
exports.Evaluators = Evaluators;
var Nodes = _interopRequireWildcard(require("./nodes"));
exports.Nodes = Nodes;
var Parser = _interopRequireWildcard(require("./parser"));
var _ColorScale = _interopRequireDefault(require("./ColorScale"));
var _ValueType = _interopRequireDefault(require("./ValueType"));
var _BlendMode = _interopRequireDefault(require("./BlendMode"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
Parser.parser.yy = Nodes;
function evaluate(expr, options) {
options = Object.assign({
evaluator: Evaluators.CoreEvaluator.instance,
withAst: false,
astWithLocs: false
}, options);
var program;
var value;
var error;
try {
program = Parser.parse(expr);
value = program.evaluate(options.evaluator);
} catch (e) {
error = e.message || String(e);
}
return {
withAst: options.withAst,
astWithLocs: options.astWithLocs,
evaluator: options.evaluator.$type,
expr: expr,
program: program,
result: error != null ? null : value,
resultStr: error != null ? null : formatValue(value),
astStr: error != null || !options.withAst || !program ? null : JSON.stringify(program.getDto(options.astWithLocs), null, ' '),
error: error != null ? error : null
};
}
function formatValue(value) {
if (Utils.isColor(value)) {
return Utils.formatColor(value);
} else if (typeof value === 'number') {
var s = value % 1 === 0 ? String(value) : value.toFixed(4).replace(/0+$/, '');
return s;
} else if (typeof value === 'string') {
return value;
} else if (Array.isArray(value)) {
var _s = '[';
for (var i = 0; i < value.length; i++) {
_s += formatValue(value[i]) + (i < value.length - 1 ? ', ' : '');
}
_s += ']';
return _s;
} else if (value instanceof _ColorScale["default"]) {
return String(value);
} else {
return JSON.stringify(value, null, ' ');
}
}