ifc-expressions 0.3.4 → 2.0.0-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.
- package/README.md +158 -0
- package/dist/E.d.ts +45 -0
- package/dist/ExprVisitor.d.ts +29 -18
- package/dist/IfcExpression.d.ts +17 -11
- package/dist/IfcExpressionErrorListener.d.ts +6 -4
- package/dist/IfcExpressionUtils.d.ts +1 -0
- package/dist/IfcExpressionValidationListener.d.ts +41 -0
- package/dist/cjs/E.js +83 -0
- package/dist/cjs/E.js.map +1 -0
- package/dist/cjs/ExprVisitor.js +162 -78
- package/dist/cjs/ExprVisitor.js.map +1 -1
- package/dist/cjs/IfcExpression.js +51 -13
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/IfcExpressionErrorListener.js +9 -5
- package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/cjs/IfcExpressionUtils.js +5 -1
- package/dist/cjs/IfcExpressionUtils.js.map +1 -1
- package/dist/cjs/IfcExpressionValidationListener.js +184 -0
- package/dist/cjs/IfcExpressionValidationListener.js.map +1 -0
- package/dist/cjs/context/IfcElementAccessor.js +19 -3
- package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
- package/dist/cjs/context/IfcPropertyAccessor.js +14 -2
- package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -1
- package/dist/cjs/context/IfcPropertySetAccessor.js +1 -1
- package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -1
- package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -1
- package/dist/cjs/context/IfcTypeObjectAccessor.js +13 -1
- package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -1
- package/dist/cjs/context/NamedObjectAccessor.js.map +1 -1
- package/dist/cjs/context/NopContext.js +13 -0
- package/dist/cjs/context/NopContext.js.map +1 -0
- package/dist/cjs/context/ObjectAccessor.js.map +1 -1
- package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js +37 -0
- package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -0
- package/dist/cjs/error/ExpressionTypeError.js +11 -0
- package/dist/cjs/error/ExpressionTypeError.js.map +1 -0
- package/dist/cjs/error/IfcExpressionFunctionConfigException.js.map +1 -0
- package/dist/cjs/error/InvalidSyntaxException.js +12 -0
- package/dist/cjs/error/InvalidSyntaxException.js.map +1 -0
- package/dist/cjs/error/MissingFunctionArgumentException.js +14 -0
- package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -0
- package/dist/cjs/error/NoSuchFunctionException.js +12 -0
- package/dist/cjs/error/NoSuchFunctionException.js.map +1 -0
- package/dist/cjs/error/NoSuchMethodException.js +13 -0
- package/dist/cjs/error/NoSuchMethodException.js.map +1 -0
- package/dist/cjs/{SyntaxErrorException.js → error/SyntaxErrorException.js} +1 -1
- package/dist/cjs/error/SyntaxErrorException.js.map +1 -0
- package/dist/cjs/error/ValidationException.js +28 -0
- package/dist/cjs/error/ValidationException.js.map +1 -0
- package/dist/cjs/error/WrongFunctionArgumentTypeException.js +16 -0
- package/dist/cjs/error/WrongFunctionArgumentTypeException.js.map +1 -0
- package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +11 -0
- package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -0
- package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js +15 -0
- package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -0
- package/dist/cjs/error/mapper/SyntaxErrorMapper.js +11 -0
- package/dist/cjs/error/mapper/SyntaxErrorMapper.js.map +1 -0
- package/dist/cjs/error/mapper/ValidationExceptionMapper.js +20 -0
- package/dist/cjs/error/mapper/ValidationExceptionMapper.js.map +1 -0
- package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +11 -0
- package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -0
- package/dist/cjs/expression/Expr.js.map +1 -1
- package/dist/cjs/expression/ExprBase.js.map +1 -1
- package/dist/cjs/expression/ExprEvalResult.js +67 -28
- package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/cjs/expression/ExprKind.js +17 -0
- package/dist/cjs/expression/ExprKind.js.map +1 -1
- package/dist/cjs/expression/boolean/AndExpr.js +23 -0
- package/dist/cjs/expression/boolean/AndExpr.js.map +1 -0
- package/dist/cjs/expression/boolean/BooleanLiteralExpr.js +23 -0
- package/dist/cjs/expression/boolean/BooleanLiteralExpr.js.map +1 -0
- package/dist/cjs/expression/boolean/NotExpr.js +23 -0
- package/dist/cjs/expression/boolean/NotExpr.js.map +1 -0
- package/dist/cjs/expression/boolean/OrExpr.js +23 -0
- package/dist/cjs/expression/boolean/OrExpr.js.map +1 -0
- package/dist/cjs/expression/boolean/XorExpr.js +25 -0
- package/dist/cjs/expression/boolean/XorExpr.js.map +1 -0
- package/dist/cjs/expression/comparison/ComparisonOp.js +23 -0
- package/dist/cjs/expression/comparison/ComparisonOp.js.map +1 -0
- package/dist/cjs/expression/comparison/EqualsExpr.js +23 -0
- package/dist/cjs/expression/comparison/EqualsExpr.js.map +1 -0
- package/dist/cjs/expression/comparison/GreaterThan.js +12 -0
- package/dist/cjs/expression/comparison/GreaterThan.js.map +1 -0
- package/dist/cjs/expression/comparison/GreaterThanOrEqual.js +12 -0
- package/dist/cjs/expression/comparison/GreaterThanOrEqual.js.map +1 -0
- package/dist/cjs/expression/comparison/LessThan.js +12 -0
- package/dist/cjs/expression/comparison/LessThan.js.map +1 -0
- package/dist/cjs/expression/comparison/LessThanOrEqual.js +12 -0
- package/dist/cjs/expression/comparison/LessThanOrEqual.js.map +1 -0
- package/dist/cjs/expression/comparison/NotEqualsExpr.js +23 -0
- package/dist/cjs/expression/comparison/NotEqualsExpr.js.map +1 -0
- package/dist/cjs/expression/function/Func.js +31 -3
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/FuncArg.js +4 -0
- package/dist/cjs/expression/function/FuncArg.js.map +1 -1
- package/dist/cjs/expression/function/FunctionExpr.js +13 -5
- package/dist/cjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +64 -6
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgAny.js +15 -0
- package/dist/cjs/expression/function/arg/FuncArgAny.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgBoolean.js +25 -0
- package/dist/cjs/expression/function/arg/FuncArgBoolean.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgInt.js +4 -0
- package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgMappings.js +45 -0
- package/dist/cjs/expression/function/arg/FuncArgMappings.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js +4 -0
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgObjectAccessor.js +31 -0
- package/dist/cjs/expression/function/arg/FuncArgObjectAccessor.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgRegex.js +28 -0
- package/dist/cjs/expression/function/arg/FuncArgRegex.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgSimpleRegex.js +20 -0
- package/dist/cjs/expression/function/arg/FuncArgSimpleRegex.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgString.js +25 -0
- package/dist/cjs/expression/function/arg/FuncArgString.js.map +1 -0
- package/dist/cjs/expression/function/impl/ApplyRegex.js +26 -0
- package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -0
- package/dist/cjs/expression/function/impl/AttributeAccessorFunction.js +27 -0
- package/dist/cjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -0
- package/dist/cjs/expression/function/impl/CompareMagnitudes.js +39 -0
- package/dist/cjs/expression/function/impl/CompareMagnitudes.js.map +1 -0
- package/dist/cjs/expression/function/impl/EQUALS.js +28 -0
- package/dist/cjs/expression/function/impl/EQUALS.js.map +1 -0
- package/dist/cjs/expression/function/impl/EXISTS.js +43 -0
- package/dist/cjs/expression/function/impl/EXISTS.js.map +1 -0
- package/dist/cjs/expression/function/impl/FuncBooleanBinary.js +29 -0
- package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -0
- package/dist/cjs/expression/function/impl/MAP.js +37 -48
- package/dist/cjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/cjs/expression/function/impl/MatchesPattern.js +38 -0
- package/dist/cjs/expression/function/impl/MatchesPattern.js.map +1 -0
- package/dist/cjs/expression/function/impl/NOT.js +23 -0
- package/dist/cjs/expression/function/impl/NOT.js.map +1 -0
- package/dist/cjs/expression/function/impl/PROPERTY.js +51 -0
- package/dist/cjs/expression/function/impl/PROPERTY.js.map +1 -0
- package/dist/cjs/expression/function/impl/PROPERTYSET.js +70 -0
- package/dist/cjs/expression/function/impl/PROPERTYSET.js.map +1 -0
- package/dist/cjs/expression/function/impl/ROUND.js +4 -0
- package/dist/cjs/expression/function/impl/ROUND.js.map +1 -1
- package/dist/cjs/expression/function/impl/ReplacePattern.js +40 -0
- package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -0
- package/dist/cjs/expression/function/impl/SWITCH.js +65 -0
- package/dist/cjs/expression/function/impl/SWITCH.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOSTRING.js +21 -0
- package/dist/cjs/expression/function/impl/TOSTRING.js.map +1 -0
- package/dist/cjs/expression/function/impl/TYPE.js +37 -0
- package/dist/cjs/expression/function/impl/TYPE.js.map +1 -0
- package/dist/cjs/expression/numeric/DivideExpr.js +7 -0
- package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MinusExpr.js +7 -0
- package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MultiplyExpr.js +7 -0
- package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js +9 -1
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/PlusExpr.js +7 -0
- package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/PowerExpr.js +23 -0
- package/dist/cjs/expression/numeric/PowerExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/UnaryMinusExpr.js +23 -0
- package/dist/cjs/expression/numeric/UnaryMinusExpr.js.map +1 -0
- package/dist/cjs/expression/poly/PlusOrConcatExpr.js +37 -0
- package/dist/cjs/expression/poly/PlusOrConcatExpr.js.map +1 -0
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +9 -1
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +9 -1
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringConcatExpr.js +7 -0
- package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringLiteralExpr.js +9 -1
- package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/structure/ArrayExpr.js +7 -0
- package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -1
- package/dist/cjs/expression/structure/ParenthesisExpr.js +21 -0
- package/dist/cjs/expression/structure/ParenthesisExpr.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionLexer.js +84 -87
- package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionParser.js +785 -675
- package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
- package/dist/cjs/type/ArrayType.js +69 -0
- package/dist/cjs/type/ArrayType.js.map +1 -0
- package/dist/cjs/{value/LiteralValue.js → type/ExprType.js} +1 -1
- package/dist/cjs/type/ExprType.js.map +1 -0
- package/dist/cjs/type/SimpleType.js +46 -0
- package/dist/cjs/type/SimpleType.js.map +1 -0
- package/dist/cjs/type/TupleType.js +100 -0
- package/dist/cjs/type/TupleType.js.map +1 -0
- package/dist/cjs/type/TypeDisjunction.js +64 -0
- package/dist/cjs/type/TypeDisjunction.js.map +1 -0
- package/dist/cjs/type/TypeManager.js +63 -0
- package/dist/cjs/type/TypeManager.js.map +1 -0
- package/dist/cjs/type/Types.js +91 -0
- package/dist/cjs/type/Types.js.map +1 -0
- package/dist/cjs/value/ArrayValue.js +18 -0
- package/dist/cjs/value/ArrayValue.js.map +1 -1
- package/dist/cjs/value/BooleanValue.js +10 -0
- package/dist/cjs/value/BooleanValue.js.map +1 -1
- package/dist/cjs/value/{PrimitiveValueType.js → BoxedValueTypes.js} +1 -1
- package/dist/cjs/value/BoxedValueTypes.js.map +1 -0
- package/dist/cjs/value/Comparable.js +9 -0
- package/dist/cjs/value/Comparable.js.map +1 -0
- package/dist/cjs/{expression/reference/ObjectReferenceExpr.js → value/ExpressionValue.js} +1 -1
- package/dist/cjs/value/ExpressionValue.js.map +1 -0
- package/dist/cjs/value/LogicalValue.js +11 -0
- package/dist/cjs/value/LogicalValue.js.map +1 -1
- package/dist/cjs/value/NumericValue.js +10 -0
- package/dist/cjs/value/NumericValue.js.map +1 -1
- package/dist/cjs/value/ObjectAccessorValue.js +32 -0
- package/dist/cjs/value/ObjectAccessorValue.js.map +1 -0
- package/dist/cjs/value/ReferenceValue.js +7 -0
- package/dist/cjs/value/ReferenceValue.js.map +1 -1
- package/dist/cjs/value/StringValue.js +11 -0
- package/dist/cjs/value/StringValue.js.map +1 -1
- package/dist/cjs/value/Value.js.map +1 -1
- package/dist/context/IfcElementAccessor.d.ts +6 -5
- package/dist/context/IfcPropertyAccessor.d.ts +5 -4
- package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
- package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
- package/dist/context/IfcTypeObjectAccessor.d.ts +3 -2
- package/dist/context/NamedObjectAccessor.d.ts +2 -2
- package/dist/context/NopContext.d.ts +5 -0
- package/dist/context/ObjectAccessor.d.ts +2 -2
- package/dist/error/ExceptionToExprEvalErrorMapper.d.ts +5 -0
- package/dist/error/ExpressionTypeError.d.ts +5 -0
- package/dist/error/InvalidSyntaxException.d.ts +6 -0
- package/dist/error/MissingFunctionArgumentException.d.ts +7 -0
- package/dist/error/NoSuchFunctionException.d.ts +6 -0
- package/dist/error/NoSuchMethodException.d.ts +6 -0
- package/dist/{SyntaxErrorException.d.ts → error/SyntaxErrorException.d.ts} +2 -3
- package/dist/error/ValidationException.d.ts +9 -0
- package/dist/error/WrongFunctionArgumentTypeException.d.ts +11 -0
- package/dist/error/mapper/MissingFunctionArgumentExceptionMapper.d.ts +6 -0
- package/dist/error/mapper/NoSuchFunctionExceptionMapper.d.ts +7 -0
- package/dist/error/mapper/SyntaxErrorMapper.d.ts +6 -0
- package/dist/error/mapper/ValidationExceptionMapper.d.ts +8 -0
- package/dist/error/mapper/WrongFunctionArgumentTypeExceptionMapper.d.ts +6 -0
- package/dist/expression/Expr.d.ts +3 -0
- package/dist/expression/ExprBase.d.ts +4 -1
- package/dist/expression/ExprEvalResult.d.ts +60 -15
- package/dist/expression/ExprKind.d.ts +18 -1
- package/dist/expression/boolean/AndExpr.d.ts +12 -0
- package/dist/expression/boolean/BooleanLiteralExpr.d.ts +11 -0
- package/dist/expression/boolean/NotExpr.d.ts +12 -0
- package/dist/expression/boolean/OrExpr.d.ts +12 -0
- package/dist/expression/boolean/XorExpr.d.ts +12 -0
- package/dist/expression/comparison/ComparisonOp.d.ts +16 -0
- package/dist/expression/comparison/EqualsExpr.d.ts +13 -0
- package/dist/expression/comparison/GreaterThan.d.ts +7 -0
- package/dist/expression/comparison/GreaterThanOrEqual.d.ts +7 -0
- package/dist/expression/comparison/LessThan.d.ts +7 -0
- package/dist/expression/comparison/LessThanOrEqual.d.ts +7 -0
- package/dist/expression/comparison/NotEqualsExpr.d.ts +13 -0
- package/dist/expression/function/Func.d.ts +12 -6
- package/dist/expression/function/FuncArg.d.ts +4 -2
- package/dist/expression/function/FunctionExpr.d.ts +10 -8
- package/dist/expression/function/IfcExpressionFunctions.d.ts +3 -2
- package/dist/expression/function/arg/FuncArgAny.d.ts +7 -0
- package/dist/expression/function/arg/FuncArgBase.d.ts +5 -5
- package/dist/expression/function/arg/FuncArgBoolean.d.ts +10 -0
- package/dist/expression/function/arg/FuncArgInt.d.ts +4 -2
- package/dist/expression/function/arg/FuncArgMappings.d.ts +12 -0
- package/dist/expression/function/arg/FuncArgNumeric.d.ts +4 -2
- package/dist/expression/function/arg/FuncArgObjectAccessor.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgRegex.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgSimpleRegex.d.ts +7 -0
- package/dist/expression/function/arg/FuncArgString.d.ts +10 -0
- package/dist/expression/function/impl/ApplyRegex.d.ts +8 -0
- package/dist/expression/function/impl/AttributeAccessorFunction.d.ts +12 -0
- package/dist/expression/function/impl/CompareMagnitudes.d.ts +12 -0
- package/dist/expression/function/impl/EQUALS.d.ts +11 -0
- package/dist/expression/function/impl/EXISTS.d.ts +11 -0
- package/dist/expression/function/impl/FuncBooleanBinary.d.ts +12 -0
- package/dist/expression/function/impl/MAP.d.ts +5 -2
- package/dist/expression/function/impl/MatchesPattern.d.ts +9 -0
- package/dist/expression/function/impl/NOT.d.ts +10 -0
- package/dist/expression/function/impl/PROPERTY.d.ts +11 -0
- package/dist/expression/function/impl/PROPERTYSET.d.ts +12 -0
- package/dist/expression/function/impl/ROUND.d.ts +4 -2
- package/dist/expression/function/impl/ReplacePattern.d.ts +10 -0
- package/dist/expression/function/impl/SWITCH.d.ts +12 -0
- package/dist/expression/function/impl/TOSTRING.d.ts +9 -0
- package/dist/expression/function/impl/TYPE.d.ts +10 -0
- package/dist/expression/numeric/DivideExpr.d.ts +3 -0
- package/dist/expression/numeric/MinusExpr.d.ts +3 -0
- package/dist/expression/numeric/MultiplyExpr.d.ts +3 -0
- package/dist/expression/numeric/NumericLiteralExpr.d.ts +5 -1
- package/dist/expression/numeric/PlusExpr.d.ts +3 -0
- package/dist/expression/numeric/PowerExpr.d.ts +12 -0
- package/dist/expression/numeric/UnaryMinusExpr.d.ts +12 -0
- package/dist/expression/poly/PlusOrConcatExpr.d.ts +13 -0
- package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +6 -4
- package/dist/expression/reference/PropObjectReferenceExpr.d.ts +6 -4
- package/dist/expression/string/StringConcatExpr.d.ts +3 -0
- package/dist/expression/string/StringLiteralExpr.d.ts +4 -1
- package/dist/expression/structure/ArrayExpr.d.ts +5 -2
- package/dist/expression/structure/ParenthesisExpr.d.ts +11 -0
- package/dist/gen/parser/IfcExpressionLexer.d.ts +12 -12
- package/dist/gen/parser/IfcExpressionListener.d.ts +172 -109
- package/dist/gen/parser/IfcExpressionParser.d.ts +172 -119
- package/dist/gen/parser/IfcExpressionVisitor.d.ts +102 -63
- package/dist/mjs/E.js +79 -0
- package/dist/mjs/E.js.map +1 -0
- package/dist/mjs/ExprVisitor.js +162 -78
- package/dist/mjs/ExprVisitor.js.map +1 -1
- package/dist/mjs/IfcExpression.js +50 -13
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/IfcExpressionErrorListener.js +10 -6
- package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/mjs/IfcExpressionUtils.js +3 -0
- package/dist/mjs/IfcExpressionUtils.js.map +1 -1
- package/dist/mjs/IfcExpressionValidationListener.js +177 -0
- package/dist/mjs/IfcExpressionValidationListener.js.map +1 -0
- package/dist/mjs/context/IfcElementAccessor.js +17 -2
- package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
- package/dist/mjs/context/IfcPropertyAccessor.js +12 -1
- package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
- package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
- package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
- package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
- package/dist/mjs/context/IfcTypeObjectAccessor.js +11 -0
- package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
- package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
- package/dist/mjs/context/NopContext.js +9 -0
- package/dist/mjs/context/NopContext.js.map +1 -0
- package/dist/mjs/context/ObjectAccessor.js.map +1 -1
- package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js +33 -0
- package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -0
- package/dist/mjs/error/ExpressionTypeError.js +7 -0
- package/dist/mjs/error/ExpressionTypeError.js.map +1 -0
- package/dist/mjs/error/IfcExpressionFunctionConfigException.js.map +1 -0
- package/dist/mjs/error/InvalidSyntaxException.js +8 -0
- package/dist/mjs/error/InvalidSyntaxException.js.map +1 -0
- package/dist/mjs/error/MissingFunctionArgumentException.js +10 -0
- package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -0
- package/dist/mjs/error/NoSuchFunctionException.js +8 -0
- package/dist/mjs/error/NoSuchFunctionException.js.map +1 -0
- package/dist/mjs/error/NoSuchMethodException.js +9 -0
- package/dist/mjs/error/NoSuchMethodException.js.map +1 -0
- package/dist/mjs/{SyntaxErrorException.js → error/SyntaxErrorException.js} +1 -1
- package/dist/mjs/error/SyntaxErrorException.js.map +1 -0
- package/dist/mjs/error/ValidationException.js +24 -0
- package/dist/mjs/error/ValidationException.js.map +1 -0
- package/dist/mjs/error/WrongFunctionArgumentTypeException.js +12 -0
- package/dist/mjs/error/WrongFunctionArgumentTypeException.js.map +1 -0
- package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +7 -0
- package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -0
- package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js +11 -0
- package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -0
- package/dist/mjs/error/mapper/SyntaxErrorMapper.js +7 -0
- package/dist/mjs/error/mapper/SyntaxErrorMapper.js.map +1 -0
- package/dist/mjs/error/mapper/ValidationExceptionMapper.js +16 -0
- package/dist/mjs/error/mapper/ValidationExceptionMapper.js.map +1 -0
- package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +7 -0
- package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -0
- package/dist/mjs/expression/Expr.js.map +1 -1
- package/dist/mjs/expression/ExprBase.js.map +1 -1
- package/dist/mjs/expression/ExprEvalResult.js +60 -25
- package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/mjs/expression/ExprKind.js +17 -0
- package/dist/mjs/expression/ExprKind.js.map +1 -1
- package/dist/mjs/expression/boolean/AndExpr.js +19 -0
- package/dist/mjs/expression/boolean/AndExpr.js.map +1 -0
- package/dist/mjs/expression/boolean/BooleanLiteralExpr.js +19 -0
- package/dist/mjs/expression/boolean/BooleanLiteralExpr.js.map +1 -0
- package/dist/mjs/expression/boolean/NotExpr.js +19 -0
- package/dist/mjs/expression/boolean/NotExpr.js.map +1 -0
- package/dist/mjs/expression/boolean/OrExpr.js +19 -0
- package/dist/mjs/expression/boolean/OrExpr.js.map +1 -0
- package/dist/mjs/expression/boolean/XorExpr.js +21 -0
- package/dist/mjs/expression/boolean/XorExpr.js.map +1 -0
- package/dist/mjs/expression/comparison/ComparisonOp.js +19 -0
- package/dist/mjs/expression/comparison/ComparisonOp.js.map +1 -0
- package/dist/mjs/expression/comparison/EqualsExpr.js +19 -0
- package/dist/mjs/expression/comparison/EqualsExpr.js.map +1 -0
- package/dist/mjs/expression/comparison/GreaterThan.js +8 -0
- package/dist/mjs/expression/comparison/GreaterThan.js.map +1 -0
- package/dist/mjs/expression/comparison/GreaterThanOrEqual.js +8 -0
- package/dist/mjs/expression/comparison/GreaterThanOrEqual.js.map +1 -0
- package/dist/mjs/expression/comparison/LessThan.js +8 -0
- package/dist/mjs/expression/comparison/LessThan.js.map +1 -0
- package/dist/mjs/expression/comparison/LessThanOrEqual.js +8 -0
- package/dist/mjs/expression/comparison/LessThanOrEqual.js.map +1 -0
- package/dist/mjs/expression/comparison/NotEqualsExpr.js +19 -0
- package/dist/mjs/expression/comparison/NotEqualsExpr.js.map +1 -0
- package/dist/mjs/expression/function/Func.js +31 -3
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/FuncArg.js +4 -0
- package/dist/mjs/expression/function/FuncArg.js.map +1 -1
- package/dist/mjs/expression/function/FunctionExpr.js +13 -5
- package/dist/mjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +64 -6
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgAny.js +11 -0
- package/dist/mjs/expression/function/arg/FuncArgAny.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgBoolean.js +21 -0
- package/dist/mjs/expression/function/arg/FuncArgBoolean.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgInt.js +4 -0
- package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgMappings.js +41 -0
- package/dist/mjs/expression/function/arg/FuncArgMappings.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js +4 -0
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgObjectAccessor.js +27 -0
- package/dist/mjs/expression/function/arg/FuncArgObjectAccessor.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgRegex.js +24 -0
- package/dist/mjs/expression/function/arg/FuncArgRegex.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgSimpleRegex.js +16 -0
- package/dist/mjs/expression/function/arg/FuncArgSimpleRegex.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgString.js +21 -0
- package/dist/mjs/expression/function/arg/FuncArgString.js.map +1 -0
- package/dist/mjs/expression/function/impl/ApplyRegex.js +22 -0
- package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -0
- package/dist/mjs/expression/function/impl/AttributeAccessorFunction.js +23 -0
- package/dist/mjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -0
- package/dist/mjs/expression/function/impl/CompareMagnitudes.js +35 -0
- package/dist/mjs/expression/function/impl/CompareMagnitudes.js.map +1 -0
- package/dist/mjs/expression/function/impl/EQUALS.js +24 -0
- package/dist/mjs/expression/function/impl/EQUALS.js.map +1 -0
- package/dist/mjs/expression/function/impl/EXISTS.js +39 -0
- package/dist/mjs/expression/function/impl/EXISTS.js.map +1 -0
- package/dist/mjs/expression/function/impl/FuncBooleanBinary.js +25 -0
- package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -0
- package/dist/mjs/expression/function/impl/MAP.js +38 -49
- package/dist/mjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/mjs/expression/function/impl/MatchesPattern.js +34 -0
- package/dist/mjs/expression/function/impl/MatchesPattern.js.map +1 -0
- package/dist/mjs/expression/function/impl/NOT.js +19 -0
- package/dist/mjs/expression/function/impl/NOT.js.map +1 -0
- package/dist/mjs/expression/function/impl/PROPERTY.js +47 -0
- package/dist/mjs/expression/function/impl/PROPERTY.js.map +1 -0
- package/dist/mjs/expression/function/impl/PROPERTYSET.js +66 -0
- package/dist/mjs/expression/function/impl/PROPERTYSET.js.map +1 -0
- package/dist/mjs/expression/function/impl/ROUND.js +4 -0
- package/dist/mjs/expression/function/impl/ROUND.js.map +1 -1
- package/dist/mjs/expression/function/impl/ReplacePattern.js +36 -0
- package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -0
- package/dist/mjs/expression/function/impl/SWITCH.js +61 -0
- package/dist/mjs/expression/function/impl/SWITCH.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOSTRING.js +17 -0
- package/dist/mjs/expression/function/impl/TOSTRING.js.map +1 -0
- package/dist/mjs/expression/function/impl/TYPE.js +33 -0
- package/dist/mjs/expression/function/impl/TYPE.js.map +1 -0
- package/dist/mjs/expression/numeric/DivideExpr.js +7 -0
- package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MinusExpr.js +7 -0
- package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MultiplyExpr.js +7 -0
- package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js +9 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/PlusExpr.js +7 -0
- package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/PowerExpr.js +19 -0
- package/dist/mjs/expression/numeric/PowerExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/UnaryMinusExpr.js +19 -0
- package/dist/mjs/expression/numeric/UnaryMinusExpr.js.map +1 -0
- package/dist/mjs/expression/poly/PlusOrConcatExpr.js +33 -0
- package/dist/mjs/expression/poly/PlusOrConcatExpr.js.map +1 -0
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +9 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +9 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringConcatExpr.js +7 -0
- package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js +9 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/structure/ArrayExpr.js +7 -0
- package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -1
- package/dist/mjs/expression/structure/ParenthesisExpr.js +17 -0
- package/dist/mjs/expression/structure/ParenthesisExpr.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionLexer.js +84 -87
- package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionParser.js +760 -654
- package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
- package/dist/mjs/type/ArrayType.js +65 -0
- package/dist/mjs/type/ArrayType.js.map +1 -0
- package/dist/mjs/type/ExprType.js +2 -0
- package/dist/mjs/type/ExprType.js.map +1 -0
- package/dist/mjs/type/SimpleType.js +42 -0
- package/dist/mjs/type/SimpleType.js.map +1 -0
- package/dist/mjs/type/TupleType.js +96 -0
- package/dist/mjs/type/TupleType.js.map +1 -0
- package/dist/mjs/type/TypeDisjunction.js +60 -0
- package/dist/mjs/type/TypeDisjunction.js.map +1 -0
- package/dist/mjs/type/TypeManager.js +59 -0
- package/dist/mjs/type/TypeManager.js.map +1 -0
- package/dist/mjs/type/Types.js +86 -0
- package/dist/mjs/type/Types.js.map +1 -0
- package/dist/mjs/value/ArrayValue.js +18 -0
- package/dist/mjs/value/ArrayValue.js.map +1 -1
- package/dist/mjs/value/BooleanValue.js +10 -0
- package/dist/mjs/value/BooleanValue.js.map +1 -1
- package/dist/mjs/value/BoxedValueTypes.js +2 -0
- package/dist/mjs/value/BoxedValueTypes.js.map +1 -0
- package/dist/mjs/value/Comparable.js +5 -0
- package/dist/mjs/value/Comparable.js.map +1 -0
- package/dist/mjs/value/ExpressionValue.js +2 -0
- package/dist/mjs/value/ExpressionValue.js.map +1 -0
- package/dist/mjs/value/LogicalValue.js +11 -0
- package/dist/mjs/value/LogicalValue.js.map +1 -1
- package/dist/mjs/value/NumericValue.js +10 -0
- package/dist/mjs/value/NumericValue.js.map +1 -1
- package/dist/mjs/value/ObjectAccessorValue.js +28 -0
- package/dist/mjs/value/ObjectAccessorValue.js.map +1 -0
- package/dist/mjs/value/ReferenceValue.js +7 -0
- package/dist/mjs/value/ReferenceValue.js.map +1 -1
- package/dist/mjs/value/StringValue.js +11 -0
- package/dist/mjs/value/StringValue.js.map +1 -1
- package/dist/mjs/value/Value.js.map +1 -1
- package/dist/type/ArrayType.d.ts +12 -0
- package/dist/type/ExprType.d.ts +8 -0
- package/dist/type/SimpleType.d.ts +12 -0
- package/dist/type/TupleType.d.ts +15 -0
- package/dist/type/TypeDisjunction.d.ts +12 -0
- package/dist/type/TypeManager.d.ts +21 -0
- package/dist/type/Types.d.ts +41 -0
- package/dist/value/ArrayValue.d.ts +3 -0
- package/dist/value/BooleanValue.d.ts +6 -1
- package/dist/value/BoxedValueTypes.d.ts +3 -0
- package/dist/value/Comparable.d.ts +4 -0
- package/dist/value/{LiteralValue.d.ts → ExpressionValue.d.ts} +2 -1
- package/dist/value/LogicalValue.d.ts +3 -0
- package/dist/value/NumericValue.d.ts +6 -1
- package/dist/value/ObjectAccessorValue.d.ts +13 -0
- package/dist/value/ReferenceValue.d.ts +3 -0
- package/dist/value/StringValue.d.ts +7 -1
- package/dist/value/Value.d.ts +5 -2
- package/package.json +1 -1
- package/dist/cjs/SyntaxErrorException.js.map +0 -1
- package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +0 -1
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js +0 -15
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +0 -1
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js +0 -30
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +0 -1
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +0 -28
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +0 -1
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +0 -40
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +0 -1
- package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +0 -1
- package/dist/cjs/value/LiteralValue.js.map +0 -1
- package/dist/cjs/value/LiteralValueAnyArity.js +0 -3
- package/dist/cjs/value/LiteralValueAnyArity.js.map +0 -1
- package/dist/cjs/value/PrimitiveValueType.js.map +0 -1
- package/dist/expression/numeric/NumParenthesisExpr.d.ts +0 -8
- package/dist/expression/reference/AttributeReferenceExpr.d.ts +0 -13
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +0 -9
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +0 -12
- package/dist/expression/reference/ObjectReferenceExpr.d.ts +0 -4
- package/dist/mjs/SyntaxErrorException.js.map +0 -1
- package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +0 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js +0 -11
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +0 -1
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js +0 -26
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +0 -1
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +0 -24
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +0 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +0 -36
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +0 -1
- package/dist/mjs/expression/reference/ObjectReferenceExpr.js +0 -2
- package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +0 -1
- package/dist/mjs/value/LiteralValue.js +0 -2
- package/dist/mjs/value/LiteralValue.js.map +0 -1
- package/dist/mjs/value/LiteralValueAnyArity.js +0 -2
- package/dist/mjs/value/LiteralValueAnyArity.js.map +0 -1
- package/dist/mjs/value/PrimitiveValueType.js +0 -2
- package/dist/mjs/value/PrimitiveValueType.js.map +0 -1
- package/dist/value/LiteralValueAnyArity.d.ts +0 -2
- package/dist/value/PrimitiveValueType.d.ts +0 -2
- /package/dist/cjs/{expression/function → error}/IfcExpressionFunctionConfigException.js +0 -0
- /package/dist/{expression/function → error}/IfcExpressionFunctionConfigException.d.ts +0 -0
- /package/dist/mjs/{expression/function → error}/IfcExpressionFunctionConfigException.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/impl/MAP.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/MAP.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+DAKiC;AACjC,8CAAwC;AACxC,mDAA6C;AAE7C,0EAA2D;AAC3D,kEAA4D;AAG5D,qDAA+C;AAE/C,gHAA0G;AAE1G,MAAa,GAAI,SAAQ,cAAI;IAK3B;QACE,KAAK,CAAC,KAAK,EAAE;YACX,IAAI,oBAAO,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC;YAC7C,IAAI,oCAAe,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAChD,IAAI,oBAAO,CAAC,KAAK,EAAE,GAAG,CAAC,sBAAsB,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,gBAAK,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,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,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;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,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,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACzB,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;;AAzFH,kBA0FC;AAzFyB,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].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"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MatchesPattern = void 0;
|
|
4
|
+
const ApplyRegex_js_1 = require("./ApplyRegex.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
|
+
const BooleanValue_js_1 = require("../../../value/BooleanValue.js");
|
|
7
|
+
const IfcExpressionUtils_js_1 = require("../../../IfcExpressionUtils.js");
|
|
8
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
9
|
+
class MatchesPattern extends ApplyRegex_js_1.ApplyRegex {
|
|
10
|
+
constructor(name, simplePattern, requireFullMatch) {
|
|
11
|
+
super(name, simplePattern, requireFullMatch);
|
|
12
|
+
}
|
|
13
|
+
getReturnType(argumentTypes) {
|
|
14
|
+
return Types_js_1.Type.BOOLEAN;
|
|
15
|
+
}
|
|
16
|
+
calculateResult(evaluatedArguments) {
|
|
17
|
+
const inputValue = evaluatedArguments.get(MatchesPattern.KEY_INPUT);
|
|
18
|
+
const patternValue = evaluatedArguments.get(MatchesPattern.KEY_PATTERN);
|
|
19
|
+
const pattern = patternValue.getValue();
|
|
20
|
+
if (pattern.length === 0) {
|
|
21
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(false));
|
|
22
|
+
}
|
|
23
|
+
const caseSensitive = evaluatedArguments.get(MatchesPattern.KEY_CASE_INSENSITIVE);
|
|
24
|
+
const flags = caseSensitive.getValue() ? "im" : "m";
|
|
25
|
+
const regex = new RegExp(pattern, flags);
|
|
26
|
+
const input = inputValue.getValue();
|
|
27
|
+
const matches = input.match(regex);
|
|
28
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(matches)) {
|
|
29
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(false));
|
|
30
|
+
}
|
|
31
|
+
if (this.requireFullMatch) {
|
|
32
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(matches[0] === input));
|
|
33
|
+
}
|
|
34
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(true));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.MatchesPattern = MatchesPattern;
|
|
38
|
+
//# sourceMappingURL=MatchesPattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/MatchesPattern.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAE7C,+DAA6E;AAE7E,oEAA8D;AAC9D,0EAA2D;AAC3D,qDAA8C;AAG9C,MAAa,cAAe,SAAQ,0BAAU;IAC5C,YAAY,IAAY,EAAE,aAAsB,EAAE,gBAAyB;QACzE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,OAAO,GAAI,YAA4B,CAAC,QAAQ,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD;QACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAC1C,cAAc,CAAC,oBAAoB,CACpC,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAI,UAA0B,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAA,iCAAS,EAAC,OAAO,CAAC,EAAE;YACtB,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;SACtE;QACD,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAjCD,wCAiCC","file":"expression/function/impl/MatchesPattern.js","sourcesContent":["import { ApplyRegex } from \"./ApplyRegex.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class MatchesPattern extends ApplyRegex {\n constructor(name: string, simplePattern: boolean, requireFullMatch: boolean) {\n super(name, simplePattern, requireFullMatch);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const inputValue = evaluatedArguments.get(MatchesPattern.KEY_INPUT);\n const patternValue = evaluatedArguments.get(MatchesPattern.KEY_PATTERN);\n const pattern = (patternValue as StringValue).getValue();\n if (pattern.length === 0) {\n return new ExprEvalSuccessObj(BooleanValue.of(false));\n }\n const caseSensitive = evaluatedArguments.get(\n MatchesPattern.KEY_CASE_INSENSITIVE\n );\n const flags = caseSensitive.getValue() ? \"im\" : \"m\";\n const regex = new RegExp(pattern, flags);\n const input = (inputValue as StringValue).getValue();\n const matches = input.match(regex);\n if (isNullish(matches)) {\n return new ExprEvalSuccessObj(BooleanValue.of(false));\n }\n if (this.requireFullMatch) {\n return new ExprEvalSuccessObj(BooleanValue.of(matches[0] === input));\n }\n return new ExprEvalSuccessObj(BooleanValue.of(true));\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NOT = void 0;
|
|
4
|
+
const BooleanValue_js_1 = require("../../../value/BooleanValue.js");
|
|
5
|
+
const Func_js_1 = require("../Func.js");
|
|
6
|
+
const FuncArgBoolean_js_1 = require("../arg/FuncArgBoolean.js");
|
|
7
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
8
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
9
|
+
class NOT extends Func_js_1.Func {
|
|
10
|
+
constructor() {
|
|
11
|
+
super("NOT", [new FuncArgBoolean_js_1.FuncArgBoolean(true, NOT.KEY_ARG)]);
|
|
12
|
+
}
|
|
13
|
+
getReturnType(argumentTypes) {
|
|
14
|
+
return Types_js_1.Type.BOOLEAN;
|
|
15
|
+
}
|
|
16
|
+
calculateResult(evaluatedArguments) {
|
|
17
|
+
const arg = evaluatedArguments.get(NOT.KEY_ARG);
|
|
18
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(!arg.getValue()));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.NOT = NOT;
|
|
22
|
+
NOT.KEY_ARG = "arg";
|
|
23
|
+
//# sourceMappingURL=NOT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/NOT.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAC9D,wCAAkC;AAClC,gEAA0D;AAE1D,+DAA6E;AAC7E,qDAA8C;AAG9C,MAAa,GAAI,SAAQ,cAAI;IAG3B;QACE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,kCAAc,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAC;QAChE,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;;AAhBH,kBAiBC;AAhByB,WAAO,GAAG,KAAK,CAAC","file":"expression/function/impl/NOT.js","sourcesContent":["import { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Func } from \"../Func.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class NOT extends Func {\n private static readonly KEY_ARG = \"arg\";\n\n constructor() {\n super(\"NOT\", [new FuncArgBoolean(true, NOT.KEY_ARG)]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const arg = evaluatedArguments.get(NOT.KEY_ARG) as BooleanValue;\n return new ExprEvalSuccessObj(BooleanValue.of(!arg.getValue()));\n }\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROPERTY = void 0;
|
|
4
|
+
const Func_js_1 = require("../Func.js");
|
|
5
|
+
const FuncArg_js_1 = require("../FuncArg.js");
|
|
6
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
7
|
+
const ObjectAccessorValue_js_1 = require("../../../value/ObjectAccessorValue.js");
|
|
8
|
+
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
9
|
+
const FuncArgObjectAccessor_js_1 = require("../arg/FuncArgObjectAccessor.js");
|
|
10
|
+
const StringValue_js_1 = require("../../../value/StringValue.js");
|
|
11
|
+
const IfcExpressionUtils_js_1 = require("../../../IfcExpressionUtils.js");
|
|
12
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
13
|
+
class PROPERTY extends Func_js_1.Func {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("PROPERTY", [
|
|
16
|
+
new FuncArgObjectAccessor_js_1.FuncArgObjectAccessor(true, PROPERTY.KEY_OBJECT_REF, Types_js_1.Types.or(Types_js_1.Type.IFC_ELEMENT_REF, Types_js_1.Type.IFC_PROPERTY_SET_REF, Types_js_1.Type.IFC_TYPE_OBJECT_REF)),
|
|
17
|
+
new FuncArg_js_1.FuncArg(false, PROPERTY.KEY_PROPERTY_NAME),
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
getReturnType(argumentTypes) {
|
|
21
|
+
return Types_js_1.Type.IFC_PROPERTY_REF;
|
|
22
|
+
}
|
|
23
|
+
calculateResult(evaluatedArguments) {
|
|
24
|
+
const objectRef = evaluatedArguments
|
|
25
|
+
.get(PROPERTY.KEY_OBJECT_REF)
|
|
26
|
+
.getValue();
|
|
27
|
+
const accessorFun = objectRef["getIfcPropertyAccessor"];
|
|
28
|
+
if (typeof accessorFun === "function") {
|
|
29
|
+
const propertyNameVal = evaluatedArguments.get(PROPERTY.KEY_PROPERTY_NAME);
|
|
30
|
+
if (typeof propertyNameVal === undefined) {
|
|
31
|
+
return new ExprEvalResult_js_1.ExprEvalMissingRequiredFunctionArgumentErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Cannot access property: no name specified", this.getName(), PROPERTY.KEY_PROPERTY_NAME, 1);
|
|
32
|
+
}
|
|
33
|
+
if (!StringValue_js_1.StringValue.isStringValueType(propertyNameVal)) {
|
|
34
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Property name must be a string", propertyNameVal);
|
|
35
|
+
}
|
|
36
|
+
const propertyName = propertyNameVal.stringValue;
|
|
37
|
+
const resultingObjectAccessor = accessorFun(propertyName);
|
|
38
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(resultingObjectAccessor)) {
|
|
39
|
+
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationObjectNotFoundErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.IFC_PROPERTY_NOT_FOUND, `No ifc property found with name '${propertyName}'`, this.getName(), propertyName);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(ObjectAccessorValue_js_1.ObjectAccessorValue.of(resultingObjectAccessor));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Cannot evaluate function 'property' on the specified object", objectRef);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.PROPERTY = PROPERTY;
|
|
49
|
+
PROPERTY.KEY_OBJECT_REF = "objectRef";
|
|
50
|
+
PROPERTY.KEY_PROPERTY_NAME = "propertyName";
|
|
51
|
+
//# sourceMappingURL=PROPERTY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/PROPERTY.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,8CAAwC;AAExC,+DAOiC;AACjC,kFAA4E;AAC5E,mDAA6C;AAC7C,8EAAwE;AACxE,kEAA4D;AAC5D,0EAA2D;AAC3D,qDAAqD;AAGrD,MAAa,QAAS,SAAQ,cAAI;IAIhC;QACE,KAAK,CAAC,UAAU,EAAE;YAChB,IAAI,gDAAqB,CACvB,IAAI,EACJ,QAAQ,CAAC,cAAc,EACvB,gBAAK,CAAC,EAAE,CACN,eAAI,CAAC,eAAe,EACpB,eAAI,CAAC,oBAAoB,EACzB,eAAI,CAAC,mBAAmB,CACzB,CACF;YACD,IAAI,oBAAO,CAAS,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC;SACvD,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,SAAS,GAAG,kBAAkB;aACjC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;aAC5B,QAAQ,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACxD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;YACrC,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAC5C,QAAQ,CAAC,iBAAiB,CAC3B,CAAC;YACF,IAAI,OAAO,eAAe,KAAK,SAAS,EAAE;gBACxC,OAAO,IAAI,mEAA+C,CACxD,sBAAQ,CAAC,kBAAkB,EAC3B,2CAA2C,EAC3C,IAAI,CAAC,OAAO,EAAE,EACd,QAAQ,CAAC,iBAAiB,EAC1B,CAAC,CACF,CAAC;aACH;YACD,IAAI,CAAC,4BAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;gBACnD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,gCAAgC,EAChC,eAAe,CAChB,CAAC;aACH;YACD,MAAM,YAAY,GAAW,eAAe,CAAC,WAAW,CAAC;YACzD,MAAM,uBAAuB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YAC1D,IAAI,IAAA,iCAAS,EAAC,uBAAuB,CAAC,EAAE;gBACtC,OAAO,IAAI,oEAAgD,CACzD,sBAAQ,CAAC,QAAQ,EACjB,kCAAc,CAAC,sBAAsB,EACrC,oCAAoC,YAAY,GAAG,EACnD,IAAI,CAAC,OAAO,EAAE,EACd,YAAY,CACb,CAAC;aACH;iBAAM;gBACL,OAAO,IAAI,sCAAkB,CAC3B,4CAAmB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAChD,CAAC;aACH;SACF;QACD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,6DAA6D,EAC7D,SAAS,CACV,CAAC;IACJ,CAAC;;AAvEH,4BAwEC;AAvEiB,uBAAc,GAAG,WAAW,CAAC;AAC7B,0BAAiB,GAAG,cAAc,CAAC","file":"expression/function/impl/PROPERTY.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationObjectNotFoundErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ObjectAccessorValue } from \"../../../value/ObjectAccessorValue.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { FuncArgObjectAccessor } from \"../arg/FuncArgObjectAccessor.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class PROPERTY extends Func {\n static readonly KEY_OBJECT_REF = \"objectRef\";\n static readonly KEY_PROPERTY_NAME = \"propertyName\";\n\n constructor() {\n super(\"PROPERTY\", [\n new FuncArgObjectAccessor(\n true,\n PROPERTY.KEY_OBJECT_REF,\n Types.or(\n Type.IFC_ELEMENT_REF,\n Type.IFC_PROPERTY_SET_REF,\n Type.IFC_TYPE_OBJECT_REF\n )\n ),\n new FuncArg<string>(false, PROPERTY.KEY_PROPERTY_NAME),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_PROPERTY_REF;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const objectRef = evaluatedArguments\n .get(PROPERTY.KEY_OBJECT_REF)\n .getValue();\n const accessorFun = objectRef[\"getIfcPropertyAccessor\"];\n if (typeof accessorFun === \"function\") {\n const propertyNameVal = evaluatedArguments.get(\n PROPERTY.KEY_PROPERTY_NAME\n );\n if (typeof propertyNameVal === undefined) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Cannot access property: no name specified\",\n this.getName(),\n PROPERTY.KEY_PROPERTY_NAME,\n 1\n );\n }\n if (!StringValue.isStringValueType(propertyNameVal)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Property name must be a string\",\n propertyNameVal\n );\n }\n const propertyName: string = propertyNameVal.stringValue;\n const resultingObjectAccessor = accessorFun(propertyName);\n if (isNullish(resultingObjectAccessor)) {\n return new ExprEvalFunctionEvaluationObjectNotFoundErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.IFC_PROPERTY_NOT_FOUND,\n `No ifc property found with name '${propertyName}'`,\n this.getName(),\n propertyName\n );\n } else {\n return new ExprEvalSuccessObj(\n ObjectAccessorValue.of(resultingObjectAccessor)\n );\n }\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Cannot evaluate function 'property' on the specified object\",\n objectRef\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROPERTYSET = void 0;
|
|
4
|
+
const Func_js_1 = require("../Func.js");
|
|
5
|
+
const FuncArg_js_1 = require("../FuncArg.js");
|
|
6
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
7
|
+
const ObjectAccessorValue_js_1 = require("../../../value/ObjectAccessorValue.js");
|
|
8
|
+
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
9
|
+
const FuncArgObjectAccessor_js_1 = require("../arg/FuncArgObjectAccessor.js");
|
|
10
|
+
const IfcElementAccessor_js_1 = require("../../../context/IfcElementAccessor.js");
|
|
11
|
+
const StringValue_js_1 = require("../../../value/StringValue.js");
|
|
12
|
+
const IfcPropertyAccessor_js_1 = require("../../../context/IfcPropertyAccessor.js");
|
|
13
|
+
const IfcTypeObjectAccessor_js_1 = require("../../../context/IfcTypeObjectAccessor.js");
|
|
14
|
+
const IfcExpressionUtils_js_1 = require("../../../IfcExpressionUtils.js");
|
|
15
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
16
|
+
class PROPERTYSET extends Func_js_1.Func {
|
|
17
|
+
constructor() {
|
|
18
|
+
super("PROPERTYSET", [
|
|
19
|
+
new FuncArgObjectAccessor_js_1.FuncArgObjectAccessor(true, PROPERTYSET.KEY_OBJECT_REF, Types_js_1.Types.or(Types_js_1.Type.IFC_ELEMENT_REF, Types_js_1.Type.IFC_PROPERTY_REF, Types_js_1.Type.IFC_TYPE_OBJECT_REF)),
|
|
20
|
+
new FuncArg_js_1.FuncArg(false, PROPERTYSET.KEY_PSET_NAME),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
getReturnType(argumentTypes) {
|
|
24
|
+
return Types_js_1.Type.IFC_PROPERTY_SET_REF;
|
|
25
|
+
}
|
|
26
|
+
calculateResult(evaluatedArguments) {
|
|
27
|
+
const objectRef = evaluatedArguments
|
|
28
|
+
.get(PROPERTYSET.KEY_OBJECT_REF)
|
|
29
|
+
.getValue();
|
|
30
|
+
if ((0, IfcElementAccessor_js_1.isIfcElementAccessor)(objectRef)) {
|
|
31
|
+
const psetNameVal = evaluatedArguments.get(PROPERTYSET.KEY_PSET_NAME);
|
|
32
|
+
if (typeof psetNameVal === undefined) {
|
|
33
|
+
return new ExprEvalResult_js_1.ExprEvalMissingRequiredFunctionArgumentErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Name is required to access a property set of an IFC element", this.getName(), PROPERTYSET.KEY_PSET_NAME, 1);
|
|
34
|
+
}
|
|
35
|
+
if (!StringValue_js_1.StringValue.isStringValueType(psetNameVal)) {
|
|
36
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Property set name must be a string", psetNameVal);
|
|
37
|
+
}
|
|
38
|
+
const psetName = psetNameVal.stringValue;
|
|
39
|
+
const resultingObjectAccessor = objectRef.getIfcPropertySetAccessor(psetName);
|
|
40
|
+
return this.makeResult(resultingObjectAccessor, psetName);
|
|
41
|
+
}
|
|
42
|
+
else if ((0, IfcPropertyAccessor_js_1.isIfcPropertyAccessor)(objectRef)) {
|
|
43
|
+
return this.makeResult(objectRef.getIfcPropertySetAccessor(), "[PropertySet of Property]");
|
|
44
|
+
}
|
|
45
|
+
else if ((0, IfcTypeObjectAccessor_js_1.isIfcTypeObjectAccessor)(objectRef)) {
|
|
46
|
+
const psetNameVal = evaluatedArguments.get(PROPERTYSET.KEY_PSET_NAME);
|
|
47
|
+
if (typeof psetNameVal === undefined) {
|
|
48
|
+
return new ExprEvalResult_js_1.ExprEvalMissingRequiredFunctionArgumentErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Name is required to access a property set of an IFC type object", this.getName(), PROPERTYSET.KEY_PSET_NAME, 1);
|
|
49
|
+
}
|
|
50
|
+
if (!StringValue_js_1.StringValue.isStringValueType(psetNameVal)) {
|
|
51
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Property set name must be a string", psetNameVal);
|
|
52
|
+
}
|
|
53
|
+
const psetName = psetNameVal.stringValue;
|
|
54
|
+
return this.makeResult(objectRef.getIfcPropertySetAccessor(psetName), psetName);
|
|
55
|
+
}
|
|
56
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, "Cannot evaluate function 'propertySet' on the specified object", objectRef);
|
|
57
|
+
}
|
|
58
|
+
makeResult(resultingObjectAccessor, psetName) {
|
|
59
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(resultingObjectAccessor)) {
|
|
60
|
+
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationObjectNotFoundErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.IFC_PROPERTY_SET_NOT_FOUND, `No ifc property set found with name '${psetName}'`, this.getName(), psetName);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(ObjectAccessorValue_js_1.ObjectAccessorValue.of(resultingObjectAccessor));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.PROPERTYSET = PROPERTYSET;
|
|
68
|
+
PROPERTYSET.KEY_OBJECT_REF = "objectRef";
|
|
69
|
+
PROPERTYSET.KEY_PSET_NAME = "pset_name";
|
|
70
|
+
//# sourceMappingURL=PROPERTYSET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/PROPERTYSET.ts"],"names":[],"mappings":"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","file":"expression/function/impl/PROPERTYSET.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationObjectNotFoundErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ObjectAccessorValue } from \"../../../value/ObjectAccessorValue.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { FuncArgObjectAccessor } from \"../arg/FuncArgObjectAccessor.js\";\nimport { isIfcElementAccessor } from \"../../../context/IfcElementAccessor.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport {\n IfcPropertyAccessor,\n isIfcPropertyAccessor,\n} from \"../../../context/IfcPropertyAccessor.js\";\nimport { isIfcTypeObjectAccessor } from \"../../../context/IfcTypeObjectAccessor.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { IfcPropertySetAccessor } from \"../../../context/IfcPropertySetAccessor.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class PROPERTYSET extends Func {\n static readonly KEY_OBJECT_REF = \"objectRef\";\n static readonly KEY_PSET_NAME = \"pset_name\";\n\n constructor() {\n super(\"PROPERTYSET\", [\n new FuncArgObjectAccessor(\n true,\n PROPERTYSET.KEY_OBJECT_REF,\n Types.or(\n Type.IFC_ELEMENT_REF,\n Type.IFC_PROPERTY_REF,\n Type.IFC_TYPE_OBJECT_REF\n )\n ),\n new FuncArg<string>(false, PROPERTYSET.KEY_PSET_NAME),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_PROPERTY_SET_REF;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const objectRef = evaluatedArguments\n .get(PROPERTYSET.KEY_OBJECT_REF)\n .getValue();\n if (isIfcElementAccessor(objectRef)) {\n const psetNameVal = evaluatedArguments.get(PROPERTYSET.KEY_PSET_NAME);\n if (typeof psetNameVal === undefined) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Name is required to access a property set of an IFC element\",\n this.getName(),\n PROPERTYSET.KEY_PSET_NAME,\n 1\n );\n }\n if (!StringValue.isStringValueType(psetNameVal)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Property set name must be a string\",\n psetNameVal\n );\n }\n const psetName: string = psetNameVal.stringValue;\n const resultingObjectAccessor =\n objectRef.getIfcPropertySetAccessor(psetName);\n return this.makeResult(resultingObjectAccessor, psetName);\n } else if (isIfcPropertyAccessor(objectRef)) {\n return this.makeResult(\n (objectRef as IfcPropertyAccessor).getIfcPropertySetAccessor(),\n \"[PropertySet of Property]\"\n );\n } else if (isIfcTypeObjectAccessor(objectRef)) {\n const psetNameVal = evaluatedArguments.get(PROPERTYSET.KEY_PSET_NAME);\n if (typeof psetNameVal === undefined) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Name is required to access a property set of an IFC type object\",\n this.getName(),\n PROPERTYSET.KEY_PSET_NAME,\n 1\n );\n }\n if (!StringValue.isStringValueType(psetNameVal)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Property set name must be a string\",\n psetNameVal\n );\n }\n const psetName: string = psetNameVal.stringValue;\n return this.makeResult(\n objectRef.getIfcPropertySetAccessor(psetName),\n psetName\n );\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n \"Cannot evaluate function 'propertySet' on the specified object\",\n objectRef\n );\n }\n\n private makeResult(\n resultingObjectAccessor: IfcPropertySetAccessor,\n psetName: string\n ) {\n if (isNullish(resultingObjectAccessor)) {\n return new ExprEvalFunctionEvaluationObjectNotFoundErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.IFC_PROPERTY_SET_NOT_FOUND,\n `No ifc property set found with name '${psetName}'`,\n this.getName(),\n psetName\n );\n } else {\n return new ExprEvalSuccessObj(\n ObjectAccessorValue.of(resultingObjectAccessor)\n );\n }\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ const NumericValue_js_1 = require("../../../value/NumericValue.js");
|
|
|
7
7
|
const FuncArgNumeric_js_1 = require("../arg/FuncArgNumeric.js");
|
|
8
8
|
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
9
9
|
const decimal_js_1 = require("decimal.js");
|
|
10
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
10
11
|
class ROUND extends Func_js_1.Func {
|
|
11
12
|
constructor() {
|
|
12
13
|
super("ROUND", [
|
|
@@ -14,6 +15,9 @@ class ROUND extends Func_js_1.Func {
|
|
|
14
15
|
new FuncArgInt_js_1.FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue_js_1.NumericValue(0)),
|
|
15
16
|
]);
|
|
16
17
|
}
|
|
18
|
+
getReturnType(argumentTypes) {
|
|
19
|
+
return Types_js_1.Type.NUMERIC;
|
|
20
|
+
}
|
|
17
21
|
calculateResult(evaluatedArguments) {
|
|
18
22
|
const input = evaluatedArguments.get(ROUND.KEY_INPUT);
|
|
19
23
|
const numDecimals = evaluatedArguments.get(ROUND.KEY_NUM_DECMIALS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/impl/ROUND.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAClD,oEAA8D;AAC9D,gEAA0D;AAE1D,+DAA6E;AAC7E,2CAAqC;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/ROUND.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAClD,oEAA8D;AAC9D,gEAA0D;AAE1D,+DAA6E;AAC7E,2CAAqC;AACrC,qDAA8C;AAG9C,MAAa,KAAM,SAAQ,cAAI;IAI7B;QACE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,kCAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;YACzC,IAAI,0BAAU,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,8BAAY,CAAC,CAAC,CAAC,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAiB,CAAC;QACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CACxC,KAAK,CAAC,gBAAgB,CACP,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK;aAClB,QAAQ,EAAE;aACV,eAAe,CACd,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EACjC,oBAAO,CAAC,aAAa,CACtB,CAAC;QACJ,OAAO,IAAI,sCAAkB,CAAC,IAAI,8BAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;;AA7BH,sBA8BC;AA7BgB,eAAS,GAAG,OAAO,CAAC;AACpB,sBAAgB,GAAG,cAAc,CAAC","file":"expression/function/impl/ROUND.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgInt } from \"../arg/FuncArgInt.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { FuncArgNumeric } from \"../arg/FuncArgNumeric.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Decimal } from \"decimal.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class ROUND extends Func {\n private static KEY_INPUT = \"input\";\n private static KEY_NUM_DECMIALS = \"num_decimals\";\n\n constructor() {\n super(\"ROUND\", [\n new FuncArgNumeric(true, ROUND.KEY_INPUT),\n new FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue(0)),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.NUMERIC;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const input = evaluatedArguments.get(ROUND.KEY_INPUT) as NumericValue;\n const numDecimals = evaluatedArguments.get(\n ROUND.KEY_NUM_DECMIALS\n ) as NumericValue;\n const rounded = input\n .getValue()\n .toDecimalPlaces(\n numDecimals.getValue().toNumber(),\n Decimal.ROUND_HALF_UP\n );\n return new ExprEvalSuccessObj(new NumericValue(rounded));\n }\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReplacePattern = void 0;
|
|
4
|
+
const ApplyRegex_js_1 = require("./ApplyRegex.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
|
+
const StringValue_js_1 = require("../../../value/StringValue.js");
|
|
7
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
8
|
+
const FuncArgString_js_1 = require("../arg/FuncArgString.js");
|
|
9
|
+
const FuncArgRegex_js_1 = require("../arg/FuncArgRegex.js");
|
|
10
|
+
const MatchesPattern_js_1 = require("./MatchesPattern.js");
|
|
11
|
+
class ReplacePattern extends ApplyRegex_js_1.ApplyRegex {
|
|
12
|
+
constructor(name, simplePattern) {
|
|
13
|
+
super(name, simplePattern, false);
|
|
14
|
+
this.formalArguments.splice(2, 0, simplePattern
|
|
15
|
+
? new FuncArgString_js_1.FuncArgString(true, ReplacePattern.KEY_REPLACE)
|
|
16
|
+
: new FuncArgRegex_js_1.FuncArgRegex(true, ReplacePattern.KEY_REPLACE));
|
|
17
|
+
}
|
|
18
|
+
getReturnType(argumentTypes) {
|
|
19
|
+
return Types_js_1.Type.STRING;
|
|
20
|
+
}
|
|
21
|
+
calculateResult(evaluatedArguments) {
|
|
22
|
+
const inputValue = evaluatedArguments.get(MatchesPattern_js_1.MatchesPattern.KEY_INPUT);
|
|
23
|
+
const patternValue = evaluatedArguments.get(MatchesPattern_js_1.MatchesPattern.KEY_PATTERN);
|
|
24
|
+
const replaceValue = evaluatedArguments.get(ReplacePattern.KEY_REPLACE);
|
|
25
|
+
const pattern = patternValue.getValue();
|
|
26
|
+
if (pattern.length === 0) {
|
|
27
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(inputValue);
|
|
28
|
+
}
|
|
29
|
+
const caseSensitive = evaluatedArguments.get(MatchesPattern_js_1.MatchesPattern.KEY_CASE_INSENSITIVE);
|
|
30
|
+
const flags = caseSensitive.getValue() ? "im" : "m";
|
|
31
|
+
const regex = new RegExp(pattern, flags);
|
|
32
|
+
const input = inputValue.getValue();
|
|
33
|
+
const replace = replaceValue.getValue();
|
|
34
|
+
const result = input.replace(regex, replace);
|
|
35
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(StringValue_js_1.StringValue.of(result));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ReplacePattern = ReplacePattern;
|
|
39
|
+
ReplacePattern.KEY_REPLACE = "replaceValue";
|
|
40
|
+
//# sourceMappingURL=ReplacePattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/ReplacePattern.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAE7C,+DAA6E;AAC7E,kEAA4D;AAC5D,qDAA8C;AAC9C,8DAAwD;AACxD,4DAAsD;AACtD,2DAAqD;AAGrD,MAAa,cAAe,SAAQ,0BAAU;IAG5C,YAAY,IAAY,EAAE,aAAsB;QAC9C,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CACzB,CAAC,EACD,CAAC,EACD,aAAa;YACX,CAAC,CAAC,IAAI,gCAAa,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;YACrD,CAAC,CAAC,IAAI,8BAAY,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,kCAAc,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,kCAAc,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,OAAO,GAAI,YAA4B,CAAC,QAAQ,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,sCAAkB,CAAC,UAAU,CAAC,CAAC;SAC3C;QACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAC1C,kCAAc,CAAC,oBAAoB,CACpC,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAI,UAA0B,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,OAAO,GAAI,YAA4B,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,sCAAkB,CAAC,4BAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;;AArCH,wCAsCC;AArCyB,0BAAW,GAAG,cAAc,CAAC","file":"expression/function/impl/ReplacePattern.js","sourcesContent":["import { ApplyRegex } from \"./ApplyRegex.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FuncArgString } from \"../arg/FuncArgString.js\";\nimport { FuncArgRegex } from \"../arg/FuncArgRegex.js\";\nimport { MatchesPattern } from \"./MatchesPattern.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class ReplacePattern extends ApplyRegex {\n private static readonly KEY_REPLACE = \"replaceValue\";\n\n constructor(name: string, simplePattern: boolean) {\n super(name, simplePattern, false);\n this.formalArguments.splice(\n 2,\n 0,\n simplePattern\n ? new FuncArgString(true, ReplacePattern.KEY_REPLACE)\n : new FuncArgRegex(true, ReplacePattern.KEY_REPLACE)\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.STRING;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const inputValue = evaluatedArguments.get(MatchesPattern.KEY_INPUT);\n const patternValue = evaluatedArguments.get(MatchesPattern.KEY_PATTERN);\n const replaceValue = evaluatedArguments.get(ReplacePattern.KEY_REPLACE);\n const pattern = (patternValue as StringValue).getValue();\n if (pattern.length === 0) {\n return new ExprEvalSuccessObj(inputValue);\n }\n const caseSensitive = evaluatedArguments.get(\n MatchesPattern.KEY_CASE_INSENSITIVE\n );\n const flags = caseSensitive.getValue() ? \"im\" : \"m\";\n const regex = new RegExp(pattern, flags);\n const input = (inputValue as StringValue).getValue();\n const replace = (replaceValue as StringValue).getValue();\n const result = input.replace(regex, replace);\n return new ExprEvalSuccessObj(StringValue.of(result));\n }\n}\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SWITCH = void 0;
|
|
4
|
+
const Func_js_1 = require("../Func.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
|
+
const FuncArg_js_1 = require("../FuncArg.js");
|
|
7
|
+
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
8
|
+
const IfcExpressionUtils_js_1 = require("../../../IfcExpressionUtils.js");
|
|
9
|
+
const BooleanValue_js_1 = require("../../../value/BooleanValue.js");
|
|
10
|
+
const FuncArgMappings_js_1 = require("../arg/FuncArgMappings.js");
|
|
11
|
+
const WrongFunctionArgumentTypeException_js_1 = require("../../../error/WrongFunctionArgumentTypeException.js");
|
|
12
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
13
|
+
class SWITCH extends Func_js_1.Func {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("SWITCH", [
|
|
16
|
+
new FuncArgMappings_js_1.FuncArgMappings(true, SWITCH.ARG_NAME_CASES),
|
|
17
|
+
new FuncArg_js_1.FuncArg(false, SWITCH.ARG_NAME_DEFAULT_VALUE),
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
checkArgumentsAndGetReturnType(argumentTypes, ctx) {
|
|
21
|
+
const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);
|
|
22
|
+
const tupleTypes = argumentTypes[0]
|
|
23
|
+
.toArrayType()
|
|
24
|
+
.getElementType().getTypes()[0].getTypes();
|
|
25
|
+
const inType = tupleTypes[0];
|
|
26
|
+
const outType = tupleTypes[1];
|
|
27
|
+
if (!Types_js_1.Type.BOOLEAN.isSameTypeAs(inType)) {
|
|
28
|
+
throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[0].name, Types_js_1.Type.BOOLEAN, inType, 0, ctx);
|
|
29
|
+
}
|
|
30
|
+
if (argumentTypes.length > 1 && !argumentTypes[1].isSameTypeAs(outType)) {
|
|
31
|
+
throw new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[1].name, inType, argumentTypes[1], 1, ctx);
|
|
32
|
+
}
|
|
33
|
+
return returnType;
|
|
34
|
+
}
|
|
35
|
+
getReturnType(argumentTypes) {
|
|
36
|
+
return argumentTypes[0].getTypes()[1];
|
|
37
|
+
}
|
|
38
|
+
calculateResult(evaluatedArguments) {
|
|
39
|
+
const mappings = evaluatedArguments.get(SWITCH.ARG_NAME_CASES);
|
|
40
|
+
const defaultValue = evaluatedArguments.get(SWITCH.ARG_NAME_DEFAULT_VALUE);
|
|
41
|
+
const outerArray = mappings.getValue();
|
|
42
|
+
const numMappings = outerArray.length;
|
|
43
|
+
for (let i = 0; i < numMappings; i++) {
|
|
44
|
+
const error = FuncArgMappings_js_1.FuncArgMappings.checkSingleMapping(outerArray, i);
|
|
45
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(error)) {
|
|
46
|
+
return error;
|
|
47
|
+
}
|
|
48
|
+
const pair = outerArray[i].getValue();
|
|
49
|
+
if (!BooleanValue_js_1.BooleanValue.isBooleanValueType(pair[0])) {
|
|
50
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION, `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`, pair[0]);
|
|
51
|
+
}
|
|
52
|
+
if (pair[0].getValue() === true) {
|
|
53
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(pair[1]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(defaultValue)) {
|
|
57
|
+
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.UNDEFINED_RESULT, "Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined ", this.name);
|
|
58
|
+
}
|
|
59
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(defaultValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.SWITCH = SWITCH;
|
|
63
|
+
SWITCH.ARG_NAME_CASES = "cases";
|
|
64
|
+
SWITCH.ARG_NAME_DEFAULT_VALUE = "defaultValue";
|
|
65
|
+
//# sourceMappingURL=SWITCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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.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"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TOSTRING = void 0;
|
|
4
|
+
const Func_js_1 = require("../Func.js");
|
|
5
|
+
const FuncArgAny_js_1 = require("../arg/FuncArgAny.js");
|
|
6
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
7
|
+
const StringValue_js_1 = require("../../../value/StringValue.js");
|
|
8
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
9
|
+
class TOSTRING extends Func_js_1.Func {
|
|
10
|
+
constructor() {
|
|
11
|
+
super("TOSTRING", [new FuncArgAny_js_1.FuncArgAny(true, "object")]);
|
|
12
|
+
}
|
|
13
|
+
calculateResult(evaluatedArguments) {
|
|
14
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(StringValue_js_1.StringValue.of(evaluatedArguments.get("object").toString()));
|
|
15
|
+
}
|
|
16
|
+
getReturnType(argumentTypes) {
|
|
17
|
+
return Types_js_1.Type.STRING;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.TOSTRING = TOSTRING;
|
|
21
|
+
//# sourceMappingURL=TOSTRING.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/TOSTRING.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAElD,+DAA6E;AAC7E,kEAA4D;AAE5D,qDAA8C;AAE9C,MAAa,QAAS,SAAQ,cAAI;IAChC;QACE,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,0BAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,OAAO,IAAI,sCAAkB,CAC3B,4BAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAhBD,4BAgBC","file":"expression/function/impl/TOSTRING.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\n\nexport class TOSTRING extends Func {\n constructor() {\n super(\"TOSTRING\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return new ExprEvalSuccessObj(\n StringValue.of(evaluatedArguments.get(\"object\").toString())\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.STRING;\n }\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TYPE = void 0;
|
|
4
|
+
const Func_js_1 = require("../Func.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
|
+
const ObjectAccessorValue_js_1 = require("../../../value/ObjectAccessorValue.js");
|
|
7
|
+
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
8
|
+
const FuncArgObjectAccessor_js_1 = require("../arg/FuncArgObjectAccessor.js");
|
|
9
|
+
const IfcExpressionUtils_js_1 = require("../../../IfcExpressionUtils.js");
|
|
10
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
11
|
+
class TYPE extends Func_js_1.Func {
|
|
12
|
+
constructor() {
|
|
13
|
+
super("TYPE", [
|
|
14
|
+
new FuncArgObjectAccessor_js_1.FuncArgObjectAccessor(true, TYPE.KEY_OBJECT_REF, Types_js_1.Type.IFC_ELEMENT_REF),
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
getReturnType(argumentTypes) {
|
|
18
|
+
return Types_js_1.Type.IFC_TYPE_OBJECT_REF;
|
|
19
|
+
}
|
|
20
|
+
calculateResult(evaluatedArguments) {
|
|
21
|
+
const objectRef = evaluatedArguments.get(TYPE.KEY_OBJECT_REF).getValue();
|
|
22
|
+
const accessorFun = objectRef["getIfcTypeObjectAccessor"];
|
|
23
|
+
if (typeof accessorFun === "function") {
|
|
24
|
+
const resultingObjectAccessor = accessorFun();
|
|
25
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(resultingObjectAccessor)) {
|
|
26
|
+
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationObjectNotFoundErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.IFC_TYPE_OBJECT_NOT_FOUND, `No type object found`, this.getName(), "[Type of IFC element]");
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(ObjectAccessorValue_js_1.ObjectAccessorValue.of(resultingObjectAccessor));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Cannot evaluate function ${this.getName()} on the specified object`, objectRef);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.TYPE = TYPE;
|
|
36
|
+
TYPE.KEY_OBJECT_REF = "objectRef";
|
|
37
|
+
//# sourceMappingURL=TYPE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/impl/TYPE.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+DAMiC;AACjC,kFAA4E;AAC5E,mDAA6C;AAC7C,8EAAwE;AACxE,0EAA2D;AAC3D,qDAA8C;AAG9C,MAAa,IAAK,SAAQ,cAAI;IAG5B;QACE,KAAK,CAAC,MAAM,EAAE;YACZ,IAAI,gDAAqB,CACvB,IAAI,EACJ,IAAI,CAAC,cAAc,EACnB,eAAI,CAAC,eAAe,CACrB;SACF,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAES,eAAe,CACvB,kBAAgD;QAEhD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzE,MAAM,WAAW,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAC1D,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;YACrC,MAAM,uBAAuB,GAAG,WAAW,EAAE,CAAC;YAC9C,IAAI,IAAA,iCAAS,EAAC,uBAAuB,CAAC,EAAE;gBACtC,OAAO,IAAI,oEAAgD,CACzD,sBAAQ,CAAC,QAAQ,EACjB,kCAAc,CAAC,yBAAyB,EACxC,sBAAsB,EACtB,IAAI,CAAC,OAAO,EAAE,EACd,uBAAuB,CACxB,CAAC;aACH;iBAAM;gBACL,OAAO,IAAI,sCAAkB,CAC3B,4CAAmB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAChD,CAAC;aACH;SACF;QACD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,4BAA4B,IAAI,CAAC,OAAO,EAAE,0BAA0B,EACpE,SAAS,CACV,CAAC;IACJ,CAAC;;AA3CH,oBA4CC;AA3CiB,mBAAc,GAAG,WAAW,CAAC","file":"expression/function/impl/TYPE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationObjectNotFoundErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ObjectAccessorValue } from \"../../../value/ObjectAccessorValue.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { FuncArgObjectAccessor } from \"../arg/FuncArgObjectAccessor.js\";\nimport { isNullish } from \"../../../IfcExpressionUtils.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class TYPE extends Func {\n static readonly KEY_OBJECT_REF = \"objectRef\";\n\n constructor() {\n super(\"TYPE\", [\n new FuncArgObjectAccessor(\n true,\n TYPE.KEY_OBJECT_REF,\n Type.IFC_ELEMENT_REF\n ),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_TYPE_OBJECT_REF;\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const objectRef = evaluatedArguments.get(TYPE.KEY_OBJECT_REF).getValue();\n const accessorFun = objectRef[\"getIfcTypeObjectAccessor\"];\n if (typeof accessorFun === \"function\") {\n const resultingObjectAccessor = accessorFun();\n if (isNullish(resultingObjectAccessor)) {\n return new ExprEvalFunctionEvaluationObjectNotFoundErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.IFC_TYPE_OBJECT_NOT_FOUND,\n `No type object found`,\n this.getName(),\n \"[Type of IFC element]\"\n );\n } else {\n return new ExprEvalSuccessObj(\n ObjectAccessorValue.of(resultingObjectAccessor)\n );\n }\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Cannot evaluate function ${this.getName()} on the specified object`,\n objectRef\n );\n }\n}\n"]}
|
|
@@ -5,6 +5,7 @@ const Expr2_js_1 = require("../Expr2.js");
|
|
|
5
5
|
const NumericValue_js_1 = require("../../value/NumericValue.js");
|
|
6
6
|
const ExprKind_js_1 = require("../ExprKind.js");
|
|
7
7
|
const ExprEvalResult_js_1 = require("../ExprEvalResult.js");
|
|
8
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
8
9
|
class DivideExpr extends Expr2_js_1.Expr2 {
|
|
9
10
|
constructor(left, right) {
|
|
10
11
|
super(ExprKind_js_1.ExprKind.NUM_DIVIDE, left, right);
|
|
@@ -15,6 +16,12 @@ class DivideExpr extends Expr2_js_1.Expr2 {
|
|
|
15
16
|
handleError(error, leftResult, rightResult) {
|
|
16
17
|
return new ExprEvalResult_js_1.ExprEvalError2Obj(error, leftResult, rightResult, ExprEvalResult_js_1.ExprEvalStatus.MATH_ERROR, error);
|
|
17
18
|
}
|
|
19
|
+
toExprString() {
|
|
20
|
+
return `${this.left.toExprString()} / ${this.right.toExprString()}`;
|
|
21
|
+
}
|
|
22
|
+
getType() {
|
|
23
|
+
return Types_js_1.Type.NUMERIC;
|
|
24
|
+
}
|
|
18
25
|
}
|
|
19
26
|
exports.DivideExpr = DivideExpr;
|
|
20
27
|
//# sourceMappingURL=DivideExpr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/numeric/DivideExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAC1C,4DAK8B;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/numeric/DivideExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAC1C,4DAK8B;AAC9B,kDAA2C;AAG3C,MAAa,UAAW,SAAQ,gBAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAAwC,EACxC,WAAyC;QAEzC,OAAO,IAAI,qCAAiB,CAC1B,KAAK,EACL,UAAU,EACV,WAAW,EACX,kCAAc,CAAC,UAAU,EACzB,KAAK,CACN,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAvCD,gCAuCC","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class DivideExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_DIVIDE, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().dividedBy(right.getValue()));\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<NumericValue>,\n rightResult: ExprEvalResult<NumericValue>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n error,\n leftResult,\n rightResult,\n ExprEvalStatus.MATH_ERROR,\n error\n );\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} / ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
|
|
@@ -4,6 +4,7 @@ exports.MinusExpr = void 0;
|
|
|
4
4
|
const Expr2_js_1 = require("../Expr2.js");
|
|
5
5
|
const NumericValue_js_1 = require("../../value/NumericValue.js");
|
|
6
6
|
const ExprKind_js_1 = require("../ExprKind.js");
|
|
7
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
7
8
|
class MinusExpr extends Expr2_js_1.Expr2 {
|
|
8
9
|
constructor(left, right) {
|
|
9
10
|
super(ExprKind_js_1.ExprKind.NUM_MINUS, left, right);
|
|
@@ -11,6 +12,12 @@ class MinusExpr extends Expr2_js_1.Expr2 {
|
|
|
11
12
|
calculateResult(ctx, localCtx, left, right) {
|
|
12
13
|
return NumericValue_js_1.NumericValue.of(left.getValue().minus(right.getValue()));
|
|
13
14
|
}
|
|
15
|
+
toExprString() {
|
|
16
|
+
return `${this.left.toExprString()} - ${this.right.toExprString()}`;
|
|
17
|
+
}
|
|
18
|
+
getType() {
|
|
19
|
+
return Types_js_1.Type.NUMERIC;
|
|
20
|
+
}
|
|
14
21
|
}
|
|
15
22
|
exports.MinusExpr = MinusExpr;
|
|
16
23
|
//# sourceMappingURL=MinusExpr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/numeric/MinusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/numeric/MinusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAE1C,kDAA2C;AAG3C,MAAa,SAAU,SAAQ,gBAA+C;IAC5E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AArBD,8BAqBC","file":"expression/numeric/MinusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class MinusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MINUS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().minus(right.getValue()));\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} - ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
|