ifc-expressions 2.0.1-beta.2 → 2.0.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IfcExpression.d.ts +5 -4
- package/dist/cjs/IfcExpression.js +9 -14
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/compiler/ExprManager.js +4 -4
- package/dist/cjs/compiler/ExprManager.js.map +1 -1
- package/dist/cjs/compiler/ExprToTextInputLinker.js +6 -6
- package/dist/cjs/compiler/ExprToTextInputLinker.js.map +1 -1
- package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +2 -2
- package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js +2 -2
- package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -1
- package/dist/cjs/error/mapper/SyntaxErrorMapper.js +2 -2
- package/dist/cjs/error/mapper/SyntaxErrorMapper.js.map +1 -1
- package/dist/cjs/error/mapper/ValidationExceptionMapper.js +2 -2
- package/dist/cjs/error/mapper/ValidationExceptionMapper.js.map +1 -1
- package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +2 -2
- package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -1
- package/dist/cjs/expression/Expr.js.map +1 -1
- package/dist/cjs/expression/ExprBase.js +2 -2
- package/dist/cjs/expression/ExprBase.js.map +1 -1
- package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/cjs/expression/ExprFacade.js +38 -0
- package/dist/cjs/expression/ExprFacade.js.map +1 -0
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +2 -2
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/impl/IF.js +5 -5
- package/dist/cjs/expression/function/impl/IF.js.map +1 -1
- package/dist/cjs/postprocess/ExprVisitor.js.map +1 -1
- package/dist/cjs/postprocess/ExprWalker.js.map +1 -1
- package/dist/compiler/ExprManager.d.ts +1 -1
- package/dist/compiler/ExprToTextInputLinker.d.ts +2 -2
- package/dist/expression/Expr.d.ts +1 -1
- package/dist/expression/ExprBase.d.ts +1 -1
- package/dist/expression/ExprEvalResult.d.ts +1 -1
- package/dist/expression/ExprFacade.d.ts +13 -0
- package/dist/gen/parser/IfcExpressionListener.d.ts +26 -26
- package/dist/gen/parser/IfcExpressionVisitor.d.ts +26 -26
- package/dist/mjs/IfcExpression.js +6 -12
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/compiler/ExprManager.js +2 -2
- package/dist/mjs/compiler/ExprManager.js.map +1 -1
- package/dist/mjs/compiler/ExprToTextInputLinker.js +3 -3
- package/dist/mjs/compiler/ExprToTextInputLinker.js.map +1 -1
- package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +1 -1
- package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js +1 -1
- package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -1
- package/dist/mjs/error/mapper/SyntaxErrorMapper.js +1 -1
- package/dist/mjs/error/mapper/SyntaxErrorMapper.js.map +1 -1
- package/dist/mjs/error/mapper/ValidationExceptionMapper.js +1 -1
- package/dist/mjs/error/mapper/ValidationExceptionMapper.js.map +1 -1
- package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +1 -1
- package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -1
- package/dist/mjs/expression/Expr.js.map +1 -1
- package/dist/mjs/expression/ExprBase.js +1 -1
- package/dist/mjs/expression/ExprBase.js.map +1 -1
- package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/mjs/expression/ExprFacade.js +34 -0
- package/dist/mjs/expression/ExprFacade.js.map +1 -0
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/impl/IF.js +2 -2
- package/dist/mjs/expression/function/impl/IF.js.map +1 -1
- package/dist/mjs/postprocess/ExprVisitor.js.map +1 -1
- package/dist/mjs/postprocess/ExprWalker.js.map +1 -1
- package/dist/postprocess/ExprVisitor.d.ts +1 -1
- package/dist/postprocess/ExprWalker.d.ts +1 -1
- package/package.json +2 -1
package/dist/IfcExpression.d.ts
CHANGED
|
@@ -24,8 +24,9 @@ import type { BoxedValueTypes } from "./value/BoxedValueTypes.js";
|
|
|
24
24
|
import { ExprEvalError, ExprEvalResult, isExprEvalError, isExprEvalSuccess } from "./expression/ExprEvalResult.js";
|
|
25
25
|
import { ExprKind } from "./expression/ExprKind.js";
|
|
26
26
|
import { TypeManager } from "./compiler/TypeManager.js";
|
|
27
|
-
import { ExprToTextInputLinker } from "./compiler/ExprToTextInputLinker";
|
|
28
|
-
|
|
27
|
+
import { ExprToTextInputLinker } from "./compiler/ExprToTextInputLinker.js";
|
|
28
|
+
import { ExprFacade } from "./expression/ExprFacade.js";
|
|
29
|
+
export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, ExpressionValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, ExprCompiler, ExprKind, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, ExprEvalResult, ExprEvalError, isExprEvalError, isExprEvalSuccess, ExprToTextInputLinker, ExprFacade, };
|
|
29
30
|
export type { BoxedValueTypes };
|
|
30
31
|
export declare class IfcExpressionParseResult {
|
|
31
32
|
private readonly _input;
|
|
@@ -49,7 +50,7 @@ export declare class IfcExpression {
|
|
|
49
50
|
* @param parseResult
|
|
50
51
|
* @return the Expression (Expr), which can be evaluated to obtain its result.
|
|
51
52
|
*/
|
|
52
|
-
static compile(parseResult: IfcExpressionParseResult):
|
|
53
|
+
static compile(parseResult: IfcExpressionParseResult): ExprFacade<ExpressionValue>;
|
|
53
54
|
/**
|
|
54
55
|
* Evaluates the specified input expression and returns the evaluation result. The parse
|
|
55
56
|
* and compile steps are done internally.
|
|
@@ -61,5 +62,5 @@ export declare class IfcExpression {
|
|
|
61
62
|
static evaluate(expression: string, context?: IfcExpressionContext): ExprEvalResult<ExpressionValue>;
|
|
62
63
|
static formatError(input: string, error: ExprEvalError): string;
|
|
63
64
|
private static indent;
|
|
64
|
-
static evaluateExpression(expr:
|
|
65
|
+
static evaluateExpression(expr: ExprFacade<ExpressionValue>, context?: IfcExpressionContext): ExprEvalResult<ExpressionValue>;
|
|
65
66
|
}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IfcExpression = exports.IfcExpressionParseResult = exports.ExprToTextInputLinker = exports.isExprEvalSuccess = exports.isExprEvalError = exports.isNullish = exports.isPresent = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.ExprKind = exports.ExprCompiler = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.IfcElementAccessor = void 0;
|
|
6
|
+
exports.IfcExpression = exports.IfcExpressionParseResult = exports.ExprFacade = exports.ExprToTextInputLinker = exports.isExprEvalSuccess = exports.isExprEvalError = exports.isNullish = exports.isPresent = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.ExprKind = exports.ExprCompiler = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.IfcElementAccessor = void 0;
|
|
7
7
|
const antlr4_1 = require("antlr4");
|
|
8
8
|
const ExprCompiler_js_1 = require("./compiler/ExprCompiler.js");
|
|
9
9
|
Object.defineProperty(exports, "ExprCompiler", { enumerable: true, get: function () { return ExprCompiler_js_1.ExprCompiler; } });
|
|
@@ -49,8 +49,10 @@ Object.defineProperty(exports, "ExprKind", { enumerable: true, get: function ()
|
|
|
49
49
|
const ValidationException_js_1 = require("./error/ValidationException.js");
|
|
50
50
|
const ExceptionToExprEvalErrorMapper_js_1 = require("./error/ExceptionToExprEvalErrorMapper.js");
|
|
51
51
|
const NopContext_js_1 = require("./context/NopContext.js");
|
|
52
|
-
const
|
|
53
|
-
Object.defineProperty(exports, "ExprToTextInputLinker", { enumerable: true, get: function () { return
|
|
52
|
+
const ExprToTextInputLinker_js_1 = require("./compiler/ExprToTextInputLinker.js");
|
|
53
|
+
Object.defineProperty(exports, "ExprToTextInputLinker", { enumerable: true, get: function () { return ExprToTextInputLinker_js_1.ExprToTextInputLinker; } });
|
|
54
|
+
const ExprFacade_js_1 = require("./expression/ExprFacade.js");
|
|
55
|
+
Object.defineProperty(exports, "ExprFacade", { enumerable: true, get: function () { return ExprFacade_js_1.ExprFacade; } });
|
|
54
56
|
class IfcExpressionParseResult {
|
|
55
57
|
constructor(input, typeManager, exprContext) {
|
|
56
58
|
this._typeManager = typeManager;
|
|
@@ -116,8 +118,8 @@ class IfcExpression {
|
|
|
116
118
|
static compile(parseResult) {
|
|
117
119
|
const compiler = new ExprCompiler_js_1.ExprCompiler(parseResult.typeManager);
|
|
118
120
|
const expr = compiler.visit(parseResult.parseTree);
|
|
119
|
-
|
|
120
|
-
return expr;
|
|
121
|
+
ExprToTextInputLinker_js_1.ExprToTextInputLinker.linkTextToExpressions(parseResult.input, expr, compiler.getExprManager());
|
|
122
|
+
return new ExprFacade_js_1.ExprFacade(expr);
|
|
121
123
|
}
|
|
122
124
|
/**
|
|
123
125
|
* Evaluates the specified input expression and returns the evaluation result. The parse
|
|
@@ -134,7 +136,7 @@ class IfcExpression {
|
|
|
134
136
|
return (0, ExceptionToExprEvalErrorMapper_js_1.mapException)(errorListener.getException());
|
|
135
137
|
}
|
|
136
138
|
const compiledExpression = this.compile(parseResult);
|
|
137
|
-
return compiledExpression.evaluate(context
|
|
139
|
+
return compiledExpression.evaluate(context);
|
|
138
140
|
}
|
|
139
141
|
static formatError(input, error) {
|
|
140
142
|
const lines = ["** Error **"];
|
|
@@ -156,14 +158,7 @@ class IfcExpression {
|
|
|
156
158
|
.join("\n");
|
|
157
159
|
}
|
|
158
160
|
static evaluateExpression(expr, context = new NopContext_js_1.NopContext()) {
|
|
159
|
-
|
|
160
|
-
// if the expr was created by parsing an input, it has a textSpan set.
|
|
161
|
-
// If the expr was created programmatically, we have to generate its exprString once, which causes its
|
|
162
|
-
// textspan to be set.
|
|
163
|
-
// make sure we know the position
|
|
164
|
-
expr.toExprString();
|
|
165
|
-
}
|
|
166
|
-
return expr.evaluate(context, new Map());
|
|
161
|
+
return expr.evaluate(context);
|
|
167
162
|
}
|
|
168
163
|
}
|
|
169
164
|
exports.IfcExpression = IfcExpression;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":"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","file":"IfcExpression.js","sourcesContent":["import {\n CharStream,\n CommonTokenStream,\n ErrorListener,\n ParserRuleContext,\n ParseTreeWalker,\n Token,\n} from \"antlr4\";\nimport { ExprCompiler } from \"./compiler/ExprCompiler.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { IfcExpressionValidationListener } from \"./compiler/IfcExpressionValidationListener.js\";\n\nimport { isNullish, isPresent } from \"./util/IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { ExpressionValue } from \"./value/ExpressionValue.js\";\nimport type { BoxedValueTypes } from \"./value/BoxedValueTypes.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n isExprEvalError,\n isExprEvalSuccess,\n} from \"./expression/ExprEvalResult.js\";\nimport { ExprKind } from \"./expression/ExprKind.js\";\nimport { ValidationException } from \"./error/ValidationException.js\";\nimport { TypeManager } from \"./compiler/TypeManager.js\";\nimport { mapException } from \"./error/ExceptionToExprEvalErrorMapper.js\";\nimport { NopContext } from \"./context/NopContext.js\";\nimport { ExprToTextInputLinker } from \"./compiler/ExprToTextInputLinker\";\nimport { TextSpan } from \"./util/TextSpan\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n ExpressionValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprCompiler,\n ExprKind,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n ExprEvalResult,\n ExprEvalError,\n isExprEvalError,\n isExprEvalSuccess,\n ExprToTextInputLinker,\n};\n\nexport type { BoxedValueTypes };\n\nexport class IfcExpressionParseResult {\n private readonly _input: string;\n private readonly _typeManager: TypeManager;\n private readonly _parseTree: ParserRuleContext;\n\n constructor(input: string, typeManager: TypeManager, exprContext) {\n this._typeManager = typeManager;\n this._parseTree = exprContext;\n this._input = input;\n }\n\n get typeManager(): TypeManager {\n return this._typeManager;\n }\n\n get parseTree(): ParserRuleContext {\n return this._parseTree;\n }\n\n get input(): string {\n return this._input;\n }\n}\n\nexport class IfcExpression {\n /**\n * Parses the input and returns a parse result, which contains the parse tree, the type information per parse tree node, and the input.\n * @param input\n * @param errorListener\n * @return the parse result, which can subequently be compiled into an Expr using compile().\n */\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token | number>\n ): IfcExpressionParseResult {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n lexer.removeErrorListeners();\n parser.removeErrorListeners();\n const myErrorListener = new IfcExpressionErrorListener();\n if (isPresent(errorListener)) {\n lexer.addErrorListener(errorListener);\n parser.addErrorListener(errorListener);\n }\n lexer.addErrorListener(myErrorListener);\n parser.addErrorListener(myErrorListener);\n let expr;\n expr = parser.expr();\n const validationListener = new IfcExpressionValidationListener();\n if (!myErrorListener.isErrorOccurred()) {\n const walker = new ParseTreeWalker();\n try {\n walker.walk(validationListener, expr);\n } catch (e) {\n if (e instanceof ValidationException) {\n if (errorListener instanceof IfcExpressionErrorListener) {\n errorListener.validationException(e);\n }\n myErrorListener.validationException(e);\n }\n }\n }\n return new IfcExpressionParseResult(\n input,\n validationListener.getTypeManager(),\n expr\n );\n }\n\n /**\n * Compiles the specified parseResult into an Expr.\n * @param parseResult\n * @return the Expression (Expr), which can be evaluated to obtain its result.\n */\n public static compile(\n parseResult: IfcExpressionParseResult\n ): Expr<ExpressionValue> {\n const compiler = new ExprCompiler(parseResult.typeManager);\n const expr = compiler.visit(parseResult.parseTree);\n ExprToTextInputLinker.linkTextToExpressions(\n parseResult.input,\n expr,\n compiler.getExprManager()\n );\n return expr;\n }\n\n /**\n * Evaluates the specified input expression and returns the evaluation result. The parse\n * and compile steps are done internally.\n *\n * @param expression: the input expression\n * @param context: the context required for accessing the IFC model\n * @return the result (or an error object).\n */\n public static evaluate(\n expression: string,\n context: IfcExpressionContext = new NopContext()\n ): ExprEvalResult<ExpressionValue> {\n const errorListener = new IfcExpressionErrorListener();\n const parseResult = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n return mapException(errorListener.getException());\n }\n const compiledExpression = this.compile(parseResult);\n return compiledExpression.evaluate(context, new Map<string, any>());\n }\n\n public static formatError(input: string, error: ExprEvalError) {\n const lines = [\"** Error **\"];\n if (!isNullish(error[\"textSpan\"])) {\n const span: TextSpan = error[\"textSpan\"];\n const underlined = span.underline(input, \"^\");\n const startString = \"Input: \";\n const indented = this.indent(underlined, startString.length);\n const replaced = startString + indented.substr(startString.length);\n replaced.split(\"\\n\").forEach((line) => lines.push(line));\n }\n lines.push(\"Problem: \" + error.message);\n return lines.join(\"\\n\");\n }\n\n private static indent(s: string, by: number) {\n return s\n .split(\"\\n\")\n .map((line) => \" \".repeat(by) + line)\n .join(\"\\n\");\n }\n\n public static evaluateExpression(\n expr: Expr<ExpressionValue>,\n context: IfcExpressionContext = new NopContext()\n ) {\n if (isNullish(expr.getTextSpan())) {\n // if the expr was created by parsing an input, it has a textSpan set.\n // If the expr was created programmatically, we have to generate its exprString once, which causes its\n // textspan to be set.\n // make sure we know the position\n expr.toExprString();\n }\n return expr.evaluate(context, new Map());\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":"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","file":"IfcExpression.js","sourcesContent":["import {\n CharStream,\n CommonTokenStream,\n ErrorListener,\n ParserRuleContext,\n ParseTreeWalker,\n Token,\n} from \"antlr4\";\nimport { ExprCompiler } from \"./compiler/ExprCompiler.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { IfcExpressionValidationListener } from \"./compiler/IfcExpressionValidationListener.js\";\n\nimport { isNullish, isPresent } from \"./util/IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { ExpressionValue } from \"./value/ExpressionValue.js\";\nimport type { BoxedValueTypes } from \"./value/BoxedValueTypes.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n isExprEvalError,\n isExprEvalSuccess,\n} from \"./expression/ExprEvalResult.js\";\nimport { ExprKind } from \"./expression/ExprKind.js\";\nimport { ValidationException } from \"./error/ValidationException.js\";\nimport { TypeManager } from \"./compiler/TypeManager.js\";\nimport { mapException } from \"./error/ExceptionToExprEvalErrorMapper.js\";\nimport { NopContext } from \"./context/NopContext.js\";\nimport { ExprToTextInputLinker } from \"./compiler/ExprToTextInputLinker.js\";\nimport { TextSpan } from \"./util/TextSpan.js\";\nimport { ExprFacade } from \"./expression/ExprFacade\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n ExpressionValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprCompiler,\n ExprKind,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n ExprEvalResult,\n ExprEvalError,\n isExprEvalError,\n isExprEvalSuccess,\n ExprToTextInputLinker,\n ExprFacade,\n};\n\nexport type { BoxedValueTypes };\n\nexport class IfcExpressionParseResult {\n private readonly _input: string;\n private readonly _typeManager: TypeManager;\n private readonly _parseTree: ParserRuleContext;\n\n constructor(input: string, typeManager: TypeManager, exprContext) {\n this._typeManager = typeManager;\n this._parseTree = exprContext;\n this._input = input;\n }\n\n get typeManager(): TypeManager {\n return this._typeManager;\n }\n\n get parseTree(): ParserRuleContext {\n return this._parseTree;\n }\n\n get input(): string {\n return this._input;\n }\n}\n\nexport class IfcExpression {\n /**\n * Parses the input and returns a parse result, which contains the parse tree, the type information per parse tree node, and the input.\n * @param input\n * @param errorListener\n * @return the parse result, which can subequently be compiled into an Expr using compile().\n */\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token | number>\n ): IfcExpressionParseResult {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n lexer.removeErrorListeners();\n parser.removeErrorListeners();\n const myErrorListener = new IfcExpressionErrorListener();\n if (isPresent(errorListener)) {\n lexer.addErrorListener(errorListener);\n parser.addErrorListener(errorListener);\n }\n lexer.addErrorListener(myErrorListener);\n parser.addErrorListener(myErrorListener);\n let expr;\n expr = parser.expr();\n const validationListener = new IfcExpressionValidationListener();\n if (!myErrorListener.isErrorOccurred()) {\n const walker = new ParseTreeWalker();\n try {\n walker.walk(validationListener, expr);\n } catch (e) {\n if (e instanceof ValidationException) {\n if (errorListener instanceof IfcExpressionErrorListener) {\n errorListener.validationException(e);\n }\n myErrorListener.validationException(e);\n }\n }\n }\n return new IfcExpressionParseResult(\n input,\n validationListener.getTypeManager(),\n expr\n );\n }\n\n /**\n * Compiles the specified parseResult into an Expr.\n * @param parseResult\n * @return the Expression (Expr), which can be evaluated to obtain its result.\n */\n public static compile(\n parseResult: IfcExpressionParseResult\n ): ExprFacade<ExpressionValue> {\n const compiler = new ExprCompiler(parseResult.typeManager);\n const expr = compiler.visit(parseResult.parseTree);\n ExprToTextInputLinker.linkTextToExpressions(\n parseResult.input,\n expr,\n compiler.getExprManager()\n );\n return new ExprFacade(expr);\n }\n\n /**\n * Evaluates the specified input expression and returns the evaluation result. The parse\n * and compile steps are done internally.\n *\n * @param expression: the input expression\n * @param context: the context required for accessing the IFC model\n * @return the result (or an error object).\n */\n public static evaluate(\n expression: string,\n context: IfcExpressionContext = new NopContext()\n ): ExprEvalResult<ExpressionValue> {\n const errorListener = new IfcExpressionErrorListener();\n const parseResult = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n return mapException(errorListener.getException());\n }\n const compiledExpression = this.compile(parseResult);\n return compiledExpression.evaluate(context);\n }\n\n public static formatError(input: string, error: ExprEvalError) {\n const lines = [\"** Error **\"];\n if (!isNullish(error[\"textSpan\"])) {\n const span: TextSpan = error[\"textSpan\"];\n const underlined = span.underline(input, \"^\");\n const startString = \"Input: \";\n const indented = this.indent(underlined, startString.length);\n const replaced = startString + indented.substr(startString.length);\n replaced.split(\"\\n\").forEach((line) => lines.push(line));\n }\n lines.push(\"Problem: \" + error.message);\n return lines.join(\"\\n\");\n }\n\n private static indent(s: string, by: number) {\n return s\n .split(\"\\n\")\n .map((line) => \" \".repeat(by) + line)\n .join(\"\\n\");\n }\n\n public static evaluateExpression(\n expr: ExprFacade<ExpressionValue>,\n context: IfcExpressionContext = new NopContext()\n ) {\n return expr.evaluate(context);\n }\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExprManager = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const ValidationException_js_1 = require("../error/ValidationException.js");
|
|
5
|
+
const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
|
|
6
6
|
class ExprManager {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.contextToExpr = new Map();
|
|
9
9
|
}
|
|
10
10
|
registerExprWithContext(expr, ctx) {
|
|
11
11
|
const otherCtx = this.contextToExpr.get(expr);
|
|
12
|
-
if (!(0,
|
|
13
|
-
throw new
|
|
12
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(otherCtx) && otherCtx !== ctx) {
|
|
13
|
+
throw new ValidationException_js_1.ValidationException(`Expression (of kind '${expr.getKind}') at line ${ctx.start.line}, column ${ctx.start.start} is already associated with a ParserRuleContext of type ${otherCtx.constructor.name}' cannot associate it with another one (${ctx.constructor.name} at ${ctx.start.line}:${ctx.start.start}')`, ctx);
|
|
14
14
|
}
|
|
15
15
|
this.contextToExpr.set(expr, ctx);
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/compiler/ExprManager.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/compiler/ExprManager.ts"],"names":[],"mappings":";;;AAEA,4EAAsE;AACtE,yEAA0D;AAE1D,MAAa,WAAW;IAGtB;QAFiB,kBAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE1D,CAAC;IAET,uBAAuB,CAAC,IAAe,EAAE,GAAG;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAA,iCAAS,EAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE;YAC5C,MAAM,IAAI,4CAAmB,CAC3B,wBAAwB,IAAI,CAAC,OAAO,cAAc,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,2DAA2D,QAAQ,CAAC,WAAW,CAAC,IAAI,2CAA2C,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAC1R,GAAG,CACJ,CAAC;SACH;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,IAAe;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAnBD,kCAmBC","file":"compiler/ExprManager.js","sourcesContent":["import { ParserRuleContext } from \"antlr4\";\nimport { Expr } from \"../expression/Expr.js\";\nimport { ValidationException } from \"../error/ValidationException.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\n\nexport class ExprManager {\n private readonly contextToExpr = new Map<Expr<any>, ParserRuleContext>();\n\n constructor() {}\n\n public registerExprWithContext(expr: Expr<any>, ctx) {\n const otherCtx = this.contextToExpr.get(expr);\n if (!isNullish(otherCtx) && otherCtx !== ctx) {\n throw new ValidationException(\n `Expression (of kind '${expr.getKind}') at line ${ctx.start.line}, column ${ctx.start.start} is already associated with a ParserRuleContext of type ${otherCtx.constructor.name}' cannot associate it with another one (${ctx.constructor.name} at ${ctx.start.line}:${ctx.start.start}')`,\n ctx\n );\n }\n this.contextToExpr.set(expr, ctx);\n }\n\n getContext(expr: Expr<any>) {\n return this.contextToExpr.get(expr);\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExprToTextInputLinker = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
class ExprToTextInputLinker extends
|
|
4
|
+
const ExprVisitor_js_1 = require("../postprocess/ExprVisitor.js");
|
|
5
|
+
const TextSpan_js_1 = require("../util/TextSpan.js");
|
|
6
|
+
const ExprWalker_js_1 = require("../postprocess/ExprWalker.js");
|
|
7
|
+
class ExprToTextInputLinker extends ExprVisitor_js_1.ExprVisitor {
|
|
8
8
|
constructor(input, exprManager) {
|
|
9
9
|
super();
|
|
10
10
|
this.exprManager = exprManager;
|
|
@@ -12,14 +12,14 @@ class ExprToTextInputLinker extends ExprVisitor_1.ExprVisitor {
|
|
|
12
12
|
}
|
|
13
13
|
static linkTextToExpressions(input, expr, exprManager) {
|
|
14
14
|
const visitor = new ExprToTextInputLinker(input, exprManager);
|
|
15
|
-
const walker = new
|
|
15
|
+
const walker = new ExprWalker_js_1.ExprWalker(visitor);
|
|
16
16
|
walker.walk(expr);
|
|
17
17
|
}
|
|
18
18
|
enterExpr(expr) {
|
|
19
19
|
const parserRuleContext = this.exprManager.getContext(expr);
|
|
20
20
|
// @ts-ignore
|
|
21
21
|
// @ts-ignore
|
|
22
|
-
const textSpan =
|
|
22
|
+
const textSpan = TextSpan_js_1.TextSpan.of(parserRuleContext.start.line, parserRuleContext.start.column + 1, parserRuleContext.stop.line, parserRuleContext.stop.column + (parserRuleContext.stop.text || "").length);
|
|
23
23
|
expr.setTextSpan(textSpan);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/compiler/ExprToTextInputLinker.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/compiler/ExprToTextInputLinker.ts"],"names":[],"mappings":";;;AAAA,kEAA4D;AAG5D,qDAA+C;AAC/C,gEAA0D;AAE1D,MAAa,qBAAsB,SAAQ,4BAAW;IAIpD,YAAY,KAAa,EAAE,WAAwB;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,qBAAqB,CAC1B,KAAa,EACb,IAAe,EACf,WAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,0BAAU,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,IAAe;QACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5D,aAAa;QACb,aAAa;QACb,MAAM,QAAQ,GAAG,sBAAQ,CAAC,EAAE,CAC1B,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAC5B,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAClC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAC3B,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAC3E,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;CACF;AAhCD,sDAgCC","file":"compiler/ExprToTextInputLinker.js","sourcesContent":["import { ExprVisitor } from \"../postprocess/ExprVisitor.js\";\nimport { ExprManager } from \"./ExprManager.js\";\nimport { Expr } from \"../expression/Expr.js\";\nimport { TextSpan } from \"../util/TextSpan.js\";\nimport { ExprWalker } from \"../postprocess/ExprWalker.js\";\n\nexport class ExprToTextInputLinker extends ExprVisitor {\n private exprManager: ExprManager;\n private input: string;\n\n constructor(input: string, exprManager: ExprManager) {\n super();\n this.exprManager = exprManager;\n this.input = input;\n }\n\n static linkTextToExpressions(\n input: string,\n expr: Expr<any>,\n exprManager: ExprManager\n ) {\n const visitor = new ExprToTextInputLinker(input, exprManager);\n const walker = new ExprWalker(visitor);\n walker.walk(expr);\n }\n\n enterExpr(expr: Expr<any>) {\n const parserRuleContext = this.exprManager.getContext(expr);\n // @ts-ignore\n // @ts-ignore\n const textSpan = TextSpan.of(\n parserRuleContext.start.line,\n parserRuleContext.start.column + 1,\n parserRuleContext.stop.line,\n parserRuleContext.stop.column + (parserRuleContext.stop.text || \"\").length\n );\n expr.setTextSpan(textSpan);\n }\n}\n"]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MissingFunctionArgumentExceptionMapper = void 0;
|
|
4
4
|
const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
|
|
5
|
-
const
|
|
5
|
+
const TextSpan_js_1 = require("../../util/TextSpan.js");
|
|
6
6
|
class MissingFunctionArgumentExceptionMapper {
|
|
7
7
|
mapException(exception) {
|
|
8
|
-
return new ExprEvalResult_js_1.ExprEvalMissingFunctionArgumentErrorObj(exception.message, exception.functionName, exception.argumentName, exception.index,
|
|
8
|
+
return new ExprEvalResult_js_1.ExprEvalMissingFunctionArgumentErrorObj(exception.message, exception.functionName, exception.argumentName, exception.index, TextSpan_js_1.TextSpan.of(exception.fromLine, exception.fromColumn + 1, exception.toLine, exception.toColumn + 1));
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
exports.MissingFunctionArgumentExceptionMapper = MissingFunctionArgumentExceptionMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/mapper/MissingFunctionArgumentExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAE5C,
|
|
1
|
+
{"version":3,"sources":["../../src/error/mapper/MissingFunctionArgumentExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAE5C,wDAAkD;AAElD,MAAa,sCAAsC;IAGjD,YAAY,CACV,SAA2C;QAE3C,OAAO,IAAI,2DAAuC,CAChD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,KAAK,EACf,sBAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,GAAG,CAAC,CACvB,CACF,CAAC;IACJ,CAAC;CACF;AAnBD,wFAmBC","file":"error/mapper/MissingFunctionArgumentExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalMissingFunctionArgumentErrorObj,\n ExprEvalValidationError,\n} from \"../../expression/ExprEvalResult.js\";\nimport { MissingFunctionArgumentException } from \"../MissingFunctionArgumentException.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\n\nexport class MissingFunctionArgumentExceptionMapper\n implements ExceptionToExprEvalErrorMapper<MissingFunctionArgumentException>\n{\n mapException(\n exception: MissingFunctionArgumentException\n ): ExprEvalValidationError {\n return new ExprEvalMissingFunctionArgumentErrorObj(\n exception.message,\n exception.functionName,\n exception.argumentName,\n exception.index,\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn + 1\n )\n );\n }\n}\n"]}
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NoSuchFunctionExceptionMapper = void 0;
|
|
4
4
|
const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
|
|
5
5
|
const NoSuchFunctionException_js_1 = require("../NoSuchFunctionException.js");
|
|
6
|
-
const
|
|
6
|
+
const TextSpan_js_1 = require("../../util/TextSpan.js");
|
|
7
7
|
class NoSuchFunctionExceptionMapper {
|
|
8
8
|
mapException(exception) {
|
|
9
9
|
const name = exception instanceof NoSuchFunctionException_js_1.NoSuchFunctionException
|
|
10
10
|
? exception.functionName
|
|
11
11
|
: exception.methodName;
|
|
12
|
-
return new ExprEvalResult_js_1.ExprEvalUnknownFunctionErrorObj(exception.message, name,
|
|
12
|
+
return new ExprEvalResult_js_1.ExprEvalUnknownFunctionErrorObj(exception.message, name, TextSpan_js_1.TextSpan.of(exception.fromLine, exception.fromColumn + 1, exception.toLine, exception.toColumn + 1));
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.NoSuchFunctionExceptionMapper = NoSuchFunctionExceptionMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/mapper/NoSuchFunctionExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAC5C,8EAAwE;AAExE,
|
|
1
|
+
{"version":3,"sources":["../../src/error/mapper/NoSuchFunctionExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAC5C,8EAAwE;AAExE,wDAAkD;AAElD,MAAa,6BAA6B;IAMxC,YAAY,CACV,SAA0D;QAE1D,MAAM,IAAI,GACR,SAAS,YAAY,oDAAuB;YAC1C,CAAC,CAAC,SAAS,CAAC,YAAY;YACxB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;QAC3B,OAAO,IAAI,mDAA+B,CACxC,SAAS,CAAC,OAAO,EACjB,IAAI,EACJ,sBAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,GAAG,CAAC,CACvB,CACF,CAAC;IACJ,CAAC;CACF;AAxBD,sEAwBC","file":"error/mapper/NoSuchFunctionExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalUnknownFunctionErrorObj,\n ExprEvalValidationError,\n} from \"../../expression/ExprEvalResult.js\";\nimport { NoSuchFunctionException } from \"../NoSuchFunctionException.js\";\nimport { NoSuchMethodException } from \"../NoSuchMethodException.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\n\nexport class NoSuchFunctionExceptionMapper\n implements\n ExceptionToExprEvalErrorMapper<\n NoSuchFunctionException | NoSuchMethodException\n >\n{\n mapException(\n exception: NoSuchFunctionException | NoSuchMethodException\n ): ExprEvalValidationError {\n const name =\n exception instanceof NoSuchFunctionException\n ? exception.functionName\n : exception.methodName;\n return new ExprEvalUnknownFunctionErrorObj(\n exception.message,\n name,\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn + 1\n )\n );\n }\n}\n"]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SyntaxErrorMapper = void 0;
|
|
4
4
|
const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
|
|
5
|
-
const
|
|
5
|
+
const TextSpan_js_1 = require("../../util/TextSpan.js");
|
|
6
6
|
class SyntaxErrorMapper {
|
|
7
7
|
mapException(exception) {
|
|
8
|
-
return new ExprEvalResult_js_1.ExprEvalParseErrorObj(ExprEvalResult_js_1.ExprEvalStatus.SYNTAX_ERROR, exception.message, "" + exception.offendingSymbol,
|
|
8
|
+
return new ExprEvalResult_js_1.ExprEvalParseErrorObj(ExprEvalResult_js_1.ExprEvalStatus.SYNTAX_ERROR, exception.message, "" + exception.offendingSymbol, TextSpan_js_1.TextSpan.of(exception.line, exception.column + 1, exception.line, exception.column + 1));
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
exports.SyntaxErrorMapper = SyntaxErrorMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/mapper/SyntaxErrorMapper.ts"],"names":[],"mappings":";;;AAEA,0EAI4C;AAC5C,
|
|
1
|
+
{"version":3,"sources":["../../src/error/mapper/SyntaxErrorMapper.ts"],"names":[],"mappings":";;;AAEA,0EAI4C;AAC5C,wDAAkD;AAElD,MAAa,iBAAiB;IAG5B,YAAY,CAAC,SAA+B;QAC1C,OAAO,IAAI,yCAAqB,CAC9B,kCAAc,CAAC,YAAY,EAC3B,SAAS,CAAC,OAAO,EACjB,EAAE,GAAG,SAAS,CAAC,eAAe,EAC9B,sBAAQ,CAAC,EAAE,CACT,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,MAAM,GAAG,CAAC,EACpB,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,MAAM,GAAG,CAAC,CACrB,CACF,CAAC;IACJ,CAAC;CACF;AAhBD,8CAgBC","file":"error/mapper/SyntaxErrorMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport { SyntaxErrorException } from \"../SyntaxErrorException.js\";\nimport {\n ExprEvalError,\n ExprEvalParseErrorObj,\n ExprEvalStatus,\n} from \"../../expression/ExprEvalResult.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\n\nexport class SyntaxErrorMapper\n implements ExceptionToExprEvalErrorMapper<SyntaxErrorException>\n{\n mapException(exception: SyntaxErrorException): ExprEvalError {\n return new ExprEvalParseErrorObj(\n ExprEvalStatus.SYNTAX_ERROR,\n exception.message,\n \"\" + exception.offendingSymbol,\n TextSpan.of(\n exception.line,\n exception.column + 1,\n exception.line,\n exception.column + 1\n )\n );\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ exports.ValidationExceptionMapper = void 0;
|
|
|
4
4
|
const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
|
|
5
5
|
const InvalidSyntaxException_js_1 = require("../InvalidSyntaxException.js");
|
|
6
6
|
const ExpressionTypeError_js_1 = require("../ExpressionTypeError.js");
|
|
7
|
-
const
|
|
7
|
+
const TextSpan_js_1 = require("../../util/TextSpan.js");
|
|
8
8
|
class ValidationExceptionMapper {
|
|
9
9
|
mapException(exception) {
|
|
10
10
|
let status = ExprEvalResult_js_1.ExprEvalStatus.VALIDATION_ERROR;
|
|
@@ -14,7 +14,7 @@ class ValidationExceptionMapper {
|
|
|
14
14
|
else if (exception instanceof ExpressionTypeError_js_1.ExpressionTypeError) {
|
|
15
15
|
status = ExprEvalResult_js_1.ExprEvalStatus.STATIC_TYPE_ERROR;
|
|
16
16
|
}
|
|
17
|
-
return new ExprEvalResult_js_1.ExprEvalValidationErrorObj(status, exception.message,
|
|
17
|
+
return new ExprEvalResult_js_1.ExprEvalValidationErrorObj(status, exception.message, TextSpan_js_1.TextSpan.of(exception.fromLine, exception.fromColumn + 1, exception.toLine, exception.toColumn + 1));
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.ValidationExceptionMapper = ValidationExceptionMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/mapper/ValidationExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAI4C;AAC5C,4EAAsE;AAEtE,sEAAgE;AAChE,
|
|
1
|
+
{"version":3,"sources":["../../src/error/mapper/ValidationExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAI4C;AAC5C,4EAAsE;AAEtE,sEAAgE;AAChE,wDAAkD;AAElD,MAAa,yBAAyB;IAMpC,YAAY,CACV,SAGuB;QAEvB,IAAI,MAAM,GAAG,kCAAc,CAAC,gBAAgB,CAAC;QAC7C,IAAI,SAAS,YAAY,kDAAsB,EAAE;YAC/C,MAAM,GAAG,kCAAc,CAAC,YAAY,CAAC;SACtC;aAAM,IAAI,SAAS,YAAY,4CAAmB,EAAE;YACnD,MAAM,GAAG,kCAAc,CAAC,iBAAiB,CAAC;SAC3C;QACD,OAAO,IAAI,8CAA0B,CACnC,MAAM,EACN,SAAS,CAAC,OAAO,EACjB,sBAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,GAAG,CAAC,CACvB,CACF,CAAC;IACJ,CAAC;CACF;AA7BD,8DA6BC","file":"error/mapper/ValidationExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalStatus,\n ExprEvalValidationError,\n ExprEvalValidationErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { InvalidSyntaxException } from \"../InvalidSyntaxException.js\";\nimport { ValidationException } from \"../ValidationException.js\";\nimport { ExpressionTypeError } from \"../ExpressionTypeError.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\n\nexport class ValidationExceptionMapper\n implements\n ExceptionToExprEvalErrorMapper<\n InvalidSyntaxException | ValidationException | ExpressionTypeError\n >\n{\n mapException(\n exception:\n | InvalidSyntaxException\n | ValidationException\n | ExpressionTypeError\n ): ExprEvalValidationError {\n let status = ExprEvalStatus.VALIDATION_ERROR;\n if (exception instanceof InvalidSyntaxException) {\n status = ExprEvalStatus.SYNTAX_ERROR;\n } else if (exception instanceof ExpressionTypeError) {\n status = ExprEvalStatus.STATIC_TYPE_ERROR;\n }\n return new ExprEvalValidationErrorObj(\n status,\n exception.message,\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn + 1\n )\n );\n }\n}\n"]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WrongFunctionArgumentTypeExceptionMapper = void 0;
|
|
4
4
|
const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
|
|
5
|
-
const
|
|
5
|
+
const TextSpan_js_1 = require("../../util/TextSpan.js");
|
|
6
6
|
class WrongFunctionArgumentTypeExceptionMapper {
|
|
7
7
|
mapException(exception) {
|
|
8
|
-
return new ExprEvalResult_js_1.ExprEvalWrongFunctionArgumentTypeErrorObj(exception.message, exception.functionName, exception.argumentName, exception.argumentIndex, exception.expectedType.getName(), exception.actualType.getName(),
|
|
8
|
+
return new ExprEvalResult_js_1.ExprEvalWrongFunctionArgumentTypeErrorObj(exception.message, exception.functionName, exception.argumentName, exception.argumentIndex, exception.expectedType.getName(), exception.actualType.getName(), TextSpan_js_1.TextSpan.of(exception.fromLine, exception.fromColumn + 1, exception.toLine, exception.toColumn));
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
exports.WrongFunctionArgumentTypeExceptionMapper = WrongFunctionArgumentTypeExceptionMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/mapper/WrongFunctionArgumentTypeExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAE5C,
|
|
1
|
+
{"version":3,"sources":["../../src/error/mapper/WrongFunctionArgumentTypeExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAE5C,wDAAkD;AAElD,MAAa,wCAAwC;IAGnD,YAAY,CACV,SAA6C;QAE7C,OAAO,IAAI,6DAAyC,CAClD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,aAAa,EACvB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,EAChC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,EAC9B,sBAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,CACnB,CACF,CAAC;IACJ,CAAC;CACF;AArBD,4FAqBC","file":"error/mapper/WrongFunctionArgumentTypeExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalValidationError,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { WrongFunctionArgumentTypeException } from \"../WrongFunctionArgumentTypeException.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\n\nexport class WrongFunctionArgumentTypeExceptionMapper\n implements ExceptionToExprEvalErrorMapper<WrongFunctionArgumentTypeException>\n{\n mapException(\n exception: WrongFunctionArgumentTypeException\n ): ExprEvalValidationError {\n return new ExprEvalWrongFunctionArgumentTypeErrorObj(\n exception.message,\n exception.functionName,\n exception.argumentName,\n exception.argumentIndex,\n exception.expectedType.getName(),\n exception.actualType.getName(),\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn\n )\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprEvalResult } from \"./ExprEvalResult.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { TextSpan } from \"../util/TextSpan\";\nimport { ExprStringBuilder } from \"./ExprStringBuilder.js\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n\n toExprString(builder?: ExprStringBuilder): string;\n getChildren(): Array<Expr<any>>;\n setTextSpan(ctx: TextSpan);\n getTextSpan(): TextSpan | undefined;\n getType(): ExprType;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprEvalResult } from \"./ExprEvalResult.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { TextSpan } from \"../util/TextSpan.js\";\nimport { ExprStringBuilder } from \"./ExprStringBuilder.js\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n\n toExprString(builder?: ExprStringBuilder): string;\n getChildren(): Array<Expr<any>>;\n setTextSpan(ctx: TextSpan);\n getTextSpan(): TextSpan | undefined;\n getType(): ExprType;\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExprBase = void 0;
|
|
4
4
|
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
5
|
-
const
|
|
5
|
+
const TextSpan_js_1 = require("../util/TextSpan.js");
|
|
6
6
|
const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
|
|
7
7
|
const ExprStringBuilder_js_1 = require("./ExprStringBuilder.js");
|
|
8
8
|
class ExprBase {
|
|
@@ -43,7 +43,7 @@ class ExprBase {
|
|
|
43
43
|
toExprString(builder = new ExprStringBuilder_js_1.ExprStringBuilder(0)) {
|
|
44
44
|
this.buildExprString(builder);
|
|
45
45
|
if ((0, IfcExpressionUtils_js_1.isNullish)(this.getTextSpan())) {
|
|
46
|
-
this.setTextSpan(
|
|
46
|
+
this.setTextSpan(TextSpan_js_1.TextSpan.of(1, builder.startPos + 1, 1, builder.endPos + 1));
|
|
47
47
|
}
|
|
48
48
|
return builder.build();
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,2DAM6B;AAG7B
|
|
1
|
+
{"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,2DAM6B;AAG7B,qDAA+C;AAC/C,yEAA0D;AAC1D,iEAA2D;AAE3D,MAAsB,QAAQ;IAI5B,YAAsB,QAAkB;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,GAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IASD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,uBAAuB,CAC/B,MAAyB;QAEzB,IAAI,IAAA,mCAAe,EAAC,MAAM,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBAC7B,OAAO,IAAI,kDAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,MAAM,EACN,SAAS,EACT,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;aACH;YACD,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,sCAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,KAAU;QAC5B,IAAI,CAAC,IAAA,iCAAS,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAA,iCAAS,EAAC,KAAK,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,OAAO,CACL,CAAC,IAAA,iCAAS,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,IAAA,iCAAS,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,UAA6B,IAAI,wCAAiB,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,WAAW,CACd,sBAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAC5D,CAAC;SACH;QACD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CAKF;AAzED,4BAyEC","file":"expression/ExprBase.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"./ExprEvalResult.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { TextSpan } from \"../util/TextSpan.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { ExprStringBuilder } from \"./ExprStringBuilder.js\";\n\nexport abstract class ExprBase<T> implements Expr<T> {\n private readonly exprKind: ExprKind;\n private textSpan?: TextSpan;\n\n protected constructor(exprKind: ExprKind) {\n this.exprKind = exprKind;\n }\n\n setTextSpan(ctx: TextSpan) {\n this.textSpan = ctx;\n }\n\n getTextSpan(): TextSpan | undefined {\n return this.textSpan;\n }\n\n abstract getChildren(): Array<Expr<any>>;\n\n abstract evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n\n getKind(): ExprKind {\n return this.exprKind;\n }\n\n protected wrapInResultIfNecessary(\n result: T | ExprEvalError\n ): ExprEvalResult<T> {\n if (isExprEvalError(result)) {\n if (!this.hasTextSpan(result)) {\n return new ExprEvalConsequentialError1Obj(\n this.getKind(),\n result,\n undefined,\n this.getTextSpan()\n );\n }\n return result;\n }\n return new ExprEvalSuccessObj(result);\n }\n\n private hasTextSpan(error: any): boolean {\n if (!isNullish(error[\"textSpan\"])) {\n return true;\n }\n const cause = error[\"cause\"];\n if (!isNullish(cause)) {\n return this.hasTextSpan(cause);\n }\n const leftCause = error[\"leftCause\"];\n const rightCause = error[\"rightCause\"];\n return (\n (isNullish(leftCause) ? false : this.hasTextSpan(leftCause)) ||\n (isNullish(rightCause) ? false : this.hasTextSpan(rightCause))\n );\n }\n\n toExprString(builder: ExprStringBuilder = new ExprStringBuilder(0)): string {\n this.buildExprString(builder);\n if (isNullish(this.getTextSpan())) {\n this.setTextSpan(\n TextSpan.of(1, builder.startPos + 1, 1, builder.endPos + 1)\n );\n }\n return builder.build();\n }\n\n protected abstract buildExprString(builder: ExprStringBuilder): void;\n\n abstract getType(): ExprType;\n}\n"]}
|
|
@@ -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\";\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 = 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"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExprFacade = void 0;
|
|
4
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
5
|
+
const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
|
|
6
|
+
class ExprFacade {
|
|
7
|
+
constructor(delegate) {
|
|
8
|
+
this.delegate = delegate;
|
|
9
|
+
}
|
|
10
|
+
evaluate(ctx) {
|
|
11
|
+
try {
|
|
12
|
+
let span = this.delegate.getTextSpan();
|
|
13
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(span)) {
|
|
14
|
+
this.delegate.toExprString();
|
|
15
|
+
}
|
|
16
|
+
return this.delegate.evaluate(ctx, new Map());
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
return new ExprEvalResult_js_1.ExprEvalErrorObj(this.delegate.getKind(), ExprEvalResult_js_1.ExprEvalStatus.ERROR, "Unexpected error occurred during expression evaluation, this is a bug - please report." +
|
|
20
|
+
((0, IfcExpressionUtils_js_1.isNullish)(e.message)
|
|
21
|
+
? ""
|
|
22
|
+
: "\nMessage of caught error is: " + e.message) +
|
|
23
|
+
"\nStacktrace:\n" +
|
|
24
|
+
e.stack, this.delegate.getTextSpan());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
getKind() {
|
|
28
|
+
return this.delegate.getKind();
|
|
29
|
+
}
|
|
30
|
+
getType() {
|
|
31
|
+
return this.delegate.getType();
|
|
32
|
+
}
|
|
33
|
+
toExprString() {
|
|
34
|
+
return this.delegate.toExprString();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ExprFacade = ExprFacade;
|
|
38
|
+
//# sourceMappingURL=ExprFacade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/expression/ExprFacade.ts"],"names":[],"mappings":";;;AAEA,2DAI6B;AAG7B,yEAA0D;AAE1D,MAAa,UAAU;IAGrB,YAAY,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,IAAI;YACF,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,IAAA,iCAAS,EAAC,IAAI,CAAC,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;SAC5D;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,oCAAgB,CACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EACvB,kCAAc,CAAC,KAAK,EACpB,wFAAwF;gBACtF,CAAC,IAAA,iCAAS,EAAC,CAAC,CAAC,OAAO,CAAC;oBACnB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,gCAAgC,GAAG,CAAC,CAAC,OAAO,CAAC;gBACjD,iBAAiB;gBACjB,CAAC,CAAC,KAAK,EACT,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC5B,CAAC;SACH;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;CACF;AAxCD,gCAwCC","file":"expression/ExprFacade.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport {\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\n\nexport class ExprFacade<T> {\n private readonly delegate: Expr<T>;\n\n constructor(delegate: Expr<T>) {\n this.delegate = delegate;\n }\n\n evaluate(ctx: IfcExpressionContext): ExprEvalResult<T> {\n try {\n let span = this.delegate.getTextSpan();\n if (isNullish(span)) {\n this.delegate.toExprString();\n }\n return this.delegate.evaluate(ctx, new Map<string, any>());\n } catch (e) {\n return new ExprEvalErrorObj(\n this.delegate.getKind(),\n ExprEvalStatus.ERROR,\n \"Unexpected error occurred during expression evaluation, this is a bug - please report.\" +\n (isNullish(e.message)\n ? \"\"\n : \"\\nMessage of caught error is: \" + e.message) +\n \"\\nStacktrace:\\n\" +\n e.stack,\n this.delegate.getTextSpan()\n );\n }\n }\n\n getKind(): ExprKind {\n return this.delegate.getKind();\n }\n\n getType(): ExprType {\n return this.delegate.getType();\n }\n\n toExprString(): string {\n return this.delegate.toExprString();\n }\n}\n"]}
|
|
@@ -18,7 +18,7 @@ const EXISTS_js_1 = require("./impl/EXISTS.js");
|
|
|
18
18
|
const EQUALS_js_1 = require("./impl/EQUALS.js");
|
|
19
19
|
const CompareMagnitudes_js_1 = require("./impl/CompareMagnitudes.js");
|
|
20
20
|
const ReplacePattern_js_1 = require("./impl/ReplacePattern.js");
|
|
21
|
-
const
|
|
21
|
+
const IF_js_1 = require("./impl/IF.js");
|
|
22
22
|
const builtinFunctions = new Map();
|
|
23
23
|
function registerFunc(func) {
|
|
24
24
|
builtinFunctions.set(IfcExpressionFunctions.normalizeName(func.getName()), func);
|
|
@@ -46,7 +46,7 @@ class IfcExpressionFunctions {
|
|
|
46
46
|
exports.IfcExpressionFunctions = IfcExpressionFunctions;
|
|
47
47
|
registerFunc(new MAP_js_1.MAP());
|
|
48
48
|
registerFunc(new CHOOSE_js_1.CHOOSE());
|
|
49
|
-
registerFunc(new
|
|
49
|
+
registerFunc(new IF_js_1.IF());
|
|
50
50
|
registerFunc(new ROUND_js_1.ROUND());
|
|
51
51
|
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("name", Types_js_1.Type.STRING));
|
|
52
52
|
registerFunc(new AttributeAccessorFunction_js_1.AttributeAccessorFunction("guid", Types_js_1.Type.STRING));
|