ifc-expressions
Version:
Parsing and evaluation of IFC expressions
34 lines (33 loc) • 1.34 kB
JavaScript
import { Func } from "../Func.js";
import { FuncArgString } from "../arg/FuncArgString.js";
import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
import { StringValue } from "../../../value/StringValue.js";
import { Type, Types } from "../../../type/Types.js";
import { FuncArgNumeric } from "../arg/FuncArgNumeric.js";
import { ArrayValue } from "../../../value/ArrayValue.js";
export class SPLIT extends Func {
constructor() {
super("SPLIT", [
new FuncArgString(true, "input"),
new FuncArgString(true, "separator"),
new 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 ExprEvalSuccessObj(ArrayValue.of(result.map((x) => StringValue.of(x))));
}
getReturnType(argumentTypes) {
return Types.array(Type.STRING);
}
}
//# sourceMappingURL=SPLIT.js.map