ifc-expressions
Version:
Parsing and evaluation of IFC expressions
38 lines (37 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SPLIT = void 0;
const Func_js_1 = require("../Func.js");
const FuncArgString_js_1 = require("../arg/FuncArgString.js");
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
const StringValue_js_1 = require("../../../value/StringValue.js");
const Types_js_1 = require("../../../type/Types.js");
const FuncArgNumeric_js_1 = require("../arg/FuncArgNumeric.js");
const ArrayValue_js_1 = require("../../../value/ArrayValue.js");
class SPLIT extends Func_js_1.Func {
constructor() {
super("SPLIT", [
new FuncArgString_js_1.FuncArgString(true, "input"),
new FuncArgString_js_1.FuncArgString(true, "separator"),
new FuncArgNumeric_js_1.FuncArgNumeric(false, "limit"),
]);
}
calculateResult(callingExpr, evaluatedArguments) {
const inputString = evaluatedArguments.get("input").getValue();
const separator = evaluatedArguments.get("separator").getValue();
let result;
if (!evaluatedArguments.has("limit")) {
result = inputString.split(separator);
}
else {
let limit = evaluatedArguments.get("limit").getValue();
result = inputString.split(separator, limit.toNumber());
}
return new ExprEvalResult_js_1.ExprEvalSuccessObj(ArrayValue_js_1.ArrayValue.of(result.map((x) => StringValue_js_1.StringValue.of(x))));
}
getReturnType(argumentTypes) {
return Types_js_1.Types.array(Types_js_1.Type.STRING);
}
}
exports.SPLIT = SPLIT;
//# sourceMappingURL=SPLIT.js.map