diesel
Version:
Dumb Interpretively Executed String Expression Language
80 lines (79 loc) • 4.04 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createDieselError = exports.DieselUnknownFunctionError = exports.DieselUnknownError = exports.DieselSyntaxError = exports.DieselOutputTooLongError = exports.DieselIncorrectFunctionArgumentsError = exports.DieselError = void 0;
exports.evaluate = evaluate;
exports.evaluateC = evaluateC;
const utils_1 = require("./utils");
var utils_2 = require("./utils");
Object.defineProperty(exports, "DieselError", { enumerable: true, get: function () { return utils_2.DieselError; } });
Object.defineProperty(exports, "DieselIncorrectFunctionArgumentsError", { enumerable: true, get: function () { return utils_2.DieselIncorrectFunctionArgumentsError; } });
Object.defineProperty(exports, "DieselOutputTooLongError", { enumerable: true, get: function () { return utils_2.DieselOutputTooLongError; } });
Object.defineProperty(exports, "DieselSyntaxError", { enumerable: true, get: function () { return utils_2.DieselSyntaxError; } });
Object.defineProperty(exports, "DieselUnknownError", { enumerable: true, get: function () { return utils_2.DieselUnknownError; } });
Object.defineProperty(exports, "DieselUnknownFunctionError", { enumerable: true, get: function () { return utils_2.DieselUnknownFunctionError; } });
Object.defineProperty(exports, "createDieselError", { enumerable: true, get: function () { return utils_2.createDieselError; } });
const Module = require('./diesel.js');
// Create a promise that resolves when the module is initialized
const moduleInitialized = new Promise((resolve) => {
Module.onRuntimeInitialized = function () {
resolve();
};
});
/**
* DIESEL expression evaluator
*
* This is wrapped C `diesel` function, which will throw custom error message.
*
* - If you're looking for the original `diesel` function, use `dieselC` function instead.
*
* @param expresion DIESEL expression to evaluate
* @returns result of the evaluation
*
* @see {@link https://www.fourmilab.ch/diesel/}
*/
function evaluate(expresion) {
return __awaiter(this, void 0, void 0, function* () {
yield moduleInitialized;
const outputStr = "";
const inPtr = Module.allocateUTF8(expresion);
const outPtr = Module.allocateUTF8(outputStr);
const ret = Module._diesel(inPtr, outPtr);
const output = Module.UTF8ToString(outPtr);
if (ret > 0) { // 0 - means no error
const err = (0, utils_1.createDieselError)(output, ret);
throw err;
}
return output;
});
}
/**
* DIESEL expression evaluator
*
* This is wrapped C `diesel` function.
* Never throws error, instead it returns the error code as original `diesel` function does.
*
* @param expresion DIESEL expression to evaluate
* @returns in `output` you can find the result of the evaluation, and in `return` you can find the error code
*
* @see {@link https://www.fourmilab.ch/diesel/}
*/
function evaluateC(expresion) {
return __awaiter(this, void 0, void 0, function* () {
yield moduleInitialized;
const outputStr = "";
const inPtr = Module.allocateUTF8(expresion);
const outPtr = Module.allocateUTF8(outputStr);
const ret = Module._diesel(inPtr, outPtr);
const output = Module.UTF8ToString(outPtr);
return { output, return: ret };
});
}