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
package/README.md
CHANGED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# IFC Expressions
|
|
2
|
+
|
|
3
|
+
This project defines an expression language for IFC models. An expression is evaluated in the context of an element of the IFC model and a specific property of that element.
|
|
4
|
+
|
|
5
|
+
## Interface
|
|
6
|
+
|
|
7
|
+
Two ways to interact with 'ifc-expression':
|
|
8
|
+
|
|
9
|
+
- evaluate an expression string directly - receive `ExprEvalSuccessResult | ExprEvalError`
|
|
10
|
+
|
|
11
|
+
or
|
|
12
|
+
|
|
13
|
+
- parse an expression - receive a `IfcExpressionParseResult`
|
|
14
|
+
- evaluate a `IfcExpressionParseResult` - receive `ExprEvalSuccessResult | ExprEvalError`
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
To connect `ifc-expressions` with your IFC model, you have to provide an
|
|
19
|
+
implementation of `src/context/IfcExpressionContext`. Without such a context, the expressions that
|
|
20
|
+
contain references to the model cannot be evaluated.
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import {IfcExpression} from "ifc-expression";
|
|
24
|
+
import {IfcExpressionContext} from "./IfcExpressionContext";
|
|
25
|
+
|
|
26
|
+
const result = IfcExpression.evaluate("1 + 1"); // evaluation without context
|
|
27
|
+
console.log(JSON.stringify(result));
|
|
28
|
+
// ExprEvalSuccessObj {
|
|
29
|
+
// status: 1000,
|
|
30
|
+
// result: NumericValue {
|
|
31
|
+
// value: 2
|
|
32
|
+
// }
|
|
33
|
+
//}
|
|
34
|
+
const ctx: IfcExpressionContext = ... ; // set to your context here
|
|
35
|
+
const result2 = IfcExpression.evaluate("$element.property('width').value() * 2 ", ctx);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Quick Reference
|
|
39
|
+
|
|
40
|
+
Get the current property value:
|
|
41
|
+
|
|
42
|
+
`$property.value()`
|
|
43
|
+
|
|
44
|
+
Get the name of the property set the property is in:
|
|
45
|
+
|
|
46
|
+
`$property.propertySet.name()`
|
|
47
|
+
|
|
48
|
+
Get the name of the current element:
|
|
49
|
+
|
|
50
|
+
`$element.name()`
|
|
51
|
+
|
|
52
|
+
Get the name of the type of the current element:
|
|
53
|
+
|
|
54
|
+
`$element.type().name()`
|
|
55
|
+
|
|
56
|
+
Get value of property `myProp` from property set `myPset` in the current element:
|
|
57
|
+
|
|
58
|
+
`$element.propertySet('myPset').property('myProp').value()`
|
|
59
|
+
|
|
60
|
+
The last expression can also be written as
|
|
61
|
+
|
|
62
|
+
`VALUE(PROPERTY(PROPERTY_SET($element, 'myPset'),'myProp'))`
|
|
63
|
+
|
|
64
|
+
Check if property `myProp` exists in property set `myPset` in the current element:
|
|
65
|
+
|
|
66
|
+
`$element.propertySet('myPset').property('myProp').exists()`
|
|
67
|
+
|
|
68
|
+
Hints:
|
|
69
|
+
|
|
70
|
+
- Function/Method names are case-insensitive
|
|
71
|
+
- you have `+ - * / ^` for numerics
|
|
72
|
+
- you have `&& || >< !` for booleans (`><`is xor)
|
|
73
|
+
- you have `== != >= <= > <` for strings, booleans and numerics
|
|
74
|
+
- you have a `.toString()` method on anything (or, equivalently, a function `toString(x)` for any `x` ).
|
|
75
|
+
- you have `REPLACE`, which only knows the wildcard character `*`. (same for `MATCHES, CONTAINS`)
|
|
76
|
+
- you have `REGEXREPLACE` with full js Regular Expressions (same for `REGEXMATCHES, REGEXCONTAINS`)
|
|
77
|
+
|
|
78
|
+
## IFC Expression Language Syntax
|
|
79
|
+
|
|
80
|
+
The project uses ANTLR4 for parsing. The grammar is in src/grammar/ifcExpression.g4.
|
|
81
|
+
|
|
82
|
+
The result of expression evaluation is a value of type `string, numeric, boolean, ifcObjectRef`, where `ifcObjectRef` is a reference to some object in the IFC model.
|
|
83
|
+
|
|
84
|
+
The language allows for specifying _a single expression_. There are no control statements and there is no way
|
|
85
|
+
to define custom functions or custom types.
|
|
86
|
+
|
|
87
|
+
An expression can be
|
|
88
|
+
|
|
89
|
+
- a literal, such as `'hello world'`, or `17`
|
|
90
|
+
- a variable reference, such as `$property` or `$element`,(for accessing the IFC model).
|
|
91
|
+
|
|
92
|
+
... or a combination of multiple expressions:
|
|
93
|
+
|
|
94
|
+
- a function call, such as `REPLACE("hello world", "world", "friends")`
|
|
95
|
+
- a function call in 'method-call style', such as `"hello world".replace("world", "friends")`
|
|
96
|
+
- a combination using operators, such as `+`, `&&`, `==`
|
|
97
|
+
|
|
98
|
+
### Types
|
|
99
|
+
|
|
100
|
+
- `string`, e.g. `'abc'` or `"abc"`: text enclosed in single or double quotes
|
|
101
|
+
- `boolean`, e.g. `TRUE` or `false`: true or false, either spelled all-uppercase or all-lowercase
|
|
102
|
+
- `numeric`, e.g. `1` or `3.141`: a decimal number optionally containing one period to separate integer part from fractional part
|
|
103
|
+
- `array`, e.g. `[1,2,"hi there"]: an ordered list of expressions
|
|
104
|
+
|
|
105
|
+
### Operators
|
|
106
|
+
|
|
107
|
+
- numeric operators
|
|
108
|
+
- '+', '-', '\*', '/': plus, minus, multiplication, division - with the ususal precedence rules and associativity
|
|
109
|
+
- '^': raise to the power or, e.g. `2^3` (= 8)
|
|
110
|
+
- boolean operators
|
|
111
|
+
- `&&', `||`, `><`: boolean and, or, xor
|
|
112
|
+
- `!`: boolean not
|
|
113
|
+
- string operators
|
|
114
|
+
- '+': string concatenation
|
|
115
|
+
|
|
116
|
+
### Functions
|
|
117
|
+
|
|
118
|
+
#### comparison functions
|
|
119
|
+
|
|
120
|
+
`equals(a,b)`, `greaterThan(a,b)`, `greaterThanOrEquals(a,b)`, `lessThan(a,b)`, `lessThanOrEqual(a,b)`",
|
|
121
|
+
|
|
122
|
+
#### boolean operator functions
|
|
123
|
+
|
|
124
|
+
`not(a)`, `and(a,b)`, `or(a,b)`, `xor(a,b)`, `implies(a,b)`
|
|
125
|
+
|
|
126
|
+
#### string matching
|
|
127
|
+
|
|
128
|
+
`contains(string, pattern)`, e.g. `contains('hello world', 'he*o')` returns true if the string contains the pattern. `*` matches any number of characters.
|
|
129
|
+
|
|
130
|
+
`regexContains(string, regex)`, e.g. `regexContains('hello, world', 'h[aeiou]ll[aeiou]+\\\s')` returns true if the string contains the regular expression.
|
|
131
|
+
|
|
132
|
+
`matches(string, pattern)`, e.g. `matches('hello world', 'he*o')` returns true if the whole string matches the pattern. `*` matches any number of characters.
|
|
133
|
+
|
|
134
|
+
`regexMatches(string, regex)`, e.g. `regexMatches('hello, world', 'h[aeiou]ll[aeiou]+\\\s')` returns true if the whole string matches the regular expression.
|
|
135
|
+
|
|
136
|
+
#### string replacement
|
|
137
|
+
|
|
138
|
+
`replace(string, pattern, replacement)`, e.g. `replace('hello world', 'he*o', 'bye')` returns the `string`, with all occurrences of the `pattern` replaced with `replacement`. `*` matches any number of characters.
|
|
139
|
+
|
|
140
|
+
`regexReplace(string, regex, replacement)`, e.g. `regexReplace('hello, world', 'h([aeiou]ll[aeiou]+) ', 'm$1w ')` returns the `string`, with all occurrences of the `regex` replaced with `replacement`.
|
|
141
|
+
|
|
142
|
+
#### ifc object accessor functions
|
|
143
|
+
|
|
144
|
+
`property(object: ifcPropertySetRef|ifcTypeObjectRef|ifcElementRef, name: string)`: returns an `ifcPropertyRef` or an error or an error if object has no property with that name
|
|
145
|
+
|
|
146
|
+
`propertySet(object: ifcProperty)`: returns an `ifcPropertySetRef`
|
|
147
|
+
|
|
148
|
+
`propertySet(object: ifcTypeObjectRef|ifcElementRef, name: string)`: returns an `ifcPropertySetRef` or an error if the element or type has no property set with that name.
|
|
149
|
+
|
|
150
|
+
`type(object: ifcElementRef)`: returns an `ifcTypeObjectRef` or an error.
|
|
151
|
+
|
|
152
|
+
`exists(object: ifcObjectRef): boolean` check whether an object reference obtained by the above methods actually exists (suppresses the error they generate)
|
|
153
|
+
|
|
154
|
+
#### Translation functions
|
|
155
|
+
|
|
156
|
+
`map(input, mapping: [[in, out], [in, out], ... ], default)`: finds the first `[in,out]` pair in the specified mapping where `in == input` and returns that pair's `out` value. If none is found, `default` is returned.
|
|
157
|
+
|
|
158
|
+
'switch([[condition, out], [condition, out], ... ]', default): finds the first `[condition, out]` pair where `condition == true` and returns its `out` value. In none is found, `default` is returned.
|
package/dist/E.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ArrayExpr } from "./expression/structure/ArrayExpr.js";
|
|
2
|
+
import { Expr } from "./expression/Expr.js";
|
|
3
|
+
import { StringConcatExpr } from "./expression/string/StringConcatExpr.js";
|
|
4
|
+
import { StringLiteralExpr } from "./expression/string/StringLiteralExpr.js";
|
|
5
|
+
import { ElemObjectReferenceExpr } from "./expression/reference/ElemObjectReferenceExpr.js";
|
|
6
|
+
import { PropObjectReferenceExpr } from "./expression/reference/PropObjectReferenceExpr.js";
|
|
7
|
+
import { NumericValue } from "./value/NumericValue.js";
|
|
8
|
+
import { DivideExpr } from "./expression/numeric/DivideExpr.js";
|
|
9
|
+
import { StringValue } from "./value/StringValue.js";
|
|
10
|
+
import { MinusExpr } from "./expression/numeric/MinusExpr.js";
|
|
11
|
+
import { MultiplyExpr } from "./expression/numeric/MultiplyExpr.js";
|
|
12
|
+
import { PlusExpr } from "./expression/numeric/PlusExpr.js";
|
|
13
|
+
import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr.js";
|
|
14
|
+
import { Decimal } from "decimal.js";
|
|
15
|
+
import { ParenthesisExpr } from "./expression/structure/ParenthesisExpr.js";
|
|
16
|
+
import { PowerExpr } from "./expression/numeric/PowerExpr.js";
|
|
17
|
+
import { UnaryMinusExpr } from "./expression/numeric/UnaryMinusExpr.js";
|
|
18
|
+
import { FunctionExpr } from "./expression/function/FunctionExpr.js";
|
|
19
|
+
import { BooleanValue } from "./value/BooleanValue.js";
|
|
20
|
+
import { AndExpr } from "./expression/boolean/AndExpr.js";
|
|
21
|
+
import { OrExpr } from "./expression/boolean/OrExpr.js";
|
|
22
|
+
import { XorExpr } from "./expression/boolean/XorExpr.js";
|
|
23
|
+
import { BooleanLiteralExpr } from "./expression/boolean/BooleanLiteralExpr.js";
|
|
24
|
+
import { NotExpr } from "./expression/boolean/NotExpr.js";
|
|
25
|
+
export declare class E {
|
|
26
|
+
static array(...elements: Array<Expr<any>>): ArrayExpr;
|
|
27
|
+
static concat(left: Expr<StringValue>, right: Expr<StringValue>): StringConcatExpr;
|
|
28
|
+
static string(literal: string): StringLiteralExpr;
|
|
29
|
+
static element(): ElemObjectReferenceExpr;
|
|
30
|
+
static property(): PropObjectReferenceExpr;
|
|
31
|
+
static div(left: Expr<NumericValue>, right: Expr<NumericValue>): DivideExpr;
|
|
32
|
+
static minus(left: Expr<NumericValue>, right: Expr<NumericValue>): MinusExpr;
|
|
33
|
+
static multiply(left: Expr<NumericValue>, right: Expr<NumericValue>): MultiplyExpr;
|
|
34
|
+
static plus(left: Expr<NumericValue>, right: Expr<NumericValue>): PlusExpr;
|
|
35
|
+
static number(literal: number | string | Decimal): NumericLiteralExpr;
|
|
36
|
+
static parenthesis(numericExpression: Expr<NumericValue>): ParenthesisExpr;
|
|
37
|
+
static power(base: Expr<NumericValue>, power: Expr<NumericValue>): PowerExpr;
|
|
38
|
+
static unaryMinus(numExpr: Expr<NumericValue>): UnaryMinusExpr;
|
|
39
|
+
static fun(functionName: string, ...funcArgs: Array<Expr<any>>): FunctionExpr;
|
|
40
|
+
static and(left: Expr<BooleanValue>, right: Expr<BooleanValue>): AndExpr;
|
|
41
|
+
static or(left: Expr<BooleanValue>, right: Expr<BooleanValue>): OrExpr;
|
|
42
|
+
static xor(left: Expr<BooleanValue>, right: Expr<BooleanValue>): XorExpr;
|
|
43
|
+
static boolean(literal: boolean): BooleanLiteralExpr;
|
|
44
|
+
static not(booleanExpr: Expr<BooleanValue>): NotExpr;
|
|
45
|
+
}
|
package/dist/ExprVisitor.d.ts
CHANGED
|
@@ -1,26 +1,37 @@
|
|
|
1
1
|
import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ArrayElementListContext, ArrayExprContext, BooleanLiteralContext, ExprContext, ExprListContext, FunctionCallContext, LiteralContext, MethodCallChainEndContext, MethodCallChainInnerContext, NumLiteralContext, SEAddSubContext, SEArrayExprContext, SEBooleanBinaryOpContext, SEComparisonContext, SEFunctionCallContext, SELiteralContext, SEMethodCallContext, SEMulDivContext, SENotContext, SEParenthesisContext, SEPowerContext, SEUnaryMinusContext, SEUnaryMultipleMinusContext, SEVariableRefContext, StringLiteralContext, VariableRefContext } from "./gen/parser/IfcExpressionParser.js";
|
|
3
3
|
import { Expr } from "./expression/Expr.js";
|
|
4
|
+
import { TypeManager } from "./type/TypeManager.js";
|
|
4
5
|
export declare class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
private readonly methodCallTargetStack;
|
|
7
|
+
private readonly typeManager;
|
|
8
|
+
constructor(typeManager: TypeManager);
|
|
9
|
+
visitExpr: (ctx: ExprContext) => Expr<any>;
|
|
10
|
+
visitVariableRef: (ctx: VariableRefContext) => Expr<any>;
|
|
11
|
+
visitSEComparison: (ctx: SEComparisonContext) => Expr<any>;
|
|
12
|
+
visitSEMethodCall: (ctx: SEMethodCallContext) => Expr<any>;
|
|
13
|
+
visitSELiteral: (ctx: SELiteralContext) => Expr<any>;
|
|
14
|
+
visitSEVariableRef: (ctx: SEVariableRefContext) => Expr<any>;
|
|
15
|
+
visitSEArrayExpr: (ctx: SEArrayExprContext) => Expr<any>;
|
|
16
|
+
visitSEFunctionCall: (ctx: SEFunctionCallContext) => Expr<any>;
|
|
17
|
+
visitSEParenthesis: (ctx: SEParenthesisContext) => Expr<any>;
|
|
18
|
+
visitMethodCallChainInner: (ctx: MethodCallChainInnerContext) => Expr<any>;
|
|
19
|
+
visitMethodCallChainEnd: (ctx: MethodCallChainEndContext) => Expr<any>;
|
|
20
|
+
visitSEAddSub: (ctx: SEAddSubContext) => Expr<any>;
|
|
21
|
+
private makePlusExpr;
|
|
22
|
+
visitSEMulDiv: (ctx: SEMulDivContext) => Expr<any>;
|
|
11
23
|
visitStringLiteral: (ctx: StringLiteralContext) => Expr<any>;
|
|
12
|
-
visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any>;
|
|
13
|
-
visitStringConcat: (ctx: StringConcatContext) => Expr<any>;
|
|
14
|
-
visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any>;
|
|
15
24
|
visitNumLiteral: (ctx: NumLiteralContext) => Expr<any>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
visitSEUnaryMultipleMinus: (ctx: SEUnaryMultipleMinusContext) => Expr<any>;
|
|
26
|
+
visitSEPower: (ctx: SEPowerContext) => Expr<any>;
|
|
27
|
+
visitSEUnaryMinus: (ctx: SEUnaryMinusContext) => Expr<any>;
|
|
28
|
+
visitSEBooleanBinaryOp: (ctx: SEBooleanBinaryOpContext) => Expr<any>;
|
|
29
|
+
visitBooleanLiteral: (ctx: BooleanLiteralContext) => Expr<any>;
|
|
30
|
+
visitSENot: (ctx: SENotContext) => Expr<any>;
|
|
31
|
+
visitArrayExpr: (ctx: ArrayExprContext) => Expr<any>;
|
|
22
32
|
collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>>;
|
|
23
33
|
visitFunctionCall: (ctx: FunctionCallContext) => Expr<any>;
|
|
24
|
-
collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>>;
|
|
25
|
-
private failNode;
|
|
34
|
+
collectFunctionArguments: (ctx: ExprListContext, resultSoFar?: Array<Expr<any>>) => Array<Expr<any>>;
|
|
35
|
+
private static failNode;
|
|
36
|
+
visitLiteral: (ctx: LiteralContext) => Expr<any>;
|
|
26
37
|
}
|
package/dist/IfcExpression.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ErrorListener, Token } from "antlr4";
|
|
1
|
+
import { ErrorListener, ParserRuleContext, Token } from "antlr4";
|
|
2
2
|
import { ExprVisitor } from "./ExprVisitor.js";
|
|
3
3
|
import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener.js";
|
|
4
4
|
import { isNullish, isPresent } from "./IfcExpressionUtils.js";
|
|
@@ -10,25 +10,31 @@ import { StringValue } from "./value/StringValue.js";
|
|
|
10
10
|
import { NumericValue } from "./value/NumericValue.js";
|
|
11
11
|
import { BooleanValue } from "./value/BooleanValue.js";
|
|
12
12
|
import { LogicalValue } from "./value/LogicalValue.js";
|
|
13
|
-
import { LiteralValue } from "./value/LiteralValue.js";
|
|
14
13
|
import { ReferenceValue } from "./value/ReferenceValue.js";
|
|
15
14
|
import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
|
|
16
15
|
import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
|
|
17
16
|
import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
|
|
18
17
|
import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
|
|
19
18
|
import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
|
|
20
|
-
import { ExprContext } from "./gen/parser/IfcExpressionParser.js";
|
|
21
19
|
import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
|
|
22
20
|
import { ObjectAccessor } from "./context/ObjectAccessor.js";
|
|
23
21
|
import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
|
|
24
|
-
import type {
|
|
25
|
-
import type {
|
|
26
|
-
import {
|
|
22
|
+
import type { ExpressionValue } from "./value/ExpressionValue.js";
|
|
23
|
+
import type { BoxedValueTypes } from "./value/BoxedValueTypes.js";
|
|
24
|
+
import { ExprEvalError, ExprEvalResult, isExprEvalError, isExprEvalSuccess } from "./expression/ExprEvalResult.js";
|
|
27
25
|
import { ExprKind } from "./expression/ExprKind.js";
|
|
28
|
-
|
|
29
|
-
export
|
|
26
|
+
import { TypeManager } from "./type/TypeManager.js";
|
|
27
|
+
export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, ExpressionValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, ExprVisitor, ExprKind, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, ExprEvalResult, ExprEvalError, isExprEvalError, isExprEvalSuccess, };
|
|
28
|
+
export type { BoxedValueTypes };
|
|
29
|
+
export declare class IfcExpressionParseResult {
|
|
30
|
+
private readonly _typeManager;
|
|
31
|
+
private readonly _parseTree;
|
|
32
|
+
constructor(typeManager: TypeManager, exprContext: any);
|
|
33
|
+
get typeManager(): TypeManager;
|
|
34
|
+
get parseTree(): ParserRuleContext;
|
|
35
|
+
}
|
|
30
36
|
export declare class IfcExpression {
|
|
31
|
-
static parse(input: string, errorListener?: ErrorListener<Token>):
|
|
32
|
-
static
|
|
33
|
-
|
|
37
|
+
static parse(input: string, errorListener?: ErrorListener<Token | number>): IfcExpressionParseResult;
|
|
38
|
+
private static compile;
|
|
39
|
+
static evaluate(expression: string, context?: IfcExpressionContext): ExprEvalResult<ExpressionValue>;
|
|
34
40
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ErrorListener, RecognitionException, Recognizer, Token } from "antlr4";
|
|
2
|
-
import { SyntaxErrorException } from "./SyntaxErrorException.js";
|
|
3
|
-
|
|
2
|
+
import { SyntaxErrorException } from "./error/SyntaxErrorException.js";
|
|
3
|
+
import { ValidationException } from "./error/ValidationException.js";
|
|
4
|
+
export declare class IfcExpressionErrorListener extends ErrorListener<Token | number> {
|
|
4
5
|
private exception;
|
|
5
|
-
|
|
6
|
+
validationException(validationException: ValidationException): void;
|
|
7
|
+
syntaxError(recognizer: Recognizer<Token | number>, offendingSymbol: Token | number, line: number, column: number, msg: string, e: RecognitionException | undefined): void;
|
|
6
8
|
isErrorOccurred(): boolean;
|
|
7
|
-
getException(): SyntaxErrorException;
|
|
9
|
+
getException(): SyntaxErrorException | ValidationException;
|
|
8
10
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import IfcExpressionListener from "./gen/parser/IfcExpressionListener.js";
|
|
2
|
+
import { ArrayElementListContext, ArrayExprContext, BooleanLiteralContext, ExprContext, ExprListContext, FunctionCallContext, LiteralContext, MethodCallChainEndContext, MethodCallChainInnerContext, NumLiteralContext, SEAddSubContext, SEArrayExprContext, SEBooleanBinaryOpContext, SEComparisonContext, SEFunctionCallContext, SELiteralContext, SEMethodCallContext, SEMulDivContext, SENotContext, SEParenthesisContext, SEPowerContext, SEUnaryMinusContext, SEUnaryMultipleMinusContext, SEVariableRefContext, StringLiteralContext, VariableRefContext } from "./gen/parser/IfcExpressionParser.js";
|
|
3
|
+
import { TypeManager } from "./type/TypeManager.js";
|
|
4
|
+
export declare class IfcExpressionValidationListener extends IfcExpressionListener {
|
|
5
|
+
private readonly typeManager;
|
|
6
|
+
private methodCallTargetStack;
|
|
7
|
+
constructor();
|
|
8
|
+
getTypeManager(): TypeManager;
|
|
9
|
+
enterFunctionCall: (ctx: FunctionCallContext) => void;
|
|
10
|
+
enterSEUnaryMultipleMinus: (ctx: SEUnaryMultipleMinusContext) => void;
|
|
11
|
+
exitSEBooleanBinaryOp: (ctx: SEBooleanBinaryOpContext) => void;
|
|
12
|
+
exitSEComparison: (ctx: SEComparisonContext) => void;
|
|
13
|
+
exitSEParenthesis: (ctx: SEParenthesisContext) => void;
|
|
14
|
+
exitSELiteral: (ctx: SELiteralContext) => void;
|
|
15
|
+
exitLiteral: (ctx: LiteralContext) => void;
|
|
16
|
+
exitNumLiteral: (ctx: NumLiteralContext) => void;
|
|
17
|
+
exitStringLiteral: (ctx: StringLiteralContext) => void;
|
|
18
|
+
exitBooleanLiteral: (ctx: BooleanLiteralContext) => void;
|
|
19
|
+
exitExpr: (ctx: ExprContext) => void;
|
|
20
|
+
exitSEMulDiv: (ctx: SEMulDivContext) => void;
|
|
21
|
+
exitSEPower: (ctx: SEPowerContext) => void;
|
|
22
|
+
exitSEFunctionCall: (ctx: SEFunctionCallContext) => void;
|
|
23
|
+
exitSEArrayExpr: (ctx: SEArrayExprContext) => void;
|
|
24
|
+
exitSENot: (ctx: SENotContext) => void;
|
|
25
|
+
exitSEVariableRef: (ctx: SEVariableRefContext) => void;
|
|
26
|
+
exitSEUnaryMinus: (ctx: SEUnaryMinusContext) => void;
|
|
27
|
+
exitSEAddSub: (ctx: SEAddSubContext) => void;
|
|
28
|
+
exitSEMethodCall: (ctx: SEMethodCallContext) => void;
|
|
29
|
+
enterMethodCallChainInner: (ctx: MethodCallChainInnerContext) => void;
|
|
30
|
+
exitMethodCallChainInner: (ctx: MethodCallChainInnerContext) => void;
|
|
31
|
+
enterMethodCallChainEnd: (ctx: MethodCallChainEndContext) => void;
|
|
32
|
+
private pushMethodCallTarget;
|
|
33
|
+
exitMethodCallChainEnd: (ctx: MethodCallChainEndContext) => void;
|
|
34
|
+
exitFunctionCall: (ctx: FunctionCallContext) => void;
|
|
35
|
+
private collectArgumentTypes;
|
|
36
|
+
exitExprList: (ctx: ExprListContext) => void;
|
|
37
|
+
exitArrayExpr: (ctx: ArrayExprContext) => void;
|
|
38
|
+
private collectArrayElementTypes;
|
|
39
|
+
exitArrayElementList: (ctx: ArrayElementListContext) => void;
|
|
40
|
+
exitVariableRef: (ctx: VariableRefContext) => void;
|
|
41
|
+
}
|
package/dist/cjs/E.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.E = void 0;
|
|
4
|
+
const ArrayExpr_js_1 = require("./expression/structure/ArrayExpr.js");
|
|
5
|
+
const StringConcatExpr_js_1 = require("./expression/string/StringConcatExpr.js");
|
|
6
|
+
const StringLiteralExpr_js_1 = require("./expression/string/StringLiteralExpr.js");
|
|
7
|
+
const ElemObjectReferenceExpr_js_1 = require("./expression/reference/ElemObjectReferenceExpr.js");
|
|
8
|
+
const PropObjectReferenceExpr_js_1 = require("./expression/reference/PropObjectReferenceExpr.js");
|
|
9
|
+
const DivideExpr_js_1 = require("./expression/numeric/DivideExpr.js");
|
|
10
|
+
const MinusExpr_js_1 = require("./expression/numeric/MinusExpr.js");
|
|
11
|
+
const MultiplyExpr_js_1 = require("./expression/numeric/MultiplyExpr.js");
|
|
12
|
+
const PlusExpr_js_1 = require("./expression/numeric/PlusExpr.js");
|
|
13
|
+
const NumericLiteralExpr_js_1 = require("./expression/numeric/NumericLiteralExpr.js");
|
|
14
|
+
const ParenthesisExpr_js_1 = require("./expression/structure/ParenthesisExpr.js");
|
|
15
|
+
const PowerExpr_js_1 = require("./expression/numeric/PowerExpr.js");
|
|
16
|
+
const UnaryMinusExpr_js_1 = require("./expression/numeric/UnaryMinusExpr.js");
|
|
17
|
+
const FunctionExpr_js_1 = require("./expression/function/FunctionExpr.js");
|
|
18
|
+
const AndExpr_js_1 = require("./expression/boolean/AndExpr.js");
|
|
19
|
+
const OrExpr_js_1 = require("./expression/boolean/OrExpr.js");
|
|
20
|
+
const XorExpr_js_1 = require("./expression/boolean/XorExpr.js");
|
|
21
|
+
const BooleanLiteralExpr_js_1 = require("./expression/boolean/BooleanLiteralExpr.js");
|
|
22
|
+
const NotExpr_js_1 = require("./expression/boolean/NotExpr.js");
|
|
23
|
+
class E {
|
|
24
|
+
static array(...elements) {
|
|
25
|
+
return new ArrayExpr_js_1.ArrayExpr(elements);
|
|
26
|
+
}
|
|
27
|
+
static concat(left, right) {
|
|
28
|
+
return new StringConcatExpr_js_1.StringConcatExpr(left, right);
|
|
29
|
+
}
|
|
30
|
+
static string(literal) {
|
|
31
|
+
return new StringLiteralExpr_js_1.StringLiteralExpr(literal);
|
|
32
|
+
}
|
|
33
|
+
static element() {
|
|
34
|
+
return new ElemObjectReferenceExpr_js_1.ElemObjectReferenceExpr();
|
|
35
|
+
}
|
|
36
|
+
static property() {
|
|
37
|
+
return new PropObjectReferenceExpr_js_1.PropObjectReferenceExpr();
|
|
38
|
+
}
|
|
39
|
+
static div(left, right) {
|
|
40
|
+
return new DivideExpr_js_1.DivideExpr(left, right);
|
|
41
|
+
}
|
|
42
|
+
static minus(left, right) {
|
|
43
|
+
return new MinusExpr_js_1.MinusExpr(left, right);
|
|
44
|
+
}
|
|
45
|
+
static multiply(left, right) {
|
|
46
|
+
return new MultiplyExpr_js_1.MultiplyExpr(left, right);
|
|
47
|
+
}
|
|
48
|
+
static plus(left, right) {
|
|
49
|
+
return new PlusExpr_js_1.PlusExpr(left, right);
|
|
50
|
+
}
|
|
51
|
+
static number(literal) {
|
|
52
|
+
return new NumericLiteralExpr_js_1.NumericLiteralExpr(literal);
|
|
53
|
+
}
|
|
54
|
+
static parenthesis(numericExpression) {
|
|
55
|
+
return new ParenthesisExpr_js_1.ParenthesisExpr(numericExpression);
|
|
56
|
+
}
|
|
57
|
+
static power(base, power) {
|
|
58
|
+
return new PowerExpr_js_1.PowerExpr(base, power);
|
|
59
|
+
}
|
|
60
|
+
static unaryMinus(numExpr) {
|
|
61
|
+
return new UnaryMinusExpr_js_1.UnaryMinusExpr(numExpr);
|
|
62
|
+
}
|
|
63
|
+
static fun(functionName, ...funcArgs) {
|
|
64
|
+
return new FunctionExpr_js_1.FunctionExpr(functionName, funcArgs);
|
|
65
|
+
}
|
|
66
|
+
static and(left, right) {
|
|
67
|
+
return new AndExpr_js_1.AndExpr(left, right);
|
|
68
|
+
}
|
|
69
|
+
static or(left, right) {
|
|
70
|
+
return new OrExpr_js_1.OrExpr(left, right);
|
|
71
|
+
}
|
|
72
|
+
static xor(left, right) {
|
|
73
|
+
return new XorExpr_js_1.XorExpr(left, right);
|
|
74
|
+
}
|
|
75
|
+
static boolean(literal) {
|
|
76
|
+
return new BooleanLiteralExpr_js_1.BooleanLiteralExpr(literal);
|
|
77
|
+
}
|
|
78
|
+
static not(booleanExpr) {
|
|
79
|
+
return new NotExpr_js_1.NotExpr(booleanExpr);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.E = E;
|
|
83
|
+
//# sourceMappingURL=E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/E.ts"],"names":[],"mappings":";;;AAAA,sEAAgE;AAEhE,iFAA2E;AAC3E,mFAA6E;AAC7E,kGAA4F;AAC5F,kGAA4F;AAE5F,sEAAgE;AAEhE,oEAA8D;AAC9D,0EAAoE;AACpE,kEAA4D;AAC5D,sFAAgF;AAEhF,kFAA4E;AAC5E,oEAA8D;AAC9D,8EAAwE;AACxE,2EAAqE;AAErE,gEAA0D;AAC1D,8DAAwD;AACxD,gEAA0D;AAC1D,sFAAgF;AAChF,gEAA0D;AAE1D,MAAa,CAAC;IACL,MAAM,CAAC,KAAK,CAAC,GAAG,QAA0B;QAC/C,OAAO,IAAI,wBAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACM,MAAM,CAAC,MAAM,CAClB,IAAuB,EACvB,KAAwB;QAExB,OAAO,IAAI,sCAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,OAAe;QAClC,OAAO,IAAI,wCAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACM,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,oDAAuB,EAAE,CAAC;IACvC,CAAC;IACM,MAAM,CAAC,QAAQ;QACpB,OAAO,IAAI,oDAAuB,EAAE,CAAC;IACvC,CAAC;IACM,MAAM,CAAC,GAAG,CACf,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,0BAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,KAAK,CACjB,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,wBAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACM,MAAM,CAAC,QAAQ,CACpB,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,8BAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IACM,MAAM,CAAC,IAAI,CAChB,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,sBAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,OAAkC;QACrD,OAAO,IAAI,0CAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACM,MAAM,CAAC,WAAW,CACvB,iBAAqC;QAErC,OAAO,IAAI,oCAAe,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IACM,MAAM,CAAC,KAAK,CACjB,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,wBAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,OAA2B;QAClD,OAAO,IAAI,kCAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,GAAG,CACf,YAAoB,EACpB,GAAG,QAA0B;QAE7B,OAAO,IAAI,8BAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IACM,MAAM,CAAC,GAAG,CACf,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,oBAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACM,MAAM,CAAC,EAAE,CACd,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,kBAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACM,MAAM,CAAC,GAAG,CACf,IAAwB,EACxB,KAAyB;QAEzB,OAAO,IAAI,oBAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,OAAgB;QACpC,OAAO,IAAI,0CAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACM,MAAM,CAAC,GAAG,CAAC,WAA+B;QAC/C,OAAO,IAAI,oBAAO,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;CACF;AA1FD,cA0FC","file":"E.js","sourcesContent":["import { ArrayExpr } from \"./expression/structure/ArrayExpr.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr.js\";\nimport { Decimal } from \"decimal.js\";\nimport { ParenthesisExpr } from \"./expression/structure/ParenthesisExpr.js\";\nimport { PowerExpr } from \"./expression/numeric/PowerExpr.js\";\nimport { UnaryMinusExpr } from \"./expression/numeric/UnaryMinusExpr.js\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { AndExpr } from \"./expression/boolean/AndExpr.js\";\nimport { OrExpr } from \"./expression/boolean/OrExpr.js\";\nimport { XorExpr } from \"./expression/boolean/XorExpr.js\";\nimport { BooleanLiteralExpr } from \"./expression/boolean/BooleanLiteralExpr.js\";\nimport { NotExpr } from \"./expression/boolean/NotExpr.js\";\n\nexport class E {\n public static array(...elements: Array<Expr<any>>): ArrayExpr {\n return new ArrayExpr(elements);\n }\n public static concat(\n left: Expr<StringValue>,\n right: Expr<StringValue>\n ): StringConcatExpr {\n return new StringConcatExpr(left, right);\n }\n public static string(literal: string): StringLiteralExpr {\n return new StringLiteralExpr(literal);\n }\n public static element() {\n return new ElemObjectReferenceExpr();\n }\n public static property() {\n return new PropObjectReferenceExpr();\n }\n public static div(\n left: Expr<NumericValue>,\n right: Expr<NumericValue>\n ): DivideExpr {\n return new DivideExpr(left, right);\n }\n public static minus(\n left: Expr<NumericValue>,\n right: Expr<NumericValue>\n ): MinusExpr {\n return new MinusExpr(left, right);\n }\n public static multiply(\n left: Expr<NumericValue>,\n right: Expr<NumericValue>\n ): MultiplyExpr {\n return new MultiplyExpr(left, right);\n }\n public static plus(\n left: Expr<NumericValue>,\n right: Expr<NumericValue>\n ): PlusExpr {\n return new PlusExpr(left, right);\n }\n public static number(literal: number | string | Decimal): NumericLiteralExpr {\n return new NumericLiteralExpr(literal);\n }\n public static parenthesis(\n numericExpression: Expr<NumericValue>\n ): ParenthesisExpr {\n return new ParenthesisExpr(numericExpression);\n }\n public static power(\n base: Expr<NumericValue>,\n power: Expr<NumericValue>\n ): PowerExpr {\n return new PowerExpr(base, power);\n }\n public static unaryMinus(numExpr: Expr<NumericValue>): UnaryMinusExpr {\n return new UnaryMinusExpr(numExpr);\n }\n public static fun(\n functionName: string,\n ...funcArgs: Array<Expr<any>>\n ): FunctionExpr {\n return new FunctionExpr(functionName, funcArgs);\n }\n public static and(\n left: Expr<BooleanValue>,\n right: Expr<BooleanValue>\n ): AndExpr {\n return new AndExpr(left, right);\n }\n public static or(\n left: Expr<BooleanValue>,\n right: Expr<BooleanValue>\n ): OrExpr {\n return new OrExpr(left, right);\n }\n public static xor(\n left: Expr<BooleanValue>,\n right: Expr<BooleanValue>\n ): XorExpr {\n return new XorExpr(left, right);\n }\n public static boolean(literal: boolean) {\n return new BooleanLiteralExpr(literal);\n }\n public static not(booleanExpr: Expr<BooleanValue>): NotExpr {\n return new NotExpr(booleanExpr);\n }\n}\n"]}
|