UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

34 lines (33 loc) 1.34 kB
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