ifc-expressions 2.0.0-beta.0 → 2.0.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,10 +29,10 @@ class MAP extends Func_js_1.Func {
29
29
  .getElementType().getTypes()[0].getTypes();
30
30
  const inType = tupleTypes[0];
31
31
  const outType = tupleTypes[1];
32
- if (!argumentTypes[0].isSameTypeAs(inType)) {
32
+ if (!argumentTypes[0].overlapsWith(inType)) {
33
33
  throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[0].name, inType, argumentTypes[0], 0, ctx);
34
34
  }
35
- if (argumentTypes.length > 2 && !argumentTypes[2].isSameTypeAs(outType)) {
35
+ if (argumentTypes.length > 2 && !argumentTypes[2].overlapsWith(outType)) {
36
36
  throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[2].name, inType, argumentTypes[2], 2, ctx);
37
37
  }
38
38
  return returnType;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new FuncArgMappings(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(...(argumentTypes[1] as TupleType).getTypes())\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1])[0];\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!argumentTypes[0].isSameTypeAs(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n inType,\n argumentTypes[0],\n 0,\n ctx\n );\n }\n if (argumentTypes.length > 2 && !argumentTypes[2].isSameTypeAs(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[2].name,\n inType,\n argumentTypes[2],\n 2,\n ctx\n );\n }\n return returnType;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as ExpressionValue;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (pair[0].equals(input)) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new FuncArgMappings(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(...(argumentTypes[1] as TupleType).getTypes())\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1])[0];\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!argumentTypes[0].overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n inType,\n argumentTypes[0],\n 0,\n ctx\n );\n }\n if (argumentTypes.length > 2 && !argumentTypes[2].overlapsWith(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[2].name,\n inType,\n argumentTypes[2],\n 2,\n ctx\n );\n }\n return returnType;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as ExpressionValue;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (pair[0].equals(input)) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
@@ -24,10 +24,10 @@ class SWITCH extends Func_js_1.Func {
24
24
  .getElementType().getTypes()[0].getTypes();
25
25
  const inType = tupleTypes[0];
26
26
  const outType = tupleTypes[1];
27
- if (!Types_js_1.Type.BOOLEAN.isSameTypeAs(inType)) {
27
+ if (!Types_js_1.Type.BOOLEAN.overlapsWith(inType)) {
28
28
  throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[0].name, Types_js_1.Type.BOOLEAN, inType, 0, ctx);
29
29
  }
30
- if (argumentTypes.length > 1 && !argumentTypes[1].isSameTypeAs(outType)) {
30
+ if (argumentTypes.length > 1 && !argumentTypes[1].overlapsWith(outType)) {
31
31
  throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[1].name, inType, argumentTypes[1], 1, ctx);
32
32
  }
33
33
  return returnType;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/SWITCH.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+DAMiC;AACjC,8CAAwC;AACxC,mDAA6C;AAE7C,0EAA2D;AAC3D,oEAA8D;AAC9D,kEAA4D;AAI5D,gHAA0G;AAC1G,qDAA8C;AAE9C,MAAa,MAAO,SAAQ,cAAI;IAI9B;QACE,KAAK,CAAC,QAAQ,EAAE;YACd,IAAI,oCAAe,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC;YAChD,IAAI,oBAAO,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B,CAC5B,aAA8B,EAC9B,GAAG;QAEH,MAAM,UAAU,GAAG,KAAK,CAAC,8BAA8B,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5E,MAAM,UAAU,GAEX,aAAa,CAAC,CAAC,CAAe;aAC5B,WAAW,EAAE;aACb,cAAc,EAClB,CAAC,QAAQ,EAAE,CAAC,CAAC,CACf,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACtC,MAAM,IAAI,0EAAkC,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5B,eAAI,CAAC,OAAO,EACZ,MAAM,EACN,CAAC,EACD,GAAG,CACJ,CAAC;SACH;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YACvE,MAAM,IAAI,0EAAkC,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5B,MAAM,EACN,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,EACD,GAAG,CACJ,CAAC;SACH;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAQ,aAAa,CAAC,CAAC,CAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CACrC,MAAM,CAAC,cAAc,CACG,CAAC;QAC3B,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CACzC,MAAM,CAAC,sBAAsB,CACA,CAAC;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAkC,CAAC;QACvE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,oCAAe,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAA,iCAAS,EAAC,KAAK,CAAC,EAAE;gBACrB,OAAO,KAAK,CAAC;aACd;YACD,MAAM,IAAI,GAAI,UAAU,CAAC,CAAC,CAA2B,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,8BAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7C,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,QAAQ,EACjB,2CAA2C,CAAC,iDAAiD,EAC7F,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;aACH;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAC/B,OAAO,IAAI,sCAAkB,CAAC,IAAI,CAAC,CAAC,CAAoB,CAAC,CAAC;aAC3D;SACF;QACD,IAAI,IAAA,iCAAS,EAAC,YAAY,CAAC,EAAE;YAC3B,OAAO,IAAI,sDAAkC,CAC3C,sBAAQ,CAAC,QAAQ,EACjB,kCAAc,CAAC,gBAAgB,EAC/B,sHAAsH,EACtH,IAAI,CAAC,IAAI,CACV,CAAC;SACH;QACD,OAAO,IAAI,sCAAkB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;;AA1FH,wBA2FC;AA1FyB,qBAAc,GAAG,OAAO,CAAC;AACzB,6BAAsB,GAAG,cAAc,CAAC","file":"expression/function/impl/SWITCH.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type } from \"../../../type/Types.js\";\n\nexport class SWITCH extends Func {\n private static readonly ARG_NAME_CASES = \"cases\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"SWITCH\", [\n new FuncArgMappings(true, SWITCH.ARG_NAME_CASES),\n new FuncArg(false, SWITCH.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[0] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!Type.BOOLEAN.isSameTypeAs(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n Type.BOOLEAN,\n inType,\n 0,\n ctx\n );\n }\n\n if (argumentTypes.length > 1 && !argumentTypes[1].isSameTypeAs(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[1].name,\n inType,\n argumentTypes[1],\n 1,\n ctx\n );\n }\n return returnType;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return (argumentTypes[0] as TupleType).getTypes()[1];\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n SWITCH.ARG_NAME_CASES\n ) as unknown as ArrayValue;\n const defaultValue = evaluatedArguments.get(\n SWITCH.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (!BooleanValue.isBooleanValueType(pair[0])) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION,\n `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`,\n pair[0]\n );\n }\n if (pair[0].getValue() === true) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/SWITCH.ts"],"names":[],"mappings":"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","file":"expression/function/impl/SWITCH.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type } from \"../../../type/Types.js\";\n\nexport class SWITCH extends Func {\n private static readonly ARG_NAME_CASES = \"cases\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"SWITCH\", [\n new FuncArgMappings(true, SWITCH.ARG_NAME_CASES),\n new FuncArg(false, SWITCH.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[0] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!Type.BOOLEAN.overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n Type.BOOLEAN,\n inType,\n 0,\n ctx\n );\n }\n\n if (argumentTypes.length > 1 && !argumentTypes[1].overlapsWith(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[1].name,\n inType,\n argumentTypes[1],\n 1,\n ctx\n );\n }\n return returnType;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return (argumentTypes[0] as TupleType).getTypes()[1];\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n SWITCH.ARG_NAME_CASES\n ) as unknown as ArrayValue;\n const defaultValue = evaluatedArguments.get(\n SWITCH.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (!BooleanValue.isBooleanValueType(pair[0])) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION,\n `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`,\n pair[0]\n );\n }\n if (pair[0].getValue() === true) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
@@ -26,10 +26,10 @@ export class MAP extends Func {
26
26
  .getElementType().getTypes()[0].getTypes();
27
27
  const inType = tupleTypes[0];
28
28
  const outType = tupleTypes[1];
29
- if (!argumentTypes[0].isSameTypeAs(inType)) {
29
+ if (!argumentTypes[0].overlapsWith(inType)) {
30
30
  throw new WrongFunctionArgumentTypeException(this.name, this.formalArguments[0].name, inType, argumentTypes[0], 0, ctx);
31
31
  }
32
- if (argumentTypes.length > 2 && !argumentTypes[2].isSameTypeAs(outType)) {
32
+ if (argumentTypes.length > 2 && !argumentTypes[2].overlapsWith(outType)) {
33
33
  throw new WrongFunctionArgumentTypeException(this.name, this.formalArguments[2].name, inType, argumentTypes[2], 2, ctx);
34
34
  }
35
35
  return returnType;
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new FuncArgMappings(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(...(argumentTypes[1] as TupleType).getTypes())\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1])[0];\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!argumentTypes[0].isSameTypeAs(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n inType,\n argumentTypes[0],\n 0,\n ctx\n );\n }\n if (argumentTypes.length > 2 && !argumentTypes[2].isSameTypeAs(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[2].name,\n inType,\n argumentTypes[2],\n 2,\n ctx\n );\n }\n return returnType;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as ExpressionValue;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (pair[0].equals(input)) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAE1G,MAAM,OAAO,GAAI,SAAQ,IAAI;IAK3B;QACE,KAAK,CAAC,KAAK,EAAE;YACX,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC;YAC7C,IAAI,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAChD,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,sBAAsB,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,KAAK,CAAC,EAAE,CAAC,GAAI,aAAa,CAAC,CAAC,CAAe,CAAC,QAAQ,EAAE,CAAC;aAC3D,QAAQ,EAAE;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,8BAA8B,CAC5B,aAA8B,EAC9B,GAAG;QAEH,MAAM,UAAU,GAAG,KAAK,CAAC,8BAA8B,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5E,MAAM,UAAU,GAEX,aAAa,CAAC,CAAC,CAAe;aAC5B,WAAW,EAAE;aACb,cAAc,EAClB,CAAC,QAAQ,EAAE,CAAC,CAAC,CACf,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC1C,MAAM,IAAI,kCAAkC,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5B,MAAM,EACN,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,EACD,GAAG,CACJ,CAAC;SACH;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YACvE,MAAM,IAAI,kCAAkC,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5B,MAAM,EACN,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,EACD,GAAG,CACJ,CAAC;SACH;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CACrC,GAAG,CAAC,iBAAiB,CACG,CAAC;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAClC,GAAG,CAAC,sBAAsB,CACG,CAAC;QAChC,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CACzC,GAAG,CAAC,sBAAsB,CACG,CAAC;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAkC,CAAC;QACvE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACrB,OAAO,KAAK,CAAC;aACd;YACD,MAAM,IAAI,GAAI,UAAU,CAAC,CAAC,CAA2B,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAoB,CAAC,CAAC;aAC3D;SACF;QACD,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;YAC3B,OAAO,IAAI,kCAAkC,CAC3C,QAAQ,CAAC,QAAQ,EACjB,cAAc,CAAC,gBAAgB,EAC/B,sHAAsH,EACtH,IAAI,CAAC,IAAI,CACV,CAAC;SACH;QACD,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;;AAxFuB,qBAAiB,GAAG,UAAU,CAAC;AAC/B,0BAAsB,GAAG,OAAO,CAAC;AACjC,0BAAsB,GAAG,cAAc,CAAC","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new FuncArgMappings(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(...(argumentTypes[1] as TupleType).getTypes())\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1])[0];\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!argumentTypes[0].overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n inType,\n argumentTypes[0],\n 0,\n ctx\n );\n }\n if (argumentTypes.length > 2 && !argumentTypes[2].overlapsWith(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[2].name,\n inType,\n argumentTypes[2],\n 2,\n ctx\n );\n }\n return returnType;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as ExpressionValue;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (pair[0].equals(input)) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
@@ -21,10 +21,10 @@ export class SWITCH extends Func {
21
21
  .getElementType().getTypes()[0].getTypes();
22
22
  const inType = tupleTypes[0];
23
23
  const outType = tupleTypes[1];
24
- if (!Type.BOOLEAN.isSameTypeAs(inType)) {
24
+ if (!Type.BOOLEAN.overlapsWith(inType)) {
25
25
  throw new WrongFunctionArgumentTypeException(this.name, this.formalArguments[0].name, Type.BOOLEAN, inType, 0, ctx);
26
26
  }
27
- if (argumentTypes.length > 1 && !argumentTypes[1].isSameTypeAs(outType)) {
27
+ if (argumentTypes.length > 1 && !argumentTypes[1].overlapsWith(outType)) {
28
28
  throw new WrongFunctionArgumentTypeException(this.name, this.formalArguments[1].name, inType, argumentTypes[1], 1, ctx);
29
29
  }
30
30
  return returnType;
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/SWITCH.ts"],"names":[],"mappings":"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","file":"expression/function/impl/SWITCH.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type } from \"../../../type/Types.js\";\n\nexport class SWITCH extends Func {\n private static readonly ARG_NAME_CASES = \"cases\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"SWITCH\", [\n new FuncArgMappings(true, SWITCH.ARG_NAME_CASES),\n new FuncArg(false, SWITCH.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[0] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!Type.BOOLEAN.isSameTypeAs(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n Type.BOOLEAN,\n inType,\n 0,\n ctx\n );\n }\n\n if (argumentTypes.length > 1 && !argumentTypes[1].isSameTypeAs(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[1].name,\n inType,\n argumentTypes[1],\n 1,\n ctx\n );\n }\n return returnType;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return (argumentTypes[0] as TupleType).getTypes()[1];\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n SWITCH.ARG_NAME_CASES\n ) as unknown as ArrayValue;\n const defaultValue = evaluatedArguments.get(\n SWITCH.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (!BooleanValue.isBooleanValueType(pair[0])) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION,\n `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`,\n pair[0]\n );\n }\n if (pair[0].getValue() === true) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/SWITCH.ts"],"names":[],"mappings":"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","file":"expression/function/impl/SWITCH.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type } from \"../../../type/Types.js\";\n\nexport class SWITCH extends Func {\n private static readonly ARG_NAME_CASES = \"cases\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"SWITCH\", [\n new FuncArgMappings(true, SWITCH.ARG_NAME_CASES),\n new FuncArg(false, SWITCH.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[0] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!Type.BOOLEAN.overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n Type.BOOLEAN,\n inType,\n 0,\n ctx\n );\n }\n\n if (argumentTypes.length > 1 && !argumentTypes[1].overlapsWith(outType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[1].name,\n inType,\n argumentTypes[1],\n 1,\n ctx\n );\n }\n return returnType;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return (argumentTypes[0] as TupleType).getTypes()[1];\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n SWITCH.ARG_NAME_CASES\n ) as unknown as ArrayValue;\n const defaultValue = evaluatedArguments.get(\n SWITCH.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(outerArray, i);\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (!BooleanValue.isBooleanValueType(pair[0])) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION,\n `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`,\n pair[0]\n );\n }\n if (pair[0].getValue() === true) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ifc-expressions",
3
- "version": "2.0.0-beta.0",
3
+ "version": "2.0.1-beta.0",
4
4
  "description": "Parsing and evaluation of IFC expressions",
5
5
  "main": "dist/cjs/IfcExpression.js",
6
6
  "module": "dist/mjs/IfcExpression.js",