ifc-expressions 2.0.1-beta.7 → 2.0.1

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.
Files changed (173) hide show
  1. package/dist/E.d.ts +3 -0
  2. package/dist/cjs/E.js +4 -0
  3. package/dist/cjs/E.js.map +1 -1
  4. package/dist/cjs/compiler/ExprCompiler.js +6 -0
  5. package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
  6. package/dist/cjs/compiler/IfcExpressionValidationListener.js +6 -3
  7. package/dist/cjs/compiler/IfcExpressionValidationListener.js.map +1 -1
  8. package/dist/cjs/compiler/TypeManager.js +8 -0
  9. package/dist/cjs/compiler/TypeManager.js.map +1 -1
  10. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js +3 -0
  11. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  12. package/dist/cjs/error/FunctionArgumentException.js +14 -0
  13. package/dist/cjs/error/FunctionArgumentException.js.map +1 -0
  14. package/dist/cjs/error/MissingFunctionArgumentException.js +5 -7
  15. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
  16. package/dist/cjs/error/SpuriousFunctionArgumentException.js +12 -0
  17. package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -0
  18. package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
  19. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js +12 -0
  20. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -0
  21. package/dist/cjs/expression/ExprEvalResult.js +14 -4
  22. package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
  23. package/dist/cjs/expression/ExprKind.js +5 -4
  24. package/dist/cjs/expression/ExprKind.js.map +1 -1
  25. package/dist/cjs/expression/boolean/AndExpr.js +3 -11
  26. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
  27. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js +23 -0
  28. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -0
  29. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js +35 -0
  30. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -0
  31. package/dist/cjs/expression/boolean/NotExpr.js +3 -5
  32. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
  33. package/dist/cjs/expression/boolean/OrExpr.js +3 -11
  34. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
  35. package/dist/cjs/expression/boolean/XorExpr.js +4 -14
  36. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
  37. package/dist/cjs/expression/comparison/EqualsExpr.js +1 -1
  38. package/dist/cjs/expression/comparison/EqualsExpr.js.map +1 -1
  39. package/dist/cjs/expression/comparison/NotEqualsExpr.js +1 -1
  40. package/dist/cjs/expression/comparison/NotEqualsExpr.js.map +1 -1
  41. package/dist/cjs/expression/function/Func.js +3 -5
  42. package/dist/cjs/expression/function/Func.js.map +1 -1
  43. package/dist/cjs/expression/function/IfcExpressionFunctions.js +6 -4
  44. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  45. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js +26 -0
  46. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -0
  47. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js +7 -8
  48. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  49. package/dist/cjs/expression/function/impl/IF.js +54 -6
  50. package/dist/cjs/expression/function/impl/IF.js.map +1 -1
  51. package/dist/cjs/expression/function/impl/NOT.js +4 -6
  52. package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
  53. package/dist/cjs/expression/function/impl/TOBOOLEAN.js +1 -1
  54. package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  55. package/dist/cjs/expression/function/impl/TOLOGICAL.js +39 -0
  56. package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -0
  57. package/dist/cjs/expression/function/impl/TONUMERIC.js +1 -1
  58. package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
  59. package/dist/cjs/gen/parser/IfcExpressionLexer.js +75 -65
  60. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  61. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -1
  62. package/dist/cjs/gen/parser/IfcExpressionParser.js +195 -121
  63. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  64. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  65. package/dist/cjs/type/Types.js +6 -0
  66. package/dist/cjs/type/Types.js.map +1 -1
  67. package/dist/cjs/value/BooleanValue.js +65 -4
  68. package/dist/cjs/value/BooleanValue.js.map +1 -1
  69. package/dist/cjs/value/Logical.js +2 -0
  70. package/dist/cjs/value/Logical.js.map +1 -0
  71. package/dist/cjs/value/LogicalValue.js +110 -7
  72. package/dist/cjs/value/LogicalValue.js.map +1 -1
  73. package/dist/compiler/ExprCompiler.d.ts +2 -1
  74. package/dist/compiler/IfcExpressionValidationListener.d.ts +2 -1
  75. package/dist/compiler/TypeManager.d.ts +2 -0
  76. package/dist/error/FunctionArgumentException.d.ts +7 -0
  77. package/dist/error/MissingFunctionArgumentException.d.ts +3 -6
  78. package/dist/error/SpuriousFunctionArgumentException.d.ts +4 -0
  79. package/dist/error/mapper/MissingFunctionArgumentExceptionMapper.d.ts +2 -2
  80. package/dist/error/mapper/SpuriousFunctionArgumentExceptionMapper.d.ts +6 -0
  81. package/dist/expression/ExprEvalResult.d.ts +9 -2
  82. package/dist/expression/ExprKind.d.ts +5 -4
  83. package/dist/expression/boolean/AndExpr.d.ts +4 -8
  84. package/dist/expression/boolean/BinaryBooleanOpExpr.d.ts +14 -0
  85. package/dist/expression/boolean/LogicalLiteralExpr.d.ts +12 -0
  86. package/dist/expression/boolean/NotExpr.d.ts +4 -3
  87. package/dist/expression/boolean/OrExpr.d.ts +4 -8
  88. package/dist/expression/boolean/XorExpr.d.ts +4 -8
  89. package/dist/expression/function/Func.d.ts +2 -1
  90. package/dist/expression/function/arg/FuncArgLogicalOrBoolean.d.ts +12 -0
  91. package/dist/expression/function/impl/FuncBooleanBinary.d.ts +2 -2
  92. package/dist/expression/function/impl/IF.d.ts +5 -0
  93. package/dist/expression/function/impl/TOLOGICAL.d.ts +13 -0
  94. package/dist/gen/parser/IfcExpressionLexer.d.ts +8 -7
  95. package/dist/gen/parser/IfcExpressionListener.d.ts +11 -0
  96. package/dist/gen/parser/IfcExpressionParser.d.ts +20 -8
  97. package/dist/gen/parser/IfcExpressionVisitor.d.ts +7 -0
  98. package/dist/mjs/E.js +4 -0
  99. package/dist/mjs/E.js.map +1 -1
  100. package/dist/mjs/compiler/ExprCompiler.js +6 -0
  101. package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
  102. package/dist/mjs/compiler/IfcExpressionValidationListener.js +6 -3
  103. package/dist/mjs/compiler/IfcExpressionValidationListener.js.map +1 -1
  104. package/dist/mjs/compiler/TypeManager.js +8 -0
  105. package/dist/mjs/compiler/TypeManager.js.map +1 -1
  106. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js +3 -0
  107. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  108. package/dist/mjs/error/FunctionArgumentException.js +10 -0
  109. package/dist/mjs/error/FunctionArgumentException.js.map +1 -0
  110. package/dist/mjs/error/MissingFunctionArgumentException.js +5 -7
  111. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
  112. package/dist/mjs/error/SpuriousFunctionArgumentException.js +8 -0
  113. package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -0
  114. package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
  115. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js +8 -0
  116. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -0
  117. package/dist/mjs/expression/ExprEvalResult.js +12 -3
  118. package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
  119. package/dist/mjs/expression/ExprKind.js +5 -4
  120. package/dist/mjs/expression/ExprKind.js.map +1 -1
  121. package/dist/mjs/expression/boolean/AndExpr.js +3 -11
  122. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
  123. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js +19 -0
  124. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -0
  125. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js +31 -0
  126. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -0
  127. package/dist/mjs/expression/boolean/NotExpr.js +3 -5
  128. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
  129. package/dist/mjs/expression/boolean/OrExpr.js +3 -11
  130. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
  131. package/dist/mjs/expression/boolean/XorExpr.js +4 -14
  132. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
  133. package/dist/mjs/expression/comparison/EqualsExpr.js +1 -1
  134. package/dist/mjs/expression/comparison/EqualsExpr.js.map +1 -1
  135. package/dist/mjs/expression/comparison/NotEqualsExpr.js +1 -1
  136. package/dist/mjs/expression/comparison/NotEqualsExpr.js.map +1 -1
  137. package/dist/mjs/expression/function/Func.js +3 -5
  138. package/dist/mjs/expression/function/Func.js.map +1 -1
  139. package/dist/mjs/expression/function/IfcExpressionFunctions.js +6 -4
  140. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  141. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js +22 -0
  142. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -0
  143. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js +8 -9
  144. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  145. package/dist/mjs/expression/function/impl/IF.js +56 -8
  146. package/dist/mjs/expression/function/impl/IF.js.map +1 -1
  147. package/dist/mjs/expression/function/impl/NOT.js +4 -6
  148. package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
  149. package/dist/mjs/expression/function/impl/TOBOOLEAN.js +1 -1
  150. package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  151. package/dist/mjs/expression/function/impl/TOLOGICAL.js +35 -0
  152. package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -0
  153. package/dist/mjs/expression/function/impl/TONUMERIC.js +1 -1
  154. package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
  155. package/dist/mjs/gen/parser/IfcExpressionLexer.js +75 -65
  156. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  157. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -1
  158. package/dist/mjs/gen/parser/IfcExpressionParser.js +193 -120
  159. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  160. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  161. package/dist/mjs/type/Types.js +6 -0
  162. package/dist/mjs/type/Types.js.map +1 -1
  163. package/dist/mjs/value/BooleanValue.js +65 -4
  164. package/dist/mjs/value/BooleanValue.js.map +1 -1
  165. package/dist/mjs/value/Logical.js +2 -0
  166. package/dist/mjs/value/Logical.js.map +1 -0
  167. package/dist/mjs/value/LogicalValue.js +110 -7
  168. package/dist/mjs/value/LogicalValue.js.map +1 -1
  169. package/dist/type/Types.d.ts +2 -0
  170. package/dist/value/BooleanValue.d.ts +15 -2
  171. package/dist/value/Logical.d.ts +0 -0
  172. package/dist/value/LogicalValue.d.ts +26 -9
  173. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { TextSpan } from \"../util/TextSpan.js\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n NOT_FOUND = 2050,\n IFC_PROPERTY_NOT_FOUND = 2051,\n IFC_PROPERTY_SET_NOT_FOUND = 2052,\n IFC_TYPE_OBJECT_NOT_FOUND = 2053,\n PARSE_ERROR = 2080,\n SYNTAX_ERROR = 2081,\n VALIDATION_ERROR = 2082,\n STATIC_TYPE_ERROR = 2083,\n MISSING_OPERAND = 2084,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2085,\n UNKNOWN_FUNCTION = 2086,\n WRONG_FUNCTION_ARGUMENT_TYPE = 2088,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n public readonly textSpan?: TextSpan;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any,\n textSpan?: TextSpan\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n if (!isNullish(textSpan)) {\n this.textSpan = textSpan;\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind, textSpan?: TextSpan) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\",\n textSpan\n );\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\",\n textSpan\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationObjectNotFoundErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly offendingKey: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string,\n objectKey: string,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, functionName, textSpan);\n this.offendingKey = objectKey;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(\n exprKind: ExprKind,\n functionName: string,\n cause: ExprEvalError,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName,\n textSpan\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName,\n textSpan\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(\n exprKind: ExprKind,\n message: any,\n offendingValue: T,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.TYPE_ERROR,\n message,\n offendingValue,\n textSpan\n );\n }\n}\n\nexport type ExprEvalParseError = ExprEvalUnspecificError & {\n exprKind: ExprKind.PARSE_ERROR;\n line: number;\n column: number;\n offendingInput: string;\n};\n\nexport type ExprEvalValidationError = ExprEvalUnspecificError & {\n textSpan: TextSpan;\n};\n\nexport class ExprEvalParseErrorObj extends ExprEvalErrorObj {\n public readonly line: number;\n public readonly column: number;\n public readonly offendingInput: string;\n\n constructor(\n status: ExprEvalStatus,\n message: any,\n offendingInput: string,\n textSpan: TextSpan\n ) {\n super(ExprKind.PARSE_ERROR, status, message, textSpan);\n this.offendingInput = offendingInput;\n }\n}\n\nexport class ExprEvalValidationErrorObj extends ExprEvalErrorObj {\n public readonly textSpan: TextSpan;\n constructor(status: ExprEvalStatus, message: any, textSpan: TextSpan) {\n super(ExprKind.PARSE_ERROR, status, message, textSpan);\n }\n}\n\nexport class ExprEvalUnknownFunctionErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n\n constructor(message: any, functionName, textSpan: TextSpan) {\n super(ExprEvalStatus.UNKNOWN_FUNCTION, message, textSpan);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalMissingFunctionArgumentErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n textSpan: TextSpan\n ) {\n super(ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT, message, textSpan);\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport class ExprEvalWrongFunctionArgumentTypeErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n public readonly expectedType: string;\n public readonly actualType: string;\n\n constructor(\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n expectedType: string,\n actualType: string,\n textSpan: TextSpan\n ) {\n super(ExprEvalStatus.WRONG_FUNCTION_ARGUMENT_TYPE, message, textSpan);\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n this.expectedType = expectedType;\n this.actualType = actualType;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { TextSpan } from \"../util/TextSpan.js\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n NOT_FOUND = 2050,\n IFC_PROPERTY_NOT_FOUND = 2051,\n IFC_PROPERTY_SET_NOT_FOUND = 2052,\n IFC_TYPE_OBJECT_NOT_FOUND = 2053,\n PARSE_ERROR = 2080,\n SYNTAX_ERROR = 2081,\n VALIDATION_ERROR = 2082,\n STATIC_TYPE_ERROR = 2083,\n MISSING_OPERAND = 2084,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2085,\n UNKNOWN_FUNCTION = 2086,\n WRONG_FUNCTION_ARGUMENT_TYPE = 2087,\n SPURIOUS_FUNCTION_ARGUMENT = 2088,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n public readonly textSpan?: TextSpan;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any,\n textSpan?: TextSpan\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n if (!isNullish(textSpan)) {\n this.textSpan = textSpan;\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind, textSpan?: TextSpan) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\",\n textSpan\n );\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\",\n textSpan\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationObjectNotFoundErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly offendingKey: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string,\n objectKey: string,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, functionName, textSpan);\n this.offendingKey = objectKey;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(\n exprKind: ExprKind,\n functionName: string,\n cause: ExprEvalError,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName,\n textSpan\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName,\n textSpan\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T,\n textSpan?: TextSpan\n ) {\n super(exprKind, status, message, textSpan);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(\n exprKind: ExprKind,\n message: any,\n offendingValue: T,\n textSpan?: TextSpan\n ) {\n super(\n exprKind,\n ExprEvalStatus.TYPE_ERROR,\n message,\n offendingValue,\n textSpan\n );\n }\n}\n\nexport type ExprEvalParseError = ExprEvalUnspecificError & {\n exprKind: ExprKind.PARSE_ERROR;\n line: number;\n column: number;\n offendingInput: string;\n};\n\nexport type ExprEvalValidationError = ExprEvalUnspecificError & {\n textSpan: TextSpan;\n};\n\nexport class ExprEvalParseErrorObj extends ExprEvalErrorObj {\n public readonly line: number;\n public readonly column: number;\n public readonly offendingInput: string;\n\n constructor(\n status: ExprEvalStatus,\n message: any,\n offendingInput: string,\n textSpan: TextSpan\n ) {\n super(ExprKind.PARSE_ERROR, status, message, textSpan);\n this.offendingInput = offendingInput;\n }\n}\n\nexport class ExprEvalValidationErrorObj extends ExprEvalErrorObj {\n public readonly textSpan: TextSpan;\n constructor(status: ExprEvalStatus, message: any, textSpan: TextSpan) {\n super(ExprKind.PARSE_ERROR, status, message, textSpan);\n }\n}\n\nexport class ExprEvalUnknownFunctionErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n\n constructor(message: any, functionName, textSpan: TextSpan) {\n super(ExprEvalStatus.UNKNOWN_FUNCTION, message, textSpan);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalMissingFunctionArgumentErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n textSpan: TextSpan\n ) {\n super(\n ExprKind.FUNCTION_ARGUMENTS,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n textSpan\n );\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport class ExprEvalSpuriousFunctionArgumentErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n textSpan: TextSpan\n ) {\n super(\n ExprKind.FUNCTION_ARGUMENTS,\n ExprEvalStatus.SPURIOUS_FUNCTION_ARGUMENT,\n message,\n textSpan\n );\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport class ExprEvalWrongFunctionArgumentTypeErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n public readonly expectedType: string;\n public readonly actualType: string;\n\n constructor(\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n expectedType: string,\n actualType: string,\n textSpan: TextSpan\n ) {\n super(ExprEvalStatus.WRONG_FUNCTION_ARGUMENT_TYPE, message, textSpan);\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n this.expectedType = expectedType;\n this.actualType = actualType;\n }\n}\n"]}
@@ -19,11 +19,12 @@ var ExprKind;
19
19
  ExprKind["REF_PROPERTY"] = "REF_PROPERTY";
20
20
  ExprKind["STR_CONCAT"] = "STR_CONCAT";
21
21
  ExprKind["STR_LITERAL"] = "STR_LITERAL";
22
- ExprKind["BOOLEAN_AND"] = "BOOLEAN_AND";
23
- ExprKind["BOOLEAN_OR"] = "BOOLEAN_OR";
24
- ExprKind["BOOLEAN_XOR"] = "BOOLEAN_XOR";
25
- ExprKind["BOOLEAN_NOT"] = "BOOLEAN_NOT";
22
+ ExprKind["AND"] = "AND";
23
+ ExprKind["OR"] = "OR";
24
+ ExprKind["XOR"] = "XOR";
25
+ ExprKind["NOT"] = "NOT";
26
26
  ExprKind["BOOLEAN_LITERAL"] = "BOOLEAN_LITERAL";
27
+ ExprKind["LOGICAL_LITERAL"] = "LOGICAL_LITERAL";
27
28
  ExprKind["CMP_EQUALS"] = "CMP_EQUALS";
28
29
  ExprKind["CMP_NOT_EQUALS"] = "CMP_NOT_EQUALS";
29
30
  ExprKind["CMP_LESS_THAN"] = "CMP_LESS_THAN";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/ExprKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,QA6BX;AA7BD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,qDAAyC,CAAA;IACzC,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,yCAA6B,CAAA;IAC7B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,qCAAyB,CAAA;IACzB,6CAAiC,CAAA;IACjC,2CAA+B,CAAA;IAC/B,6DAAiD,CAAA;IACjD,iDAAqC,CAAA;IACrC,mEAAuD,CAAA;IACvD,uCAA2B,CAAA,CAAC,0EAA0E;AACxG,CAAC,EA7BW,QAAQ,wBAAR,QAAQ,QA6BnB","file":"expression/ExprKind.js","sourcesContent":["export enum ExprKind {\n FUNCTION = \"FUNCTION\",\n FUNCTION_ARGUMENTS = \"FUNCTION_ARGUMENTS\",\n ARRAY = \"ARRAY\",\n METHOD_CALL = \"METHOD_CALL\",\n PARENTHESIS = \"PARENTHESIS\",\n NUM_DIVIDE = \"NUM_DIVIDE\",\n NUM_MULTIPLY = \"NUM_MULTIPLY\",\n NUM_PLUS = \"NUM_PLUS\",\n NUM_MINUS = \"NUM_MINUS\",\n NUM_POWER = \"POWER\",\n NUM_UNARY_MINUS = \"UNARY_MINUS\",\n NUM_LITERAL = \"NUM_LITERAL\",\n REF_ELEMENT = \"REF_ELEMENT\",\n REF_PROPERTY = \"REF_PROPERTY\",\n STR_CONCAT = \"STR_CONCAT\",\n STR_LITERAL = \"STR_LITERAL\",\n BOOLEAN_AND = \"BOOLEAN_AND\",\n BOOLEAN_OR = \"BOOLEAN_OR\",\n BOOLEAN_XOR = \"BOOLEAN_XOR\",\n BOOLEAN_NOT = \"BOOLEAN_NOT\",\n BOOLEAN_LITERAL = \"BOOLEAN_LITERAL\",\n CMP_EQUALS = \"CMP_EQUALS\",\n CMP_NOT_EQUALS = \"CMP_NOT_EQUALS\",\n CMP_LESS_THAN = \"CMP_LESS_THAN\",\n CMP_LESS_THAN_OR_EQUAL = \"CMP_LESS_THAN_OR_EQUAL\",\n CMP_GREATER_THAN = \"CMP_GREATER_THAN\",\n CMP_GREATER_THAN_OR_EQUAL = \"CMP_GREATER_THAN_OR_EQUAL\",\n PARSE_ERROR = \"PARSE_ERROR\" /* to be used when no expr was compiled due to a parse/validation error */,\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/ExprKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,QA8BX;AA9BD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,qDAAyC,CAAA;IACzC,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,yCAA6B,CAAA;IAC7B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,+CAAmC,CAAA;IACnC,+CAAmC,CAAA;IACnC,qCAAyB,CAAA;IACzB,6CAAiC,CAAA;IACjC,2CAA+B,CAAA;IAC/B,6DAAiD,CAAA;IACjD,iDAAqC,CAAA;IACrC,mEAAuD,CAAA;IACvD,uCAA2B,CAAA,CAAC,0EAA0E;AACxG,CAAC,EA9BW,QAAQ,wBAAR,QAAQ,QA8BnB","file":"expression/ExprKind.js","sourcesContent":["export enum ExprKind {\n FUNCTION = \"FUNCTION\",\n FUNCTION_ARGUMENTS = \"FUNCTION_ARGUMENTS\",\n ARRAY = \"ARRAY\",\n METHOD_CALL = \"METHOD_CALL\",\n PARENTHESIS = \"PARENTHESIS\",\n NUM_DIVIDE = \"NUM_DIVIDE\",\n NUM_MULTIPLY = \"NUM_MULTIPLY\",\n NUM_PLUS = \"NUM_PLUS\",\n NUM_MINUS = \"NUM_MINUS\",\n NUM_POWER = \"POWER\",\n NUM_UNARY_MINUS = \"UNARY_MINUS\",\n NUM_LITERAL = \"NUM_LITERAL\",\n REF_ELEMENT = \"REF_ELEMENT\",\n REF_PROPERTY = \"REF_PROPERTY\",\n STR_CONCAT = \"STR_CONCAT\",\n STR_LITERAL = \"STR_LITERAL\",\n AND = \"AND\",\n OR = \"OR\",\n XOR = \"XOR\",\n NOT = \"NOT\",\n BOOLEAN_LITERAL = \"BOOLEAN_LITERAL\",\n LOGICAL_LITERAL = \"LOGICAL_LITERAL\",\n CMP_EQUALS = \"CMP_EQUALS\",\n CMP_NOT_EQUALS = \"CMP_NOT_EQUALS\",\n CMP_LESS_THAN = \"CMP_LESS_THAN\",\n CMP_LESS_THAN_OR_EQUAL = \"CMP_LESS_THAN_OR_EQUAL\",\n CMP_GREATER_THAN = \"CMP_GREATER_THAN\",\n CMP_GREATER_THAN_OR_EQUAL = \"CMP_GREATER_THAN_OR_EQUAL\",\n PARSE_ERROR = \"PARSE_ERROR\" /* to be used when no expr was compiled due to a parse/validation error */,\n}\n"]}
@@ -1,23 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AndExpr = void 0;
4
- const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
- const Expr2_js_1 = require("../Expr2.js");
4
+ const BinaryBooleanOpExpr_js_1 = require("./BinaryBooleanOpExpr.js");
6
5
  const ExprKind_js_1 = require("../ExprKind.js");
7
- const Types_js_1 = require("../../type/Types.js");
8
- class AndExpr extends Expr2_js_1.Expr2 {
6
+ class AndExpr extends BinaryBooleanOpExpr_js_1.BinaryBooleanOpExpr {
9
7
  constructor(left, right) {
10
- super(ExprKind_js_1.ExprKind.BOOLEAN_AND, left, right);
11
- }
12
- calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
- return BooleanValue_js_1.BooleanValue.of(leftOperand.getValue() && rightOperand.getValue());
8
+ super(ExprKind_js_1.ExprKind.AND, "and", left, right);
14
9
  }
15
10
  buildExprString(builder) {
16
11
  builder.appendExpr(this.left).appendString(" && ").appendExpr(this.right);
17
12
  }
18
- getType() {
19
- return Types_js_1.Type.BOOLEAN;
20
- }
21
13
  }
22
14
  exports.AndExpr = AndExpr;
23
15
  //# sourceMappingURL=AndExpr.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/boolean/AndExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAI3C,MAAa,OAAQ,SAAQ,gBAA+C;IAC1E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,OAAO,8BAAY,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AArBD,0BAqBC","file":"expression/boolean/AndExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.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 { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class AndExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_AND, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(leftOperand.getValue() && rightOperand.getValue());\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" && \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/boolean/AndExpr.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAC/D,gDAA0C;AAM1C,MAAa,OAAQ,SAAQ,4CAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,sBAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF;AAXD,0BAWC","file":"expression/boolean/AndExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class AndExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.AND, \"and\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" && \").appendExpr(this.right);\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinaryBooleanOpExpr = void 0;
4
+ const Expr2_js_1 = require("../Expr2.js");
5
+ const Types_js_1 = require("../../type/Types.js");
6
+ class BinaryBooleanOpExpr extends Expr2_js_1.Expr2 {
7
+ constructor(kind, method, left, right) {
8
+ super(kind, left, right);
9
+ this.method = method;
10
+ }
11
+ calculateResult(ctx, localCtx, leftOperand, rightOperand) {
12
+ return leftOperand[this.method].call(leftOperand, rightOperand);
13
+ }
14
+ getType() {
15
+ if (Types_js_1.Types.isLogical(this.left.getType()) ||
16
+ Types_js_1.Types.isLogical(this.right.getType())) {
17
+ return Types_js_1.Type.LOGICAL;
18
+ }
19
+ return Types_js_1.Type.BOOLEAN;
20
+ }
21
+ }
22
+ exports.BinaryBooleanOpExpr = BinaryBooleanOpExpr;
23
+ //# sourceMappingURL=BinaryBooleanOpExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/BinaryBooleanOpExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAKpC,kDAAkD;AAKlD,MAAsB,mBAAoB,SAAQ,gBAIjD;IAGC,YACE,IAAc,EACd,MAAc,EACd,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAwC,EACxC,YAAyC;QAEzC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,IACE,gBAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,gBAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACrC;YACA,OAAO,eAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAnCD,kDAmCC","file":"expression/boolean/BinaryBooleanOpExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.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 { Type, Types } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\n\nexport abstract class BinaryBooleanOpExpr extends Expr2<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n private readonly method: string;\n\n constructor(\n kind: ExprKind,\n method: string,\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(kind, left, right);\n this.method = method;\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue | LogicalValue,\n rightOperand: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return leftOperand[this.method].call(leftOperand, rightOperand);\n }\n\n getType(): ExprType {\n if (\n Types.isLogical(this.left.getType()) ||\n Types.isLogical(this.right.getType())\n ) {\n return Type.LOGICAL;\n }\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogicalLiteralExpr = void 0;
4
+ const LiteralExpr_js_1 = require("../LiteralExpr.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
6
+ const Types_js_1 = require("../../type/Types.js");
7
+ const LogicalValue_js_1 = require("../../value/LogicalValue.js");
8
+ class LogicalLiteralExpr extends LiteralExpr_js_1.LiteralExpr {
9
+ constructor(value) {
10
+ super(ExprKind_js_1.ExprKind.LOGICAL_LITERAL, value);
11
+ }
12
+ calculateResult(ctx) {
13
+ return LogicalValue_js_1.LogicalValue.of(this.value);
14
+ }
15
+ buildExprString(builder) {
16
+ switch (this.value) {
17
+ case LogicalValue_js_1.LogicalValue.UNKNOWN_VALUE:
18
+ builder.appendString(LogicalValue_js_1.LogicalValue.UNKNOWN_VALUE);
19
+ break;
20
+ case true:
21
+ builder.appendString("TRUE");
22
+ break;
23
+ case false:
24
+ builder.appendString("FALSE");
25
+ break;
26
+ default:
27
+ throw new Error("Cannot build exprString for logical value " + JSON.stringify(this));
28
+ }
29
+ }
30
+ getType() {
31
+ return Types_js_1.Type.LOGICAL;
32
+ }
33
+ }
34
+ exports.LogicalLiteralExpr = LogicalLiteralExpr;
35
+ //# sourceMappingURL=LogicalLiteralExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/LogicalLiteralExpr.ts"],"names":[],"mappings":";;;AAAA,sDAAgD;AAEhD,gDAA0C;AAG1C,kDAA2C;AAG3C,iEAAoE;AAEpE,MAAa,kBAAmB,SAAQ,4BAAkC;IACxE,YAAY,KAAc;QACxB,KAAK,CAAC,sBAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,8BAAY,CAAC,aAAa;gBAC7B,OAAO,CAAC,YAAY,CAAC,8BAAY,CAAC,aAAa,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACpE,CAAC;SACL;IACH,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAhCD,gDAgCC","file":"expression/boolean/LogicalLiteralExpr.js","sourcesContent":["import { LiteralExpr } from \"../LiteralExpr.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { Logical, LogicalValue } from \"../../value/LogicalValue\";\n\nexport class LogicalLiteralExpr extends LiteralExpr<Logical, LogicalValue> {\n constructor(value: Logical) {\n super(ExprKind.LOGICAL_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): ExprEvalError | LogicalValue {\n return LogicalValue.of(this.value);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n switch (this.value) {\n case LogicalValue.UNKNOWN_VALUE:\n builder.appendString(LogicalValue.UNKNOWN_VALUE);\n break;\n case true:\n builder.appendString(\"TRUE\");\n break;\n case false:\n builder.appendString(\"FALSE\");\n break;\n default:\n throw new Error(\n \"Cannot build exprString for logical value \" + JSON.stringify(this)\n );\n }\n }\n\n getType(): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NotExpr = void 0;
4
- const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
4
  const Expr1_js_1 = require("../Expr1.js");
6
5
  const ExprKind_js_1 = require("../ExprKind.js");
7
- const Types_js_1 = require("../../type/Types.js");
8
6
  class NotExpr extends Expr1_js_1.Expr1 {
9
7
  constructor(sub) {
10
- super(ExprKind_js_1.ExprKind.BOOLEAN_NOT, sub);
8
+ super(ExprKind_js_1.ExprKind.NOT, sub);
11
9
  }
12
10
  calculateResult(ctx, localCtx, subExpressionResult) {
13
- return BooleanValue_js_1.BooleanValue.of(!subExpressionResult.getValue());
11
+ return subExpressionResult.not();
14
12
  }
15
13
  buildExprString(builder) {
16
14
  builder.appendString("!").appendExpr(this.sub);
17
15
  }
18
16
  getType() {
19
- return Types_js_1.Type.BOOLEAN;
17
+ return this.sub.getType();
20
18
  }
21
19
  }
22
20
  exports.NotExpr = NotExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/boolean/NotExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AAEpC,gDAA0C;AAG1C,kDAA2C;AAI3C,MAAa,OAAQ,SAAQ,gBAAiC;IAC5D,YAAY,GAAuB;QACjC,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,mBAAiC;QAEjC,OAAO,8BAAY,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApBD,0BAoBC","file":"expression/boolean/NotExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class NotExpr extends Expr1<BooleanValue, BooleanValue> {\n constructor(sub: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_NOT, sub);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(!subExpressionResult.getValue());\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendString(\"!\").appendExpr(this.sub);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/boolean/NotExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAEpC,gDAA0C;AAQ1C,MAAa,OAAQ,SAAQ,gBAG5B;IACC,YAAY,GAAsC;QAChD,KAAK,CAAC,sBAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,mBAAgD;QAEhD,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF;AAvBD,0BAuBC","file":"expression/boolean/NotExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\n\nexport class NotExpr extends Expr1<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n constructor(sub: Expr<BooleanValue | LogicalValue>) {\n super(ExprKind.NOT, sub);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return subExpressionResult.not();\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendString(\"!\").appendExpr(this.sub);\n }\n\n getType(): ExprType {\n return this.sub.getType();\n }\n}\n"]}
@@ -1,23 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OrExpr = void 0;
4
- const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
- const Expr2_js_1 = require("../Expr2.js");
4
+ const BinaryBooleanOpExpr_js_1 = require("./BinaryBooleanOpExpr.js");
6
5
  const ExprKind_js_1 = require("../ExprKind.js");
7
- const Types_js_1 = require("../../type/Types.js");
8
- class OrExpr extends Expr2_js_1.Expr2 {
6
+ class OrExpr extends BinaryBooleanOpExpr_js_1.BinaryBooleanOpExpr {
9
7
  constructor(left, right) {
10
- super(ExprKind_js_1.ExprKind.BOOLEAN_OR, left, right);
11
- }
12
- calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
- return BooleanValue_js_1.BooleanValue.of(leftOperand.getValue() || rightOperand.getValue());
8
+ super(ExprKind_js_1.ExprKind.OR, "or", left, right);
14
9
  }
15
10
  buildExprString(builder) {
16
11
  builder.appendExpr(this.left).appendString(" || ").appendExpr(this.right);
17
12
  }
18
- getType() {
19
- return Types_js_1.Type.BOOLEAN;
20
- }
21
13
  }
22
14
  exports.OrExpr = OrExpr;
23
15
  //# sourceMappingURL=OrExpr.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/boolean/OrExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAI3C,MAAa,MAAO,SAAQ,gBAA+C;IACzE,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,OAAO,8BAAY,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AArBD,wBAqBC","file":"expression/boolean/OrExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.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 { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class OrExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_OR, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(leftOperand.getValue() || rightOperand.getValue());\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" || \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/boolean/OrExpr.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAC/D,gDAA0C;AAM1C,MAAa,MAAO,SAAQ,4CAAmB;IAC7C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,sBAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF;AAXD,wBAWC","file":"expression/boolean/OrExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class OrExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.OR, \"or\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" || \").appendExpr(this.right);\n }\n}\n"]}
@@ -1,24 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XorExpr = void 0;
4
- const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
- const Expr2_js_1 = require("../Expr2.js");
4
+ const BinaryBooleanOpExpr_js_1 = require("./BinaryBooleanOpExpr.js");
6
5
  const ExprKind_js_1 = require("../ExprKind.js");
7
- const Types_js_1 = require("../../type/Types.js");
8
- class XorExpr extends Expr2_js_1.Expr2 {
6
+ class XorExpr extends BinaryBooleanOpExpr_js_1.BinaryBooleanOpExpr {
9
7
  constructor(left, right) {
10
- super(ExprKind_js_1.ExprKind.BOOLEAN_XOR, left, right);
11
- }
12
- calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
- const left = leftOperand.getValue();
14
- const right = rightOperand.getValue();
15
- return BooleanValue_js_1.BooleanValue.of(left ? !right : right);
8
+ super(ExprKind_js_1.ExprKind.XOR, "xor", left, right);
16
9
  }
17
10
  buildExprString(builder) {
18
- builder.appendExpr(this.left).appendString(" ><").appendExpr(this.right);
19
- }
20
- getType() {
21
- return Types_js_1.Type.BOOLEAN;
11
+ builder.appendExpr(this.left).appendString(" >< ").appendExpr(this.right);
22
12
  }
23
13
  }
24
14
  exports.XorExpr = XorExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/boolean/XorExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAI3C,MAAa,OAAQ,SAAQ,gBAA+C;IAC1E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAvBD,0BAuBC","file":"expression/boolean/XorExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.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 { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class XorExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_XOR, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n const left = leftOperand.getValue();\n const right = rightOperand.getValue();\n return BooleanValue.of(left ? !right : right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" ><\").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/boolean/XorExpr.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAC/D,gDAA0C;AAM1C,MAAa,OAAQ,SAAQ,4CAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,sBAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF;AAXD,0BAWC","file":"expression/boolean/XorExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class XorExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.XOR, \"xor\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" >< \").appendExpr(this.right);\n }\n}\n"]}
@@ -10,7 +10,7 @@ class EqualsExpr extends Expr2_js_1.Expr2 {
10
10
  super(ExprKind_js_1.ExprKind.CMP_EQUALS, left, right);
11
11
  }
12
12
  calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
- return new BooleanValue_js_1.BooleanValue(leftOperand.equals(rightOperand));
13
+ return BooleanValue_js_1.BooleanValue.of(leftOperand.equals(rightOperand));
14
14
  }
15
15
  buildExprString(builder) {
16
16
  builder.appendExpr(this.left).appendString(" == ").appendExpr(this.right);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/comparison/EqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAI3C,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;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,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\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.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 protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" == \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/comparison/EqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAI3C,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,8BAAY,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,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\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.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 BooleanValue.of(leftOperand.equals(rightOperand));\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" == \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -10,7 +10,7 @@ class NotEqualsExpr extends Expr2_js_1.Expr2 {
10
10
  super(ExprKind_js_1.ExprKind.CMP_NOT_EQUALS, left, right);
11
11
  }
12
12
  calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
- return new BooleanValue_js_1.BooleanValue(!leftOperand.equals(rightOperand));
13
+ return BooleanValue_js_1.BooleanValue.of(!leftOperand.equals(rightOperand));
14
14
  }
15
15
  buildExprString(builder) {
16
16
  builder.appendExpr(this.left).appendString(" != ").appendExpr(this.right);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/comparison/NotEqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAI3C,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;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,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\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.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 protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" != \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/comparison/NotEqualsExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AACpC,gDAA0C;AAI1C,iEAA2D;AAC3D,kDAA2C;AAI3C,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,8BAAY,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5D,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,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\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.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 BooleanValue.of(!leftOperand.equals(rightOperand));\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" != \").appendExpr(this.right);\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -63,9 +63,7 @@ class Func {
63
63
  * @param evaluatedArguments
64
64
  * @protected
65
65
  */
66
- transformArguments(evaluatedArguments) {
67
- return evaluatedArguments;
68
- }
66
+ transformArguments(callingExpr, evaluatedArguments) { }
69
67
  /**
70
68
  * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).
71
69
  * Generates an error if a required value is missing.
@@ -91,8 +89,8 @@ class Func {
91
89
  }
92
90
  }
93
91
  }
94
- const transformedArguments = this.transformArguments(result);
95
- return transformedArguments;
92
+ this.transformArguments(callingExpr, result);
93
+ return result;
96
94
  }
97
95
  checkArgs(args) {
98
96
  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 { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../util/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\";\nimport { FunctionExpr } from \"./FunctionExpr.js\";\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<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n this.checkArgumentTypes(argumentTypes, ctx);\n return this.getReturnType(argumentTypes.map((t) => t[1]));\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\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][1],\n () =>\n new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[i].name,\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n i,\n providedArgumentTypes[i][0]\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 callingExpr: FunctionExpr,\n funcArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const evaluatedArguments = this.getArgumentValues(callingExpr, 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 argValue;\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(callingExpr, argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n callingExpr: FunctionExpr,\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 callingExpr: FunctionExpr,\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(\n currentArg.name,\n currentArg.transformValue(callingExpr, provided[i])\n );\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 callingExpr.getTextSpan()\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"]}
1
+ {"version":3,"sources":["../../src/expression/function/Func.ts"],"names":[],"mappings":";;;AACA,iHAA2G;AAC3G,4EAA6D;AAE7D,4DAO8B;AAC9B,gDAA0C;AAC1C,kDAA4C;AAC5C,yGAAmG;AACnG,6GAAuG;AAMvG,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,aAAmD,EACnD,GAAG;QAEH,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAES,kBAAkB,CAC1B,qBAA2D,EAC3D,GAAG;QAEH,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,CAAC,CAAC,CAAC,EAC3B,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,CAAC,CAAC,CAAC,EAC3B,CAAC,EACD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5B,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,WAAyB,EACzB,QAAgD;QAEhD,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzE,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,QAAQ,CAAC;aACjB;YACD,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACjE,CAAC;IAYD;;;;;OAKG;IACO,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE,IACzD,CAAC;IAEV;;;;;OAKG;IACO,iBAAiB,CACzB,WAAyB,EACzB,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,CACR,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;iBACH;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,EACD,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;qBACH;iBACF;aACF;SACF;QACD,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,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;AAlLD,oBAkLC","file":"expression/function/Func.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../util/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\";\nimport { FunctionExpr } from \"./FunctionExpr.js\";\nimport { Expr } from \"../Expr\";\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<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n this.checkArgumentTypes(argumentTypes, ctx);\n return this.getReturnType(argumentTypes.map((t) => t[1]));\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\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][1],\n () =>\n new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[i].name,\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n i,\n providedArgumentTypes[i][0]\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 callingExpr: FunctionExpr,\n funcArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const evaluatedArguments = this.getArgumentValues(callingExpr, 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 argValue;\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(callingExpr, argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n callingExpr: FunctionExpr,\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 callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ): void {}\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 callingExpr: FunctionExpr,\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(\n currentArg.name,\n currentArg.transformValue(callingExpr, provided[i])\n );\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 callingExpr.getTextSpan()\n );\n }\n }\n }\n }\n this.transformArguments(callingExpr, 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"]}
@@ -22,6 +22,7 @@ const IF_js_1 = require("./impl/IF.js");
22
22
  const TONUMERIC_js_1 = require("./impl/TONUMERIC.js");
23
23
  const IfcExpressionFunctionConfigException_js_1 = require("../../error/IfcExpressionFunctionConfigException.js");
24
24
  const TOBOOLEAN_js_1 = require("./impl/TOBOOLEAN.js");
25
+ const TOLOGICAL_js_1 = require("./impl/TOLOGICAL.js");
25
26
  const builtinFunctions = new Map();
26
27
  function registerOrDie(fnKey, func) {
27
28
  if (builtinFunctions.has(fnKey)) {
@@ -72,11 +73,12 @@ registerFunc(new NOT_js_1.NOT());
72
73
  registerFunc(new TOSTRING_js_1.TOSTRING());
73
74
  registerFunc(new TONUMERIC_js_1.TONUMERIC(), "TONUMBER");
74
75
  registerFunc(new TOBOOLEAN_js_1.TOBOOLEAN());
76
+ registerFunc(new TOLOGICAL_js_1.TOLOGICAL(), "NOTFOUNDASUNKNOWN");
75
77
  registerFunc(new EXISTS_js_1.EXISTS());
76
- registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("AND", (left, right) => left && right));
77
- registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("OR", (left, right) => left || right));
78
- registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("XOR", (left, right) => (left ? !right : right)));
79
- registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("IMPLIES", (left, right) => !left || right));
78
+ registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("AND", "and"));
79
+ registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("OR", "or"));
80
+ registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("XOR", "xor"));
81
+ registerFunc(new FuncBooleanBinary_js_1.FuncBooleanBinary("IMPLIES", "implies"));
80
82
  registerFunc(new EQUALS_js_1.EQUALS());
81
83
  registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("GREATERTHAN", (cmp) => cmp > 0));
82
84
  registerFunc(new CompareMagnitudes_js_1.CompareMagnitudes("GREATERTHANOREQUAL", (cmp) => cmp >= 0));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"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","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import { Func } from \"./Func.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.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 { CHOOSE } from \"./impl/CHOOSE.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\";\nimport { IF } from \"./impl/IF.js\";\nimport { TONUMERIC } from \"./impl/TONUMERIC\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN\";\n\nconst builtinFunctions = new Map<string, Func>();\n\nfunction registerOrDie(fnKey: string, func: Func) {\n if (builtinFunctions.has(fnKey)) {\n throw new IfcExpressionFunctionConfigException(\n `cannot register function with name '${fnKey}': name already in use`\n );\n }\n builtinFunctions.set(fnKey, func);\n}\n\nfunction registerFunc(func: Func, ...aliases: Array<string>) {\n const fnKey = func.getName();\n const keys = [...aliases];\n keys.unshift(fnKey);\n keys.forEach((key) =>\n registerOrDie(IfcExpressionFunctions.normalizeName(key), func)\n );\n}\n\nexport class IfcExpressionFunctions {\n public static normalizeName(name: string): string {\n if (isNullish(name)) {\n return undefined;\n }\n return name.toUpperCase();\n }\n\n public static isBuiltinFunction(name: string) {\n if (isNullish(name)) {\n return false;\n }\n return builtinFunctions.has(this.normalizeName(name));\n }\n\n public static getFunction(name: string): Func {\n if (isNullish(name)) {\n return undefined;\n }\n return builtinFunctions.get(this.normalizeName(name));\n }\n}\n\nregisterFunc(new MAP());\nregisterFunc(new CHOOSE());\nregisterFunc(new IF());\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 TONUMERIC(), \"TONUMBER\");\nregisterFunc(new TOBOOLEAN());\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));\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":";;;AACA,4EAA6D;AAC7D,0CAAoC;AACpC,8CAAwC;AACxC,sFAAgF;AAChF,0DAAoD;AACpD,oDAA8C;AAC9C,4CAAsC;AACtC,sEAAgE;AAChE,0CAAoC;AACpC,gDAA0C;AAC1C,gEAA0D;AAC1D,kDAAkD;AAClD,oDAA8C;AAC9C,gDAA0C;AAC1C,gDAA0C;AAC1C,sEAAgE;AAChE,gEAA0D;AAC1D,wCAAkC;AAClC,sDAAgD;AAChD,iHAA2G;AAC3G,sDAAgD;AAChD,sDAAgD;AAEhD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEjD,SAAS,aAAa,CAAC,KAAa,EAAE,IAAU;IAC9C,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC/B,MAAM,IAAI,8EAAoC,CAC5C,uCAAuC,KAAK,wBAAwB,CACrE,CAAC;KACH;IACD,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,GAAG,OAAsB;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,aAAa,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,MAAa,sBAAsB;IAC1B,MAAM,CAAC,aAAa,CAAC,IAAY;QACtC,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAY;QAC1C,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;CACF;AArBD,wDAqBC;AAED,YAAY,CAAC,IAAI,YAAG,EAAE,CAAC,CAAC;AACxB,YAAY,CAAC,IAAI,kBAAM,EAAE,CAAC,CAAC;AAC3B,YAAY,CAAC,IAAI,UAAE,EAAE,CAAC,CAAC;AACvB,YAAY,CAAC,IAAI,gBAAK,EAAE,CAAC,CAAC;AAC1B,YAAY,CAAC,IAAI,wDAAyB,CAAC,MAAM,EAAE,eAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,YAAY,CAAC,IAAI,wDAAyB,CAAC,MAAM,EAAE,eAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,YAAY,CAAC,IAAI,wDAAyB,CAAC,UAAU,EAAE,eAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,YAAY,CAAC,IAAI,wDAAyB,CAAC,aAAa,EAAE,eAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,YAAY,CACV,IAAI,wDAAyB,CAC3B,OAAO,EACP,gBAAK,CAAC,EAAE,CAAC,eAAI,CAAC,MAAM,EAAE,eAAI,CAAC,OAAO,EAAE,eAAI,CAAC,OAAO,EAAE,eAAI,CAAC,KAAK,CAAC,CAC9D,CACF,CAAC;AACF,YAAY,CAAC,IAAI,4BAAW,EAAE,CAAC,CAAC;AAChC,YAAY,CAAC,IAAI,sBAAQ,EAAE,CAAC,CAAC;AAC7B,YAAY,CAAC,IAAI,cAAI,EAAE,CAAC,CAAC;AACzB,YAAY,CAAC,IAAI,YAAG,EAAE,CAAC,CAAC;AACxB,YAAY,CAAC,IAAI,sBAAQ,EAAE,CAAC,CAAC;AAC7B,YAAY,CAAC,IAAI,wBAAS,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,wBAAS,EAAE,CAAC,CAAC;AAC9B,YAAY,CAAC,IAAI,wBAAS,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,kBAAM,EAAE,CAAC,CAAC;AAC3B,YAAY,CAAC,IAAI,wCAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,wCAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,wCAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,wCAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,kBAAM,EAAE,CAAC,CAAC;AAC3B,YAAY,CAAC,IAAI,wCAAiB,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,YAAY,CAAC,IAAI,wCAAiB,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAY,CAAC,IAAI,wCAAiB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,CAAC,IAAI,wCAAiB,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,CAAC,IAAI,kCAAc,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,kCAAc,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,kCAAc,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,YAAY,CAAC,IAAI,kCAAc,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,kCAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,kCAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import { Func } from \"./Func.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.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 { CHOOSE } from \"./impl/CHOOSE.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\";\nimport { IF } from \"./impl/IF.js\";\nimport { TONUMERIC } from \"./impl/TONUMERIC\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN\";\nimport { TOLOGICAL } from \"./impl/TOLOGICAL\";\n\nconst builtinFunctions = new Map<string, Func>();\n\nfunction registerOrDie(fnKey: string, func: Func) {\n if (builtinFunctions.has(fnKey)) {\n throw new IfcExpressionFunctionConfigException(\n `cannot register function with name '${fnKey}': name already in use`\n );\n }\n builtinFunctions.set(fnKey, func);\n}\n\nfunction registerFunc(func: Func, ...aliases: Array<string>) {\n const fnKey = func.getName();\n const keys = [...aliases];\n keys.unshift(fnKey);\n keys.forEach((key) =>\n registerOrDie(IfcExpressionFunctions.normalizeName(key), func)\n );\n}\n\nexport class IfcExpressionFunctions {\n public static normalizeName(name: string): string {\n if (isNullish(name)) {\n return undefined;\n }\n return name.toUpperCase();\n }\n\n public static isBuiltinFunction(name: string) {\n if (isNullish(name)) {\n return false;\n }\n return builtinFunctions.has(this.normalizeName(name));\n }\n\n public static getFunction(name: string): Func {\n if (isNullish(name)) {\n return undefined;\n }\n return builtinFunctions.get(this.normalizeName(name));\n }\n}\n\nregisterFunc(new MAP());\nregisterFunc(new CHOOSE());\nregisterFunc(new IF());\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 TONUMERIC(), \"TONUMBER\");\nregisterFunc(new TOBOOLEAN());\nregisterFunc(new TOLOGICAL(), \"NOTFOUNDASUNKNOWN\");\nregisterFunc(new EXISTS());\nregisterFunc(new FuncBooleanBinary(\"AND\", \"and\"));\nregisterFunc(new FuncBooleanBinary(\"OR\", \"or\"));\nregisterFunc(new FuncBooleanBinary(\"XOR\", \"xor\"));\nregisterFunc(new FuncBooleanBinary(\"IMPLIES\", \"implies\"));\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));\n"]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FuncArgLogicalOrBoolean = 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
+ const LogicalValue_js_1 = require("../../../value/LogicalValue.js");
9
+ class FuncArgLogicalOrBoolean extends FuncArgBase_js_1.FuncArgBase {
10
+ constructor(required, name, defaultValue) {
11
+ super(required, name, defaultValue);
12
+ }
13
+ getType() {
14
+ return Types_js_1.Types.or(Types_js_1.Type.BOOLEAN, Types_js_1.Type.LOGICAL);
15
+ }
16
+ transformForTypeCheck(callingExpr, invocationValue) {
17
+ const result = invocationValue.result;
18
+ const value = result.getValue();
19
+ if (LogicalValue_js_1.LogicalValue.isLogical(value)) {
20
+ return invocationValue;
21
+ }
22
+ return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Argument ${this.name} must be a boolean or logical, but was ${JSON.stringify(value)}`, value, callingExpr.getTextSpan());
23
+ }
24
+ }
25
+ exports.FuncArgLogicalOrBoolean = FuncArgLogicalOrBoolean;
26
+ //# sourceMappingURL=FuncArgLogicalOrBoolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/function/arg/FuncArgLogicalOrBoolean.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAE/C,+DAIiC;AACjC,mDAA6C;AAE7C,qDAAqD;AAGrD,oEAA8D;AAE9D,MAAa,uBAAwB,SAAQ,4BAE5C;IACC,YACE,QAAiB,EACjB,IAAY,EACZ,YAA0C;QAE1C,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,gBAAK,CAAC,EAAE,CAAC,eAAI,CAAC,OAAO,EAAE,eAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAES,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,8BAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACjC,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,wCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,YACE,IAAI,CAAC,IACP,0CAA0C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EACjE,KAAK,EACL,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;IACJ,CAAC;CACF;AAjCD,0DAiCC","file":"expression/function/arg/FuncArgLogicalOrBoolean.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, Types } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\n\nexport class FuncArgLogicalOrBoolean extends FuncArgBase<\n BooleanValue | LogicalValue\n> {\n constructor(\n required: boolean,\n name: string,\n defaultValue?: BooleanValue | LogicalValue\n ) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Types.or(Type.BOOLEAN, Type.LOGICAL);\n }\n\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (LogicalValue.isLogical(value)) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${\n this.name\n } must be a boolean or logical, but was ${JSON.stringify(value)}`,\n value,\n callingExpr.getTextSpan()\n );\n }\n}\n"]}