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
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComparisonOp = void 0;
|
|
4
|
+
const Expr2_js_1 = require("../Expr2.js");
|
|
5
|
+
const BooleanValue_js_1 = require("../../value/BooleanValue.js");
|
|
6
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
7
|
+
class ComparisonOp extends Expr2_js_1.Expr2 {
|
|
8
|
+
constructor(exprKind, left, right, cmp) {
|
|
9
|
+
super(exprKind, left, right);
|
|
10
|
+
this.comparisonFunction = cmp;
|
|
11
|
+
}
|
|
12
|
+
toExprString() {
|
|
13
|
+
return `${this.left.toExprString()} > ${this.right.toExprString}`;
|
|
14
|
+
}
|
|
15
|
+
calculateResult(ctx, localCtx, leftOperand, rightOperand) {
|
|
16
|
+
return BooleanValue_js_1.BooleanValue.of(this.comparisonFunction(leftOperand.compareTo(rightOperand)));
|
|
17
|
+
}
|
|
18
|
+
getType() {
|
|
19
|
+
return Types_js_1.Type.BOOLEAN;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ComparisonOp = ComparisonOp;
|
|
23
|
+
//# sourceMappingURL=ComparisonOp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/ComparisonOp.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAMpC,iEAA2D;AAC3D,kDAA2C;AAG3C,MAAa,YAEX,SAAQ,gBAAyB;IAGjC,YACE,QAAkB,EAClB,IAAa,EACb,KAAc,EACd,GAAwB;QAExB,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACpE,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAc,EACd,YAAe;QAEf,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAjCD,oCAiCC","file":"expression/comparison/ComparisonOp.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { Comparable } from \"../../value/Comparable.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class ComparisonOp<\n T extends ExpressionValue & Comparable<T>\n> extends Expr2<T, T, BooleanValue> {\n private readonly comparisonFunction: (number) => boolean;\n\n constructor(\n exprKind: ExprKind,\n left: Expr<T>,\n right: Expr<T>,\n cmp: (number) => boolean\n ) {\n super(exprKind, left, right);\n this.comparisonFunction = cmp;\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} > ${this.right.toExprString}`;\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: T,\n rightOperand: T\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(\n this.comparisonFunction(leftOperand.compareTo(rightOperand))\n );\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EqualsExpr = void 0;
|
|
4
|
+
const Expr2_js_1 = require("../Expr2.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
const BooleanValue_js_1 = require("../../value/BooleanValue.js");
|
|
7
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
8
|
+
class EqualsExpr extends Expr2_js_1.Expr2 {
|
|
9
|
+
constructor(left, right) {
|
|
10
|
+
super(ExprKind_js_1.ExprKind.CMP_EQUALS, left, right);
|
|
11
|
+
}
|
|
12
|
+
calculateResult(ctx, localCtx, leftOperand, rightOperand) {
|
|
13
|
+
return new BooleanValue_js_1.BooleanValue(leftOperand.equals(rightOperand));
|
|
14
|
+
}
|
|
15
|
+
toExprString() {
|
|
16
|
+
return `${this.left.toExprString()} == ${this.right.toExprString()}`;
|
|
17
|
+
}
|
|
18
|
+
getType() {
|
|
19
|
+
return Types_js_1.Type.BOOLEAN;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.EqualsExpr = EqualsExpr;
|
|
23
|
+
//# sourceMappingURL=EqualsExpr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/EqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAG3C,MAAa,UAAW,SAAQ,gBAI/B;IACC,YAAY,IAA2B,EAAE,KAA4B;QACnE,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAA4B,EAC5B,YAA6B;QAE7B,OAAO,IAAI,8BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAzBD,gCAyBC","file":"expression/comparison/EqualsExpr.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class EqualsExpr extends Expr2<\n ExpressionValue,\n ExpressionValue,\n BooleanValue\n> {\n constructor(left: Expr<ExpressionValue>, right: Expr<ExpressionValue>) {\n super(ExprKind.CMP_EQUALS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: ExpressionValue,\n rightOperand: ExpressionValue\n ): ExprEvalError | BooleanValue {\n return new BooleanValue(leftOperand.equals(rightOperand));\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} == ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GreaterThan = void 0;
|
|
4
|
+
const ComparisonOp_js_1 = require("./ComparisonOp.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
class GreaterThan extends ComparisonOp_js_1.ComparisonOp {
|
|
7
|
+
constructor(left, right) {
|
|
8
|
+
super(ExprKind_js_1.ExprKind.CMP_GREATER_THAN, left, right, (num) => num > 0);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.GreaterThan = GreaterThan;
|
|
12
|
+
//# sourceMappingURL=GreaterThan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/GreaterThan.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAIjD,gDAA0C;AAE1C,MAAa,WAEX,SAAQ,8BAAe;IACvB,YAAY,IAAa,EAAE,KAAc;QACvC,KAAK,CAAC,sBAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;CACF;AAND,kCAMC","file":"expression/comparison/GreaterThan.js","sourcesContent":["import { ComparisonOp } from \"./ComparisonOp.js\";\nimport { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Comparable } from \"../../value/Comparable.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class GreaterThan<\n T extends ExpressionValue & Comparable<T>\n> extends ComparisonOp<T> {\n constructor(left: Expr<T>, right: Expr<T>) {\n super(ExprKind.CMP_GREATER_THAN, left, right, (num) => num > 0);\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GreaterThanOrEqual = void 0;
|
|
4
|
+
const ComparisonOp_js_1 = require("./ComparisonOp.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
class GreaterThanOrEqual extends ComparisonOp_js_1.ComparisonOp {
|
|
7
|
+
constructor(left, right) {
|
|
8
|
+
super(ExprKind_js_1.ExprKind.CMP_GREATER_THAN_OR_EQUAL, left, right, (num) => num >= 0);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.GreaterThanOrEqual = GreaterThanOrEqual;
|
|
12
|
+
//# sourceMappingURL=GreaterThanOrEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/GreaterThanOrEqual.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAIjD,gDAA0C;AAE1C,MAAa,kBAEX,SAAQ,8BAAe;IACvB,YAAY,IAAa,EAAE,KAAc;QACvC,KAAK,CAAC,sBAAQ,CAAC,yBAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF;AAND,gDAMC","file":"expression/comparison/GreaterThanOrEqual.js","sourcesContent":["import { ComparisonOp } from \"./ComparisonOp.js\";\nimport { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Comparable } from \"../../value/Comparable.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class GreaterThanOrEqual<\n T extends ExpressionValue & Comparable<T>\n> extends ComparisonOp<T> {\n constructor(left: Expr<T>, right: Expr<T>) {\n super(ExprKind.CMP_GREATER_THAN_OR_EQUAL, left, right, (num) => num >= 0);\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LessThan = void 0;
|
|
4
|
+
const ComparisonOp_js_1 = require("./ComparisonOp.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
class LessThan extends ComparisonOp_js_1.ComparisonOp {
|
|
7
|
+
constructor(left, right) {
|
|
8
|
+
super(ExprKind_js_1.ExprKind.CMP_LESS_THAN, left, right, (num) => num < 0);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.LessThan = LessThan;
|
|
12
|
+
//# sourceMappingURL=LessThan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/LessThan.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAIjD,gDAA0C;AAE1C,MAAa,QAEX,SAAQ,8BAAe;IACvB,YAAY,IAAa,EAAE,KAAc;QACvC,KAAK,CAAC,sBAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AAND,4BAMC","file":"expression/comparison/LessThan.js","sourcesContent":["import { ComparisonOp } from \"./ComparisonOp.js\";\nimport { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Comparable } from \"../../value/Comparable.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class LessThan<\n T extends ExpressionValue & Comparable<T>\n> extends ComparisonOp<T> {\n constructor(left: Expr<T>, right: Expr<T>) {\n super(ExprKind.CMP_LESS_THAN, left, right, (num) => num < 0);\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LessThanOrEqual = void 0;
|
|
4
|
+
const ComparisonOp_js_1 = require("./ComparisonOp.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
class LessThanOrEqual extends ComparisonOp_js_1.ComparisonOp {
|
|
7
|
+
constructor(left, right) {
|
|
8
|
+
super(ExprKind_js_1.ExprKind.CMP_LESS_THAN_OR_EQUAL, left, right, (num) => num <= 0);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.LessThanOrEqual = LessThanOrEqual;
|
|
12
|
+
//# sourceMappingURL=LessThanOrEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/LessThanOrEqual.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAIjD,gDAA0C;AAE1C,MAAa,eAEX,SAAQ,8BAAe;IACvB,YAAY,IAAa,EAAE,KAAc;QACvC,KAAK,CAAC,sBAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AAND,0CAMC","file":"expression/comparison/LessThanOrEqual.js","sourcesContent":["import { ComparisonOp } from \"./ComparisonOp.js\";\nimport { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Comparable } from \"../../value/Comparable.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class LessThanOrEqual<\n T extends ExpressionValue & Comparable<T>\n> extends ComparisonOp<T> {\n constructor(left: Expr<T>, right: Expr<T>) {\n super(ExprKind.CMP_LESS_THAN_OR_EQUAL, left, right, (num) => num <= 0);\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotEqualsExpr = void 0;
|
|
4
|
+
const Expr2_js_1 = require("../Expr2.js");
|
|
5
|
+
const ExprKind_js_1 = require("../ExprKind.js");
|
|
6
|
+
const BooleanValue_js_1 = require("../../value/BooleanValue.js");
|
|
7
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
8
|
+
class NotEqualsExpr extends Expr2_js_1.Expr2 {
|
|
9
|
+
constructor(left, right) {
|
|
10
|
+
super(ExprKind_js_1.ExprKind.CMP_NOT_EQUALS, left, right);
|
|
11
|
+
}
|
|
12
|
+
calculateResult(ctx, localCtx, leftOperand, rightOperand) {
|
|
13
|
+
return new BooleanValue_js_1.BooleanValue(!leftOperand.equals(rightOperand));
|
|
14
|
+
}
|
|
15
|
+
toExprString() {
|
|
16
|
+
return `${this.left.toExprString()} == ${this.right.toExprString()}`;
|
|
17
|
+
}
|
|
18
|
+
getType() {
|
|
19
|
+
return Types_js_1.Type.BOOLEAN;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.NotEqualsExpr = NotEqualsExpr;
|
|
23
|
+
//# sourceMappingURL=NotEqualsExpr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/comparison/NotEqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAG3C,MAAa,aAAc,SAAQ,gBAIlC;IACC,YAAY,IAA2B,EAAE,KAA4B;QACnE,KAAK,CAAC,sBAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAA4B,EAC5B,YAA6B;QAE7B,OAAO,IAAI,8BAAY,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAzBD,sCAyBC","file":"expression/comparison/NotEqualsExpr.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class NotEqualsExpr extends Expr2<\n ExpressionValue,\n ExpressionValue,\n BooleanValue\n> {\n constructor(left: Expr<ExpressionValue>, right: Expr<ExpressionValue>) {\n super(ExprKind.CMP_NOT_EQUALS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: ExpressionValue,\n rightOperand: ExpressionValue\n ): ExprEvalError | BooleanValue {\n return new BooleanValue(!leftOperand.equals(rightOperand));\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} == ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Func = void 0;
|
|
4
|
-
const IfcExpressionFunctionConfigException_js_1 = require("
|
|
4
|
+
const IfcExpressionFunctionConfigException_js_1 = require("../../error/IfcExpressionFunctionConfigException.js");
|
|
5
5
|
const IfcExpressionUtils_js_1 = require("../../IfcExpressionUtils.js");
|
|
6
6
|
const ExprEvalResult_js_1 = require("../ExprEvalResult.js");
|
|
7
7
|
const ExprKind_js_1 = require("../ExprKind.js");
|
|
8
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
9
|
+
const MissingFunctionArgumentException_js_1 = require("../../error/MissingFunctionArgumentException.js");
|
|
10
|
+
const WrongFunctionArgumentTypeException_js_1 = require("../../error/WrongFunctionArgumentTypeException.js");
|
|
8
11
|
class Func {
|
|
9
12
|
constructor(name, args) {
|
|
10
13
|
this.name = name;
|
|
@@ -14,6 +17,32 @@ class Func {
|
|
|
14
17
|
this.formalArguments = args;
|
|
15
18
|
this.checkArgs(args);
|
|
16
19
|
}
|
|
20
|
+
checkArgumentsAndGetReturnType(argumentTypes, ctx) {
|
|
21
|
+
this.checkArgumentTypes(argumentTypes, ctx);
|
|
22
|
+
return this.getReturnType(argumentTypes);
|
|
23
|
+
}
|
|
24
|
+
checkArgumentTypes(providedArgumentTypes, ctx) {
|
|
25
|
+
const numProvided = providedArgumentTypes.length;
|
|
26
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(this.formalArguments)) {
|
|
27
|
+
for (let i = 0; i < this.formalArguments.length; i++) {
|
|
28
|
+
const currentArg = this.formalArguments[i];
|
|
29
|
+
if (numProvided > i) {
|
|
30
|
+
Types_js_1.Types.requireWeakIsAssignableFrom(this.formalArguments[i].getType(), providedArgumentTypes[i], () => new WrongFunctionArgumentTypeException_js_1.WrongFunctionArgumentTypeException(this.name, this.formalArguments[i].name, this.formalArguments[i].getType(), providedArgumentTypes[i], i, ctx));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (currentArg.hasDefaultValue()) {
|
|
34
|
+
//should be fine.
|
|
35
|
+
}
|
|
36
|
+
if (currentArg.required) {
|
|
37
|
+
throw new MissingFunctionArgumentException_js_1.MissingFunctionArgumentException(this.name, currentArg.name, i, ctx);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getName() {
|
|
44
|
+
return this.name;
|
|
45
|
+
}
|
|
17
46
|
evaluate(funcArgs) {
|
|
18
47
|
const evaluatedArguments = this.getArgumentValues(funcArgs);
|
|
19
48
|
if ((0, ExprEvalResult_js_1.isExprEvalError)(evaluatedArguments)) {
|
|
@@ -47,7 +76,6 @@ class Func {
|
|
|
47
76
|
const result = new Map();
|
|
48
77
|
const numProvided = provided.length;
|
|
49
78
|
if (!(0, IfcExpressionUtils_js_1.isNullish)(this.formalArguments)) {
|
|
50
|
-
let j = 0;
|
|
51
79
|
for (let i = 0; i < this.formalArguments.length; i++) {
|
|
52
80
|
const currentArg = this.formalArguments[i];
|
|
53
81
|
if (numProvided > i) {
|
|
@@ -64,7 +92,7 @@ class Func {
|
|
|
64
92
|
}
|
|
65
93
|
}
|
|
66
94
|
const transformedArguments = this.transformArguments(result);
|
|
67
|
-
return
|
|
95
|
+
return transformedArguments;
|
|
68
96
|
}
|
|
69
97
|
checkArgs(args) {
|
|
70
98
|
if (!Array.isArray(this.formalArguments)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/Func.ts"],"names":[],"mappings":"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","file":"expression/function/Func.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { IfcExpressionFunctionConfigException } from \"./IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../IfcExpressionUtils.js\";\nimport { FuncArg } from \"./FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalFunctionEvaluationConsequentialErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public evaluate(\n funcArgs: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const evaluatedArguments = this.getArgumentValues(funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, LiteralValueAnyArity>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return new ExprEvalFunctionEvaluationConsequentialErrorObj(\n ExprKind.FUNCTION,\n this.name,\n argValue\n );\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n evaluatedArguments: Map<string, ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> {\n return evaluatedArguments;\n }\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n provided: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<LiteralValueAnyArity>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n let j = 0;\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(currentArg.name, currentArg.transformValue(provided[i]));\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(\n currentArg.defaultValue as LiteralValueAnyArity\n )\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i\n );\n }\n }\n }\n }\n const transformedArguments = this.transformArguments(result);\n return result;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/Func.ts"],"names":[],"mappings":";;;AACA,iHAA2G;AAC3G,uEAAwD;AAExD,4DAO8B;AAC9B,gDAA0C;AAC1C,kDAA4C;AAC5C,yGAAmG;AACnG,6GAAuG;AAIvG,MAAsB,IAAI;IAIxB,YAAsB,IAAY,EAAE,IAA6B;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,IAAI,8EAAoC,CAC5C,2BAA2B,CAC5B,CAAC;SACH;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAIM,8BAA8B,CACnC,aAA8B,EAC9B,GAAsB;QAEtB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAES,kBAAkB,CAC1B,qBAAsC,EACtC,GAAsB;QAEtB,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,IAAA,iCAAS,EAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,UAAU,GAAqB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,gBAAK,CAAC,2BAA2B,CAC/B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EACjC,qBAAqB,CAAC,CAAC,CAAC,EACxB,GAAG,EAAE,CACH,IAAI,0EAAkC,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EACjC,qBAAqB,CAAC,CAAC,CAAC,EACxB,CAAC,EACD,GAAG,CACJ,CACJ,CAAC;iBACH;qBAAM;oBACL,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE;wBAChC,iBAAiB;qBAClB;oBACD,IAAI,UAAU,CAAC,QAAQ,EAAE;wBACvB,MAAM,IAAI,sEAAgC,CACxC,IAAI,CAAC,IAAI,EACT,UAAU,CAAC,IAAI,EACf,CAAC,EACD,GAAG,CACJ,CAAC;qBACH;iBACF;aACF;SACF;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,QAAQ,CACb,QAAgD;QAEhD,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAA,mCAAe,EAAC,kBAAkB,CAAC,EAAE;YACvC,OAAO,kBAAkB,CAAC;SAC3B;QACD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA2B,CAAC;QAChE,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;YAC9D,IAAI,IAAA,mCAAe,EAAC,QAAQ,CAAC,EAAE;gBAC7B,OAAO,IAAI,mEAA+C,CACxD,sBAAQ,CAAC,QAAQ,EACjB,IAAI,CAAC,IAAI,EACT,QAAQ,CACT,CAAC;aACH;YACD,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC;IAWD;;;;;OAKG;IACO,kBAAkB,CAC1B,kBAAgE;QAEhE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACO,iBAAiB,CACzB,QAAgD;QAEhD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;QAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,IAAA,iCAAS,EAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,UAAU,GAAqB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrE;qBAAM;oBACL,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE;wBAChC,MAAM,CAAC,GAAG,CACR,UAAU,CAAC,IAAI,EACf,IAAI,sCAAkB,CAAC,UAAU,CAAC,YAA+B,CAAC,CACnE,CAAC;qBACH;oBACD,IAAI,UAAU,CAAC,QAAQ,EAAE;wBACvB,OAAO,IAAI,mEAA+C,CACxD,sBAAQ,CAAC,kBAAkB,EAC3B,qBAAqB,UAAU,CAAC,IAAI,0BAA0B,CAAC,8BAA8B,EAC7F,IAAI,CAAC,IAAI,EACT,UAAU,CAAC,IAAI,EACf,CAAC,CACF,CAAC;qBACH;iBACF;aACF;SACF;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEO,SAAS,CAAC,IAA6B;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACxC,MAAM,IAAI,8EAAoC,CAC5C,2CAA2C,CAC5C,CAAC;SACH;QACD,IAAI,mBAAmB,GAAY,KAAK,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC3C,MAAM,IAAI,8EAAoC,CAC5C,4BAA4B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAC7D,CAAC;aACH;YACD,IAAI,mBAAmB,EAAE;gBACvB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACpC,MAAM,IAAI,8EAAoC,CAC5C,2DAA2D,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,2CAA2C,CACnI,CAAC;iBACH;aACF;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACrC,mBAAmB,GAAG,IAAI,CAAC;iBAC5B;aACF;SACF;IACH,CAAC;CACF;AAhLD,oBAgLC","file":"expression/function/Func.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../IfcExpressionUtils.js\";\nimport { FuncArg } from \"./FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalFunctionEvaluationConsequentialErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Types } from \"../../type/Types.js\";\nimport { MissingFunctionArgumentException } from \"../../error/MissingFunctionArgumentException.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../error/WrongFunctionArgumentTypeException.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ParserRuleContext } from \"antlr4\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n protected constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public abstract getReturnType(argumentTypes: Array<ExprType>): ExprType;\n\n public checkArgumentsAndGetReturnType(\n argumentTypes: Array<ExprType>,\n ctx: ParserRuleContext\n ): ExprType {\n this.checkArgumentTypes(argumentTypes, ctx);\n return this.getReturnType(argumentTypes);\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<ExprType>,\n ctx: ParserRuleContext\n ): void {\n const numProvided = providedArgumentTypes.length;\n if (!isNullish(this.formalArguments)) {\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n Types.requireWeakIsAssignableFrom(\n this.formalArguments[i].getType(),\n providedArgumentTypes[i],\n () =>\n new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[i].name,\n this.formalArguments[i].getType(),\n providedArgumentTypes[i],\n i,\n ctx\n )\n );\n } else {\n if (currentArg.hasDefaultValue()) {\n //should be fine.\n }\n if (currentArg.required) {\n throw new MissingFunctionArgumentException(\n this.name,\n currentArg.name,\n i,\n ctx\n );\n }\n }\n }\n }\n }\n\n public getName(): string {\n return this.name;\n }\n\n public evaluate(\n funcArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const evaluatedArguments = this.getArgumentValues(funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, ExpressionValue>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return new ExprEvalFunctionEvaluationConsequentialErrorObj(\n ExprKind.FUNCTION,\n this.name,\n argValue\n );\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ): Map<string, ExprEvalResult<ExpressionValue>> {\n return evaluatedArguments;\n }\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n provided: Array<ExprEvalResult<ExpressionValue>>\n ): Map<string, ExprEvalResult<ExpressionValue>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<ExpressionValue>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(currentArg.name, currentArg.transformValue(provided[i]));\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(currentArg.defaultValue as ExpressionValue)\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i\n );\n }\n }\n }\n }\n const transformedArguments = this.transformArguments(result);\n return transformedArguments;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FuncArg = void 0;
|
|
4
4
|
const IfcExpressionUtils_js_1 = require("../../IfcExpressionUtils.js");
|
|
5
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
5
6
|
class FuncArg {
|
|
6
7
|
constructor(required, name, defaultValue) {
|
|
7
8
|
this._required = required;
|
|
8
9
|
this._name = name;
|
|
9
10
|
this._defaultValue = defaultValue;
|
|
10
11
|
}
|
|
12
|
+
getType() {
|
|
13
|
+
return Types_js_1.Type.ANY;
|
|
14
|
+
}
|
|
11
15
|
/**
|
|
12
16
|
* For the value provided for a specific invocation of the function, return an appropriate result (maybe some kind of type conversion or type check might happen here)
|
|
13
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/FuncArg.ts"],"names":[],"mappings":";;;AAEA,uEAAwD;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/FuncArg.ts"],"names":[],"mappings":";;;AAEA,uEAAwD;AACxD,kDAA2C;AAG3C,MAAa,OAAO;IAKlB,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAgB;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAEM,OAAO;QACZ,OAAO,eAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,cAAc,CACnB,eAAgD;QAEhD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,OAAO,CAAC,IAAA,iCAAS,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACF;AAzCD,0BAyCC","file":"expression/function/FuncArg.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { ExprEvalResult } from \"../ExprEvalResult.js\";\nimport { isNullish } from \"../../IfcExpressionUtils.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class FuncArg<T> {\n protected _required: boolean;\n protected _name: string;\n protected _defaultValue?: T;\n\n constructor(required: boolean, name: string, defaultValue?: T) {\n this._required = required;\n this._name = name;\n this._defaultValue = defaultValue;\n }\n\n public getType(): ExprType {\n return Type.ANY;\n }\n\n /**\n * For the value provided for a specific invocation of the function, return an appropriate result (maybe some kind of type conversion or type check might happen here)\n *\n * @param invocationValue\n */\n public transformValue(\n invocationValue: ExprEvalResult<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n\n get required(): boolean {\n return this._required;\n }\n\n get name(): string {\n return this._name;\n }\n\n get defaultValue(): T | undefined {\n return this._defaultValue;\n }\n\n hasDefaultValue(): boolean {\n return !isNullish(this._defaultValue);\n }\n}\n"]}
|
|
@@ -7,10 +7,10 @@ const Expr0_js_1 = require("../Expr0.js");
|
|
|
7
7
|
const IfcExpressionFunctions_js_1 = require("./IfcExpressionFunctions.js");
|
|
8
8
|
const IfcExpressionUtils_js_1 = require("../../IfcExpressionUtils.js");
|
|
9
9
|
class FunctionExpr extends Expr0_js_1.Expr0 {
|
|
10
|
-
constructor(name,
|
|
11
|
-
super(ExprKind_js_1.ExprKind.
|
|
10
|
+
constructor(name, functionArguments) {
|
|
11
|
+
super(ExprKind_js_1.ExprKind.FUNCTION);
|
|
12
12
|
this.name = name;
|
|
13
|
-
this.
|
|
13
|
+
this.arguments = functionArguments;
|
|
14
14
|
this.functionImplementation = IfcExpressionFunctions_js_1.IfcExpressionFunctions.getFunction(this.name);
|
|
15
15
|
if ((0, IfcExpressionUtils_js_1.isNullish)(this.functionImplementation)) {
|
|
16
16
|
throw new Error(`No such function: ${this.name}`);
|
|
@@ -18,8 +18,8 @@ class FunctionExpr extends Expr0_js_1.Expr0 {
|
|
|
18
18
|
}
|
|
19
19
|
doEvaluate(ctx, localCtx) {
|
|
20
20
|
const functionArguments = [];
|
|
21
|
-
for (let i = 0; i < this.
|
|
22
|
-
const evalResult = this.
|
|
21
|
+
for (let i = 0; i < this.arguments.length; i++) {
|
|
22
|
+
const evalResult = this.arguments[i].evaluate(ctx, localCtx);
|
|
23
23
|
functionArguments.push(evalResult);
|
|
24
24
|
}
|
|
25
25
|
const evaluationResult = IfcExpressionFunctions_js_1.IfcExpressionFunctions.applyFunction(this.name, functionArguments);
|
|
@@ -28,6 +28,14 @@ class FunctionExpr extends Expr0_js_1.Expr0 {
|
|
|
28
28
|
}
|
|
29
29
|
return evaluationResult;
|
|
30
30
|
}
|
|
31
|
+
toExprString() {
|
|
32
|
+
return `${this.functionImplementation.getName()}(${this.arguments
|
|
33
|
+
.map((arg) => arg.toExprString())
|
|
34
|
+
.join(",")})`;
|
|
35
|
+
}
|
|
36
|
+
getType() {
|
|
37
|
+
return this.functionImplementation.getReturnType(this.arguments.map((f) => f.getType()));
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
40
|
exports.FunctionExpr = FunctionExpr;
|
|
33
41
|
//# sourceMappingURL=FunctionExpr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/FunctionExpr.ts"],"names":[],"mappings":";;;AAEA,4DAAwE;AAExE,gDAA0C;AAC1C,0CAAoC;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/FunctionExpr.ts"],"names":[],"mappings":";;;AAEA,4DAAwE;AAExE,gDAA0C;AAC1C,0CAAoC;AAEpC,2EAAqE;AACrE,uEAAwD;AAGxD,MAAa,YAAa,SAAQ,gBAAsB;IAKtD,YAAY,IAAY,EAAE,iBAA+C;QACvE,KAAK,CAAC,sBAAQ,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACnC,IAAI,CAAC,sBAAsB,GAAG,kDAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACnD;IACH,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7D,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,kDAAsB,CAAC,aAAa,CAC3D,IAAI,CAAC,IAAI,EACT,iBAAiB,CAClB,CAAC;QACF,IAAI,IAAA,qCAAiB,EAAC,gBAAgB,CAAC,EAAE;YACvC,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAChC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS;aAC9D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;aAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CACvC,CAAC;IACJ,CAAC;CACF;AA7CD,oCA6CC","file":"expression/function/FunctionExpr.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError, isExprEvalSuccess } from \"../ExprEvalResult.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { Func } from \"./Func.js\";\nimport { IfcExpressionFunctions } from \"./IfcExpressionFunctions.js\";\nimport { isNullish } from \"../../IfcExpressionUtils.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class FunctionExpr extends Expr0<ExpressionValue> {\n private readonly name: string;\n private arguments: Array<Expr<ExpressionValue>>;\n private readonly functionImplementation: Func;\n\n constructor(name: string, functionArguments: Array<Expr<ExpressionValue>>) {\n super(ExprKind.FUNCTION);\n this.name = name;\n this.arguments = functionArguments;\n this.functionImplementation = IfcExpressionFunctions.getFunction(this.name);\n if (isNullish(this.functionImplementation)) {\n throw new Error(`No such function: ${this.name}`);\n }\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | ExpressionValue {\n const functionArguments = [];\n for (let i = 0; i < this.arguments.length; i++) {\n const evalResult = this.arguments[i].evaluate(ctx, localCtx);\n functionArguments.push(evalResult);\n }\n const evaluationResult = IfcExpressionFunctions.applyFunction(\n this.name,\n functionArguments\n );\n if (isExprEvalSuccess(evaluationResult)) {\n return evaluationResult.result;\n }\n return evaluationResult;\n }\n\n toExprString(): string {\n return `${this.functionImplementation.getName()}(${this.arguments\n .map((arg) => arg.toExprString())\n .join(\",\")})`;\n }\n\n getType(): ExprType {\n return this.functionImplementation.getReturnType(\n this.arguments.map((f) => f.getType())\n );\n }\n}\n"]}
|
|
@@ -6,18 +6,76 @@ const IfcExpressionUtils_js_1 = require("../../IfcExpressionUtils.js");
|
|
|
6
6
|
const ExprKind_js_1 = require("../ExprKind.js");
|
|
7
7
|
const MAP_js_1 = require("./impl/MAP.js");
|
|
8
8
|
const ROUND_js_1 = require("./impl/ROUND.js");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const AttributeAccessorFunction_js_1 = require("./impl/AttributeAccessorFunction.js");
|
|
10
|
+
const PROPERTYSET_js_1 = require("./impl/PROPERTYSET.js");
|
|
11
|
+
const PROPERTY_js_1 = require("./impl/PROPERTY.js");
|
|
12
|
+
const TYPE_js_1 = require("./impl/TYPE.js");
|
|
13
|
+
const FuncBooleanBinary_js_1 = require("./impl/FuncBooleanBinary.js");
|
|
14
|
+
const NOT_js_1 = require("./impl/NOT.js");
|
|
15
|
+
const SWITCH_js_1 = require("./impl/SWITCH.js");
|
|
16
|
+
const MatchesPattern_js_1 = require("./impl/MatchesPattern.js");
|
|
17
|
+
const Types_js_1 = require("../../type/Types.js");
|
|
18
|
+
const TOSTRING_js_1 = require("./impl/TOSTRING.js");
|
|
19
|
+
const EXISTS_js_1 = require("./impl/EXISTS.js");
|
|
20
|
+
const EQUALS_js_1 = require("./impl/EQUALS.js");
|
|
21
|
+
const CompareMagnitudes_js_1 = require("./impl/CompareMagnitudes.js");
|
|
22
|
+
const ReplacePattern_js_1 = require("./impl/ReplacePattern.js");
|
|
23
|
+
const builtinFunctions = new Map();
|
|
24
|
+
function registerFunc(func) {
|
|
25
|
+
builtinFunctions.set(normalizeName(func.getName()), func);
|
|
26
|
+
}
|
|
27
|
+
function normalizeName(name) {
|
|
28
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(name)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return name.toUpperCase();
|
|
32
|
+
}
|
|
33
|
+
registerFunc(new MAP_js_1.MAP());
|
|
34
|
+
registerFunc(new SWITCH_js_1.SWITCH());
|
|
35
|
+
registerFunc(new ROUND_js_1.ROUND());
|
|
36
|
+
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("name", Types_js_1.Type.STRING));
|
|
37
|
+
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("guid", Types_js_1.Type.STRING));
|
|
38
|
+
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("ifcClass", Types_js_1.Type.STRING));
|
|
39
|
+
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("description", Types_js_1.Type.STRING));
|
|
40
|
+
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("value", Types_js_1.Types.or(Types_js_1.Type.STRING, Types_js_1.Type.NUMERIC, Types_js_1.Type.BOOLEAN, Types_js_1.Type.ARRAY)));
|
|
41
|
+
registerFunc(new PROPERTYSET_js_1.PROPERTYSET());
|
|
42
|
+
registerFunc(new PROPERTY_js_1.PROPERTY());
|
|
43
|
+
registerFunc(new TYPE_js_1.TYPE());
|
|
44
|
+
registerFunc(new NOT_js_1.NOT());
|
|
45
|
+
registerFunc(new TOSTRING_js_1.TOSTRING());
|
|
46
|
+
registerFunc(new EXISTS_js_1.EXISTS());
|
|
47
|
+
registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("AND", (left, right) => left && right));
|
|
48
|
+
registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("OR", (left, right) => left || right));
|
|
49
|
+
registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("XOR", (left, right) => (left ? !right : right)));
|
|
50
|
+
registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("IMPLIES", (left, right) => !left || right));
|
|
51
|
+
registerFunc(new EQUALS_js_1.EQUALS());
|
|
52
|
+
registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("GREATERTHAN", (cmp) => cmp > 0));
|
|
53
|
+
registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("GREATERTHANOREQUAL", (cmp) => cmp >= 0));
|
|
54
|
+
registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("LESSTHAN", (cmp) => cmp < 0));
|
|
55
|
+
registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("LESSTHANOREQUAL", (cmp) => cmp <= 0));
|
|
56
|
+
registerFunc(new MatchesPattern_js_1.MatchesPattern("CONTAINS", true, false));
|
|
57
|
+
registerFunc(new MatchesPattern_js_1.MatchesPattern("MATCHES", true, true));
|
|
58
|
+
registerFunc(new MatchesPattern_js_1.MatchesPattern("REGEXCONTAINS", false, false));
|
|
59
|
+
registerFunc(new MatchesPattern_js_1.MatchesPattern("REGEXMATCHES", false, true));
|
|
60
|
+
registerFunc(new ReplacePattern_js_1.ReplacePattern("REPLACE", true));
|
|
61
|
+
registerFunc(new ReplacePattern_js_1.ReplacePattern("REGEXREPLACE", false));
|
|
13
62
|
class IfcExpressionFunctions {
|
|
63
|
+
static isBuiltinFunction(name) {
|
|
64
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(name)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return builtinFunctions.has(normalizeName(name));
|
|
68
|
+
}
|
|
14
69
|
static getFunction(name) {
|
|
15
|
-
|
|
70
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(name)) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
return builtinFunctions.get(normalizeName(name));
|
|
16
74
|
}
|
|
17
75
|
static applyFunction(name, functionArgs) {
|
|
18
76
|
const func = IfcExpressionFunctions.getFunction(name);
|
|
19
77
|
if ((0, IfcExpressionUtils_js_1.isNullish)(func)) {
|
|
20
|
-
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.UNKNOWN_FUNCTION, `No such function ${name}`, name);
|
|
78
|
+
return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.UNKNOWN_FUNCTION, `No such function ${normalizeName(name)}`, name);
|
|
21
79
|
}
|
|
22
80
|
return func.evaluate(functionArgs);
|
|
23
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":";;;AAAA,4DAI8B;AAG9B,uEAAwD;AACxD,gDAA0C;AAC1C,0CAAoC;AACpC,8CAAwC;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"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","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult.js\";\nimport { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { Func } from \"./Func.js\";\nimport { isNullish } from \"../../IfcExpressionUtils.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { MAP } from \"./impl/MAP.js\";\nimport { ROUND } from \"./impl/ROUND.js\";\nimport { AttributeAccessorFunction } from \"./impl/AttributeAccessorFunction.js\";\nimport { PROPERTYSET } from \"./impl/PROPERTYSET.js\";\nimport { PROPERTY } from \"./impl/PROPERTY.js\";\nimport { TYPE } from \"./impl/TYPE.js\";\nimport { FuncBooleanBinary } from \"./impl/FuncBooleanBinary.js\";\nimport { NOT } from \"./impl/NOT.js\";\nimport { SWITCH } from \"./impl/SWITCH.js\";\nimport { MatchesPattern } from \"./impl/MatchesPattern.js\";\nimport { Type, Types } from \"../../type/Types.js\";\nimport { TOSTRING } from \"./impl/TOSTRING.js\";\nimport { EXISTS } from \"./impl/EXISTS.js\";\nimport { EQUALS } from \"./impl/EQUALS.js\";\nimport { CompareMagnitudes } from \"./impl/CompareMagnitudes.js\";\nimport { ReplacePattern } from \"./impl/ReplacePattern.js\";\n\nconst builtinFunctions = new Map<string, Func>();\nfunction registerFunc(func: Func) {\n builtinFunctions.set(normalizeName(func.getName()), func);\n}\n\nfunction normalizeName(name: string): string {\n if (isNullish(name)) {\n return undefined;\n }\n return name.toUpperCase();\n}\n\nregisterFunc(new MAP());\nregisterFunc(new SWITCH());\nregisterFunc(new ROUND());\nregisterFunc(new AttributeAccessorFunction(\"name\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"guid\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"ifcClass\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"description\", Type.STRING));\nregisterFunc(\n new AttributeAccessorFunction(\n \"value\",\n Types.or(Type.STRING, Type.NUMERIC, Type.BOOLEAN, Type.ARRAY)\n )\n);\nregisterFunc(new PROPERTYSET());\nregisterFunc(new PROPERTY());\nregisterFunc(new TYPE());\nregisterFunc(new NOT());\nregisterFunc(new TOSTRING());\nregisterFunc(new EXISTS());\nregisterFunc(new FuncBooleanBinary(\"AND\", (left, right) => left && right));\nregisterFunc(new FuncBooleanBinary(\"OR\", (left, right) => left || right));\nregisterFunc(\n new FuncBooleanBinary(\"XOR\", (left, right) => (left ? !right : right))\n);\nregisterFunc(new FuncBooleanBinary(\"IMPLIES\", (left, right) => !left || right));\nregisterFunc(new EQUALS());\nregisterFunc(new CompareMagnitudes(\"GREATERTHAN\", (cmp) => cmp > 0));\nregisterFunc(new CompareMagnitudes(\"GREATERTHANOREQUAL\", (cmp) => cmp >= 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHAN\", (cmp) => cmp < 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHANOREQUAL\", (cmp) => cmp <= 0));\nregisterFunc(new MatchesPattern(\"CONTAINS\", true, false));\nregisterFunc(new MatchesPattern(\"MATCHES\", true, true));\nregisterFunc(new MatchesPattern(\"REGEXCONTAINS\", false, false));\nregisterFunc(new MatchesPattern(\"REGEXMATCHES\", false, true));\nregisterFunc(new ReplacePattern(\"REPLACE\", true));\nregisterFunc(new ReplacePattern(\"REGEXREPLACE\", false));\nexport class IfcExpressionFunctions {\n public static isBuiltinFunction(name: string) {\n if (isNullish(name)) {\n return false;\n }\n return builtinFunctions.has(normalizeName(name));\n }\n\n public static getFunction(name: string) {\n if (isNullish(name)) {\n return undefined;\n }\n return builtinFunctions.get(normalizeName(name));\n }\n\n public static applyFunction(\n name: string,\n functionArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const func = IfcExpressionFunctions.getFunction(name);\n if (isNullish(func)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNKNOWN_FUNCTION,\n `No such function ${normalizeName(name)}`,\n name\n );\n }\n return func.evaluate(functionArgs);\n }\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FuncArgAny = void 0;
|
|
4
|
+
const FuncArgBase_js_1 = require("./FuncArgBase.js");
|
|
5
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
6
|
+
class FuncArgAny extends FuncArgBase_js_1.FuncArgBase {
|
|
7
|
+
constructor(required, name, defaultValue) {
|
|
8
|
+
super(required, name, defaultValue);
|
|
9
|
+
}
|
|
10
|
+
getType() {
|
|
11
|
+
return Types_js_1.Type.ANY;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.FuncArgAny = FuncArgAny;
|
|
15
|
+
//# sourceMappingURL=FuncArgAny.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/arg/FuncArgAny.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAE/C,qDAA8C;AAG9C,MAAa,UAAW,SAAQ,4BAA4B;IAC1D,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA8B;QACzE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AARD,gCAQC","file":"expression/function/arg/FuncArgAny.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class FuncArgAny extends FuncArgBase<ExpressionValue> {\n constructor(required: boolean, name: string, defaultValue?: ExpressionValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Type.ANY;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":";;;AAAA,8CAAwC;AACxC,+DAKiC;AAGjC,MAAsB,WAAe,SAAQ,oBAAU;IACrD,
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":";;;AAAA,8CAAwC;AACxC,+DAKiC;AAGjC,MAAsB,WAAe,SAAQ,oBAAU;IACrD,YAAsB,QAAiB,EAAE,IAAY,EAAE,YAAgB;QACrE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CACZ,eAAgD;QAEhD,IAAI,IAAA,qCAAiB,EAAC,eAAe,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAC7B,eAAiD;QAEjD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CACzB,eAA8B;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAnCD,kCAmCC","file":"expression/function/arg/FuncArgBase.js","sourcesContent":["import { FuncArg } from \"../FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccess,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\n\nexport abstract class FuncArgBase<T> extends FuncArg<T> {\n protected constructor(required: boolean, name: string, defaultValue?: T) {\n super(required, name, defaultValue);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n if (isExprEvalSuccess(invocationValue)) {\n return this.transformForTypeCheck(invocationValue);\n }\n return this.transformForError(invocationValue);\n }\n\n /**\n * Override to type-check the successfully evaluated invocationValue.\n * @param result\n * @protected\n */\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n\n /**\n * Override to transform the error result obtained from evaluating the invocation value.\n * @param invocationValue\n * @protected\n */\n protected transformForError(\n invocationValue: ExprEvalError\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FuncArgBoolean = void 0;
|
|
4
|
+
const FuncArgBase_js_1 = require("./FuncArgBase.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
|
+
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
7
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
8
|
+
class FuncArgBoolean extends FuncArgBase_js_1.FuncArgBase {
|
|
9
|
+
constructor(required, name, defaultValue) {
|
|
10
|
+
super(required, name, defaultValue);
|
|
11
|
+
}
|
|
12
|
+
getType() {
|
|
13
|
+
return Types_js_1.Type.BOOLEAN;
|
|
14
|
+
}
|
|
15
|
+
transformForTypeCheck(invocationValue) {
|
|
16
|
+
const result = invocationValue.result;
|
|
17
|
+
const value = result.getValue();
|
|
18
|
+
if (typeof value === "boolean") {
|
|
19
|
+
return invocationValue;
|
|
20
|
+
}
|
|
21
|
+
return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Argument ${this.name} must be a boolean, but was ${JSON.stringify(value)}`, value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.FuncArgBoolean = FuncArgBoolean;
|
|
25
|
+
//# sourceMappingURL=FuncArgBoolean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/arg/FuncArgBoolean.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAE/C,+DAIiC;AACjC,mDAA6C;AAE7C,qDAA8C;AAG9C,MAAa,cAAe,SAAQ,4BAAyB;IAC3D,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,qBAAqB,CAC7B,eAAiD;QAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC9B,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,+BAA+B,IAAI,CAAC,SAAS,CAChE,KAAK,CACN,EAAE,EACH,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AAzBD,wCAyBC","file":"expression/function/arg/FuncArgBoolean.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class FuncArgBoolean extends FuncArgBase<BooleanValue> {\n constructor(required: boolean, name: string, defaultValue?: BooleanValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (typeof value === \"boolean\") {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a boolean, but was ${JSON.stringify(\n value\n )}`,\n value\n );\n }\n}\n"]}
|
|
@@ -5,10 +5,14 @@ const FuncArgBase_js_1 = require("./FuncArgBase.js");
|
|
|
5
5
|
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
|
|
6
6
|
const ExprKind_js_1 = require("../../ExprKind.js");
|
|
7
7
|
const NumericValue_js_1 = require("../../../value/NumericValue.js");
|
|
8
|
+
const Types_js_1 = require("../../../type/Types.js");
|
|
8
9
|
class FuncArgInt extends FuncArgBase_js_1.FuncArgBase {
|
|
9
10
|
constructor(required, name, defaultValue) {
|
|
10
11
|
super(required, name, defaultValue);
|
|
11
12
|
}
|
|
13
|
+
getType() {
|
|
14
|
+
return Types_js_1.Type.NUMERIC;
|
|
15
|
+
}
|
|
12
16
|
transformForTypeCheck(invocationValue) {
|
|
13
17
|
const result = invocationValue.result;
|
|
14
18
|
if (!NumericValue_js_1.NumericValue.isNumericValueType(result)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/function/arg/FuncArgInt.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAE/C,+DAIiC;AACjC,mDAA6C;AAC7C,oEAA8D;
|
|
1
|
+
{"version":3,"sources":["../../src/expression/function/arg/FuncArgInt.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAE/C,+DAIiC;AACjC,mDAA6C;AAC7C,oEAA8D;AAC9D,qDAA8C;AAG9C,MAAa,UAAW,SAAQ,4BAAyB;IACvD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,qBAAqB,CAC7B,eAAiD;QAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,8BAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,oCAAoC,MAAM,EAAE,EACjE,MAAM,CACP,CAAC;SACH;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,qBAAqB,IAAI,CAAC,IAAI,gCAAgC,KAAK,EAAE,EACrE,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA9BD,gCA8BC","file":"expression/function/arg/FuncArgInt.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\n\nexport class FuncArgInt extends FuncArgBase<NumericValue> {\n constructor(required: boolean, name: string, defaultValue?: NumericValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Type.NUMERIC;\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const result = invocationValue.result;\n if (!NumericValue.isNumericValueType(result)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a NumericValue, but was ${result}`,\n result\n );\n }\n const value = result.numericValue;\n if (value.isInteger()) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Value of argument ${this.name} must be an integer, but was ${value}`,\n value\n );\n }\n}\n"]}
|