ifc-expressions 2.3.0 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +255 -30
- package/dist/IfcExpression.d.ts +24 -26
- package/dist/IfcExpressionErrorListener.d.ts +3 -3
- package/dist/IfcExpressionOptions.d.ts +4 -0
- package/dist/autocomplete/CompletionItem.d.ts +24 -0
- package/dist/autocomplete/IfcExpressionAutocomplete.d.ts +11 -0
- package/dist/builtin/BuiltinRuntimeValueConverter.d.ts +7 -0
- package/dist/builtin/BuiltinVariableRegistry.d.ts +50 -0
- package/dist/cjs/IfcExpression.js +112 -37
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/IfcExpressionErrorListener.js +3 -8
- package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/cjs/IfcExpressionOptions.js +3 -0
- package/dist/cjs/IfcExpressionOptions.js.map +1 -0
- package/dist/cjs/autocomplete/CompletionItem.js +3 -0
- package/dist/cjs/autocomplete/CompletionItem.js.map +1 -0
- package/dist/cjs/autocomplete/IfcExpressionAutocomplete.js +654 -0
- package/dist/cjs/autocomplete/IfcExpressionAutocomplete.js.map +1 -0
- package/dist/cjs/builtin/BuiltinRuntimeValueConverter.js +124 -0
- package/dist/cjs/builtin/BuiltinRuntimeValueConverter.js.map +1 -0
- package/dist/cjs/builtin/BuiltinVariableRegistry.js +405 -0
- package/dist/cjs/builtin/BuiltinVariableRegistry.js.map +1 -0
- package/dist/cjs/compiler/ExprCompiler.js +44 -41
- package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
- package/dist/cjs/compiler/ExprManager.js.map +1 -1
- package/dist/cjs/compiler/IfcExpressionValidationListener.js +85 -25
- package/dist/cjs/compiler/IfcExpressionValidationListener.js.map +1 -1
- package/dist/cjs/compiler/TypeManager.js.map +1 -1
- package/dist/cjs/context/IfcExpressionContext.js.map +1 -1
- package/dist/cjs/context/NopContext.js +3 -0
- package/dist/cjs/context/NopContext.js.map +1 -1
- package/dist/cjs/documentation/Documentation.js +11 -0
- package/dist/cjs/documentation/Documentation.js.map +1 -0
- package/dist/cjs/error/ExpressionTypeError.js.map +1 -1
- package/dist/cjs/error/IfcExpressionBuiltinConfigException.js +10 -0
- package/dist/cjs/error/IfcExpressionBuiltinConfigException.js.map +1 -0
- package/dist/cjs/error/InvalidSyntaxException.js.map +1 -1
- package/dist/cjs/error/NoSuchFunctionException.js.map +1 -1
- package/dist/cjs/error/NoSuchMemberException.js +13 -0
- package/dist/cjs/error/NoSuchMemberException.js.map +1 -0
- package/dist/cjs/error/ValidationException.js.map +1 -1
- package/dist/cjs/error/WrongFunctionArgumentTypeException.js.map +1 -1
- package/dist/cjs/expression/ExprKind.js +3 -0
- package/dist/cjs/expression/ExprKind.js.map +1 -1
- package/dist/cjs/expression/function/Func.js +18 -14
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/FuncArg.js +11 -5
- package/dist/cjs/expression/function/FuncArg.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +198 -42
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/impl/CHOOSE.js.map +1 -1
- package/dist/cjs/expression/function/impl/IF.js.map +1 -1
- package/dist/cjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/cjs/expression/function/impl/ReplacePattern.js +20 -2
- package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -1
- package/dist/cjs/expression/reference/BuiltinFunctionCallExpr.js +59 -0
- package/dist/cjs/expression/reference/BuiltinFunctionCallExpr.js.map +1 -0
- package/dist/cjs/expression/reference/BuiltinPropertyAccessExpr.js +34 -0
- package/dist/cjs/expression/reference/BuiltinPropertyAccessExpr.js.map +1 -0
- package/dist/cjs/expression/reference/BuiltinRootReferenceExpr.js +29 -0
- package/dist/cjs/expression/reference/BuiltinRootReferenceExpr.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionLexer.js +126 -104
- package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionListener.js +7 -4
- package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionParser.js +739 -682
- package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionVisitor.js +4 -4
- package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/type/ContextObjectType.js +45 -0
- package/dist/cjs/type/ContextObjectType.js.map +1 -0
- package/dist/cjs/type/Types.js +4 -6
- package/dist/cjs/type/Types.js.map +1 -1
- package/dist/cjs/value/ContextObjectValue.js +23 -0
- package/dist/cjs/value/ContextObjectValue.js.map +1 -0
- package/dist/cjs/value/ExpressionValue.js.map +1 -1
- package/dist/cjs/value/Value.js.map +1 -1
- package/dist/compiler/ExprCompiler.d.ts +8 -3
- package/dist/compiler/ExprManager.d.ts +1 -1
- package/dist/compiler/IfcExpressionValidationListener.d.ts +9 -3
- package/dist/compiler/TypeManager.d.ts +1 -1
- package/dist/context/IfcExpressionContext.d.ts +3 -4
- package/dist/context/NopContext.d.ts +1 -0
- package/dist/documentation/Documentation.d.ts +12 -0
- package/dist/error/ExpressionTypeError.d.ts +1 -1
- package/dist/error/IfcExpressionBuiltinConfigException.d.ts +3 -0
- package/dist/error/InvalidSyntaxException.d.ts +1 -1
- package/dist/error/NoSuchFunctionException.d.ts +1 -1
- package/dist/error/NoSuchMemberException.d.ts +6 -0
- package/dist/error/ValidationException.d.ts +1 -1
- package/dist/error/WrongFunctionArgumentTypeException.d.ts +1 -1
- package/dist/expression/ExprKind.d.ts +3 -0
- package/dist/expression/function/Func.d.ts +7 -21
- package/dist/expression/function/FuncArg.d.ts +6 -5
- package/dist/expression/function/IfcExpressionFunctions.d.ts +1 -0
- package/dist/expression/function/impl/CHOOSE.d.ts +1 -1
- package/dist/expression/function/impl/IF.d.ts +1 -1
- package/dist/expression/function/impl/MAP.d.ts +1 -1
- package/dist/expression/reference/BuiltinFunctionCallExpr.d.ts +19 -0
- package/dist/expression/reference/BuiltinPropertyAccessExpr.d.ts +15 -0
- package/dist/expression/reference/BuiltinRootReferenceExpr.d.ts +14 -0
- package/dist/gen/parser/IfcExpressionLexer.d.ts +9 -8
- package/dist/gen/parser/IfcExpressionListener.d.ts +89 -59
- package/dist/gen/parser/IfcExpressionParser.d.ts +192 -169
- package/dist/gen/parser/IfcExpressionVisitor.d.ts +51 -35
- package/dist/index.d.ts +2 -2
- package/dist/mjs/IfcExpression.js +104 -32
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/IfcExpressionErrorListener.js +3 -8
- package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/mjs/IfcExpressionOptions.js +2 -0
- package/dist/mjs/IfcExpressionOptions.js.map +1 -0
- package/dist/mjs/autocomplete/CompletionItem.js +2 -0
- package/dist/mjs/autocomplete/CompletionItem.js.map +1 -0
- package/dist/mjs/autocomplete/IfcExpressionAutocomplete.js +650 -0
- package/dist/mjs/autocomplete/IfcExpressionAutocomplete.js.map +1 -0
- package/dist/mjs/builtin/BuiltinRuntimeValueConverter.js +117 -0
- package/dist/mjs/builtin/BuiltinRuntimeValueConverter.js.map +1 -0
- package/dist/mjs/builtin/BuiltinVariableRegistry.js +399 -0
- package/dist/mjs/builtin/BuiltinVariableRegistry.js.map +1 -0
- package/dist/mjs/compiler/ExprCompiler.js +43 -40
- package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
- package/dist/mjs/compiler/ExprManager.js.map +1 -1
- package/dist/mjs/compiler/IfcExpressionValidationListener.js +85 -22
- package/dist/mjs/compiler/IfcExpressionValidationListener.js.map +1 -1
- package/dist/mjs/compiler/TypeManager.js.map +1 -1
- package/dist/mjs/context/IfcExpressionContext.js.map +1 -1
- package/dist/mjs/context/NopContext.js +3 -0
- package/dist/mjs/context/NopContext.js.map +1 -1
- package/dist/mjs/documentation/Documentation.js +7 -0
- package/dist/mjs/documentation/Documentation.js.map +1 -0
- package/dist/mjs/error/ExpressionTypeError.js.map +1 -1
- package/dist/mjs/error/IfcExpressionBuiltinConfigException.js +6 -0
- package/dist/mjs/error/IfcExpressionBuiltinConfigException.js.map +1 -0
- package/dist/mjs/error/InvalidSyntaxException.js.map +1 -1
- package/dist/mjs/error/NoSuchFunctionException.js.map +1 -1
- package/dist/mjs/error/NoSuchMemberException.js +9 -0
- package/dist/mjs/error/NoSuchMemberException.js.map +1 -0
- package/dist/mjs/error/ValidationException.js.map +1 -1
- package/dist/mjs/error/WrongFunctionArgumentTypeException.js.map +1 -1
- package/dist/mjs/expression/ExprKind.js +3 -0
- package/dist/mjs/expression/ExprKind.js.map +1 -1
- package/dist/mjs/expression/function/Func.js +18 -14
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/FuncArg.js +11 -5
- package/dist/mjs/expression/function/FuncArg.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +198 -42
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/impl/CHOOSE.js.map +1 -1
- package/dist/mjs/expression/function/impl/IF.js.map +1 -1
- package/dist/mjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/mjs/expression/function/impl/ReplacePattern.js +20 -2
- package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -1
- package/dist/mjs/expression/reference/BuiltinFunctionCallExpr.js +55 -0
- package/dist/mjs/expression/reference/BuiltinFunctionCallExpr.js.map +1 -0
- package/dist/mjs/expression/reference/BuiltinPropertyAccessExpr.js +30 -0
- package/dist/mjs/expression/reference/BuiltinPropertyAccessExpr.js.map +1 -0
- package/dist/mjs/expression/reference/BuiltinRootReferenceExpr.js +25 -0
- package/dist/mjs/expression/reference/BuiltinRootReferenceExpr.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionLexer.js +101 -104
- package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionListener.js +5 -3
- package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionParser.js +700 -670
- package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionVisitor.js +2 -3
- package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
- package/dist/mjs/index.js +1 -1
- package/dist/mjs/index.js.map +1 -1
- package/dist/mjs/type/ContextObjectType.js +41 -0
- package/dist/mjs/type/ContextObjectType.js.map +1 -0
- package/dist/mjs/type/Types.js +4 -6
- package/dist/mjs/type/Types.js.map +1 -1
- package/dist/mjs/value/ContextObjectValue.js +19 -0
- package/dist/mjs/value/ContextObjectValue.js.map +1 -0
- package/dist/mjs/value/ExpressionValue.js.map +1 -1
- package/dist/mjs/value/Value.js.map +1 -1
- package/dist/type/ContextObjectType.d.ts +17 -0
- package/dist/type/Types.d.ts +2 -6
- package/dist/value/ContextObjectValue.d.ts +11 -0
- package/dist/value/ExpressionValue.d.ts +2 -1
- package/dist/value/Value.d.ts +1 -1
- package/package.json +5 -3
|
@@ -38,12 +38,44 @@ function registerOrDie(fnKey, func) {
|
|
|
38
38
|
}
|
|
39
39
|
builtinFunctions.set(fnKey, func);
|
|
40
40
|
}
|
|
41
|
+
function toDocKey(label) {
|
|
42
|
+
return label.replace(/[^a-zA-Z0-9]+/g, "_");
|
|
43
|
+
}
|
|
44
|
+
function withDocumentation(func, summary, args = []) {
|
|
45
|
+
func.withDocumentation({
|
|
46
|
+
key: `function.${func.getName()}.summary`,
|
|
47
|
+
fallback: summary,
|
|
48
|
+
});
|
|
49
|
+
args.forEach((argument, index) => {
|
|
50
|
+
const formalArgument = func.getFormalArguments()[index];
|
|
51
|
+
if (!formalArgument) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const docKey = toDocKey(argument.label);
|
|
55
|
+
formalArgument.withDocumentation({
|
|
56
|
+
key: `function.${func.getName()}.arg.${docKey}.label`,
|
|
57
|
+
fallback: argument.label,
|
|
58
|
+
}, {
|
|
59
|
+
key: `function.${func.getName()}.arg.${docKey}.summary`,
|
|
60
|
+
fallback: argument.documentation,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
return func;
|
|
64
|
+
}
|
|
41
65
|
function registerFunc(func, ...aliases) {
|
|
42
66
|
const fnKey = func.getName();
|
|
43
67
|
const keys = [...aliases];
|
|
44
68
|
keys.unshift(fnKey);
|
|
45
69
|
keys.forEach((key) => registerOrDie(IfcExpressionFunctions.normalizeName(key), func));
|
|
46
70
|
}
|
|
71
|
+
function documentAttributeAccessor(name, summary) {
|
|
72
|
+
return withDocumentation(new AttributeAccessorFunction(name, Type.STRING), summary, [
|
|
73
|
+
{
|
|
74
|
+
label: "object",
|
|
75
|
+
documentation: "The IFC object to read from",
|
|
76
|
+
},
|
|
77
|
+
]);
|
|
78
|
+
}
|
|
47
79
|
export class IfcExpressionFunctions {
|
|
48
80
|
static normalizeName(name) {
|
|
49
81
|
if (isNullish(name)) {
|
|
@@ -63,49 +95,173 @@ export class IfcExpressionFunctions {
|
|
|
63
95
|
}
|
|
64
96
|
return builtinFunctions.get(this.normalizeName(name));
|
|
65
97
|
}
|
|
98
|
+
static getBuiltinFunctionNames() {
|
|
99
|
+
return [...builtinFunctions.keys()].sort((left, right) => left.localeCompare(right));
|
|
100
|
+
}
|
|
66
101
|
}
|
|
67
|
-
registerFunc(new MAP()
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
registerFunc(new
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
registerFunc(new
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
registerFunc(new
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
registerFunc(new
|
|
108
|
-
|
|
102
|
+
registerFunc(withDocumentation(new MAP(), "map an input value through a list of key/value mappings", [
|
|
103
|
+
{ label: "input", documentation: "The value to look up" },
|
|
104
|
+
{
|
|
105
|
+
label: "mappings",
|
|
106
|
+
documentation: "The mapping table as [key, value] pairs",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
label: "defaultValue",
|
|
110
|
+
documentation: "The fallback value to return when no mapping matches",
|
|
111
|
+
},
|
|
112
|
+
]));
|
|
113
|
+
registerFunc(withDocumentation(new CHOOSE(), "return the value from the first matching boolean case", [
|
|
114
|
+
{
|
|
115
|
+
label: "cases",
|
|
116
|
+
documentation: "The candidate [condition, value] pairs to evaluate in order",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: "defaultValue",
|
|
120
|
+
documentation: "The fallback value when no case evaluates to true",
|
|
121
|
+
},
|
|
122
|
+
]));
|
|
123
|
+
registerFunc(withDocumentation(new AT(), "return the item at the specified index from an array or tuple", [
|
|
124
|
+
{ label: "input", documentation: "The array or tuple to read from" },
|
|
125
|
+
{ label: "index", documentation: "The zero-based index to read" },
|
|
126
|
+
]));
|
|
127
|
+
registerFunc(withDocumentation(new IF(), "choose one of two or three values based on a boolean or logical condition", [
|
|
128
|
+
{ label: "condition", documentation: "The condition to evaluate" },
|
|
129
|
+
{
|
|
130
|
+
label: "thenValue",
|
|
131
|
+
documentation: "The value returned when the condition is true",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: "elseValue",
|
|
135
|
+
documentation: "The value returned when the condition is false",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
label: "unknownValue",
|
|
139
|
+
documentation: "The value returned when a logical condition is unknown",
|
|
140
|
+
},
|
|
141
|
+
]));
|
|
142
|
+
registerFunc(withDocumentation(new ROUND(), "round a numeric value to the requested number of decimal places", [
|
|
143
|
+
{ label: "input", documentation: "The numeric value to round" },
|
|
144
|
+
{
|
|
145
|
+
label: "decimals",
|
|
146
|
+
documentation: "The number of decimal places to keep",
|
|
147
|
+
},
|
|
148
|
+
]));
|
|
149
|
+
registerFunc(documentAttributeAccessor("name", "read the name attribute from an IFC object"));
|
|
150
|
+
registerFunc(documentAttributeAccessor("guid", "read the global identifier from an IFC object"));
|
|
151
|
+
registerFunc(documentAttributeAccessor("ifcClass", "read the IFC class name from an IFC object"));
|
|
152
|
+
registerFunc(documentAttributeAccessor("description", "read the description attribute from an IFC object"));
|
|
153
|
+
registerFunc(withDocumentation(new AttributeAccessorFunction("value", Types.or(Type.STRING, Type.NUMERIC, Type.BOOLEAN, Type.ARRAY)), "read the value of an IFC property object", [{ label: "object", documentation: "The IFC property object to read from" }]));
|
|
154
|
+
registerFunc(withDocumentation(new PROPERTYSET(), "resolve a property set on an IFC object", [
|
|
155
|
+
{ label: "object", documentation: "The IFC object to inspect" },
|
|
156
|
+
{
|
|
157
|
+
label: "name",
|
|
158
|
+
documentation: "The name of the property set to resolve",
|
|
159
|
+
},
|
|
160
|
+
]));
|
|
161
|
+
registerFunc(withDocumentation(new PROPERTY(), "resolve a property on an IFC element, type object, or property set", [
|
|
162
|
+
{ label: "object", documentation: "The IFC object to inspect" },
|
|
163
|
+
{ label: "name", documentation: "The name of the property to resolve" },
|
|
164
|
+
]));
|
|
165
|
+
registerFunc(withDocumentation(new TYPE(), "resolve the IFC type object of an element", [
|
|
166
|
+
{ label: "object", documentation: "The IFC element to inspect" },
|
|
167
|
+
]));
|
|
168
|
+
registerFunc(withDocumentation(new NOT(), "negate a boolean or logical value", [
|
|
169
|
+
{ label: "value", documentation: "The value to negate" },
|
|
170
|
+
]));
|
|
171
|
+
registerFunc(withDocumentation(new TOSTRING(), "convert a value to its string representation", [{ label: "input", documentation: "The value to convert" }]));
|
|
172
|
+
registerFunc(withDocumentation(new TONUMERIC(), "convert a value to a numeric representation", [{ label: "input", documentation: "The value to convert" }]), "TONUMBER");
|
|
173
|
+
registerFunc(withDocumentation(new TOBOOLEAN(), "convert a value to a boolean representation", [{ label: "input", documentation: "The value to convert" }]));
|
|
174
|
+
registerFunc(withDocumentation(new TOLOGICAL(), "convert a value to a logical representation that can be true, false, or unknown", [{ label: "input", documentation: "The value to convert" }]), "NOTFOUNDASUNKNOWN");
|
|
175
|
+
registerFunc(withDocumentation(new TOIFCDATE(), "convert a value to an IFC date", [
|
|
176
|
+
{ label: "input", documentation: "The value to convert" },
|
|
177
|
+
]));
|
|
178
|
+
registerFunc(withDocumentation(new TOIFCTIME(), "convert a value to an IFC time", [
|
|
179
|
+
{ label: "input", documentation: "The value to convert" },
|
|
180
|
+
]));
|
|
181
|
+
registerFunc(withDocumentation(new TOIFCDATETIME(), "convert a value to an IFC date-time", [{ label: "input", documentation: "The value to convert" }]));
|
|
182
|
+
registerFunc(withDocumentation(new TOIFCDURATION(), "convert a value to an IFC duration", [
|
|
183
|
+
{ label: "input", documentation: "The value to convert" },
|
|
184
|
+
]));
|
|
185
|
+
registerFunc(withDocumentation(new TOIFCTIMESTAMP(), "convert a value to an IFC timestamp", [{ label: "input", documentation: "The value to convert" }]));
|
|
186
|
+
registerFunc(withDocumentation(new ADDDURATION(), "add a duration to an IFC date-time or timestamp", [
|
|
187
|
+
{
|
|
188
|
+
label: "pointInTime",
|
|
189
|
+
documentation: "The IFC date-time or timestamp to shift",
|
|
190
|
+
},
|
|
191
|
+
{ label: "duration", documentation: "The duration to add" },
|
|
192
|
+
]));
|
|
193
|
+
registerFunc(withDocumentation(new TOLOWERCASE(), "convert a string to lowercase", [
|
|
194
|
+
{ label: "input", documentation: "The string to transform" },
|
|
195
|
+
]));
|
|
196
|
+
registerFunc(withDocumentation(new TOUPPERCASE(), "convert a string to uppercase", [
|
|
197
|
+
{ label: "input", documentation: "The string to transform" },
|
|
198
|
+
]));
|
|
199
|
+
registerFunc(withDocumentation(new SUBSTRING(), "extract a substring from a string", [
|
|
200
|
+
{ label: "input", documentation: "The source string" },
|
|
201
|
+
{ label: "from", documentation: "The inclusive start index" },
|
|
202
|
+
{ label: "to", documentation: "The exclusive end index" },
|
|
203
|
+
]));
|
|
204
|
+
registerFunc(withDocumentation(new SPLIT(), "split a string into an array of substrings", [
|
|
205
|
+
{ label: "input", documentation: "The source string" },
|
|
206
|
+
{ label: "separator", documentation: "The separator string to split on" },
|
|
207
|
+
{ label: "limit", documentation: "The maximum number of resulting items" },
|
|
208
|
+
]));
|
|
209
|
+
registerFunc(withDocumentation(new EXISTS(), "check whether an IFC reference can be resolved", [{ label: "object", documentation: "The IFC reference to test" }]));
|
|
210
|
+
registerFunc(withDocumentation(new FuncBooleanBinary("AND", "and"), "return true only when both inputs are true", [
|
|
211
|
+
{ label: "left", documentation: "The left logical operand" },
|
|
212
|
+
{ label: "right", documentation: "The right logical operand" },
|
|
213
|
+
]));
|
|
214
|
+
registerFunc(withDocumentation(new FuncBooleanBinary("OR", "or"), "return true when at least one input is true", [
|
|
215
|
+
{ label: "left", documentation: "The left logical operand" },
|
|
216
|
+
{ label: "right", documentation: "The right logical operand" },
|
|
217
|
+
]));
|
|
218
|
+
registerFunc(withDocumentation(new FuncBooleanBinary("XOR", "xor"), "return true when exactly one input is true", [
|
|
219
|
+
{ label: "left", documentation: "The left logical operand" },
|
|
220
|
+
{ label: "right", documentation: "The right logical operand" },
|
|
221
|
+
]));
|
|
222
|
+
registerFunc(withDocumentation(new FuncBooleanBinary("IMPLIES", "implies"), "evaluate logical implication from left to right", [
|
|
223
|
+
{ label: "left", documentation: "The premise" },
|
|
224
|
+
{ label: "right", documentation: "The consequence" },
|
|
225
|
+
]));
|
|
226
|
+
registerFunc(withDocumentation(new EQUALS(), "compare two values for equality", [
|
|
227
|
+
{ label: "left", documentation: "The left value to compare" },
|
|
228
|
+
{ label: "right", documentation: "The right value to compare" },
|
|
229
|
+
]));
|
|
230
|
+
registerFunc(withDocumentation(new CompareMagnitudes("GREATERTHAN", (cmp) => cmp > 0), "return true when the left value is greater than the right value", [
|
|
231
|
+
{ label: "left", documentation: "The left value to compare" },
|
|
232
|
+
{ label: "right", documentation: "The right value to compare" },
|
|
233
|
+
]));
|
|
234
|
+
registerFunc(withDocumentation(new CompareMagnitudes("GREATERTHANOREQUAL", (cmp) => cmp >= 0), "return true when the left value is greater than or equal to the right value", [
|
|
235
|
+
{ label: "left", documentation: "The left value to compare" },
|
|
236
|
+
{ label: "right", documentation: "The right value to compare" },
|
|
237
|
+
]));
|
|
238
|
+
registerFunc(withDocumentation(new CompareMagnitudes("LESSTHAN", (cmp) => cmp < 0), "return true when the left value is less than the right value", [
|
|
239
|
+
{ label: "left", documentation: "The left value to compare" },
|
|
240
|
+
{ label: "right", documentation: "The right value to compare" },
|
|
241
|
+
]));
|
|
242
|
+
registerFunc(withDocumentation(new CompareMagnitudes("LESSTHANOREQUAL", (cmp) => cmp <= 0), "return true when the left value is less than or equal to the right value", [
|
|
243
|
+
{ label: "left", documentation: "The left value to compare" },
|
|
244
|
+
{ label: "right", documentation: "The right value to compare" },
|
|
245
|
+
]));
|
|
246
|
+
registerFunc(withDocumentation(new MatchesPattern("CONTAINS", true, false), "check whether the input contains a simple wildcard pattern", [
|
|
247
|
+
{ label: "input", documentation: "The source string" },
|
|
248
|
+
{ label: "pattern", documentation: "The wildcard pattern to search for" },
|
|
249
|
+
]));
|
|
250
|
+
registerFunc(withDocumentation(new MatchesPattern("MATCHES", true, true), "check whether the input fully matches a simple wildcard pattern", [
|
|
251
|
+
{ label: "input", documentation: "The source string" },
|
|
252
|
+
{ label: "pattern", documentation: "The wildcard pattern to match" },
|
|
253
|
+
]));
|
|
254
|
+
registerFunc(withDocumentation(new MatchesPattern("REGEXCONTAINS", false, false), "check whether the input contains a regular-expression match", [
|
|
255
|
+
{ label: "input", documentation: "The source string" },
|
|
256
|
+
{
|
|
257
|
+
label: "pattern",
|
|
258
|
+
documentation: "The regular expression to search for",
|
|
259
|
+
},
|
|
260
|
+
]));
|
|
261
|
+
registerFunc(withDocumentation(new MatchesPattern("REGEXMATCHES", false, true), "check whether the input fully matches a regular expression", [
|
|
262
|
+
{ label: "input", documentation: "The source string" },
|
|
263
|
+
{ label: "pattern", documentation: "The regular expression to match" },
|
|
264
|
+
]));
|
|
109
265
|
registerFunc(new ReplacePattern("REPLACE", true));
|
|
110
266
|
registerFunc(new ReplacePattern("REGEXREPLACE", false));
|
|
111
267
|
//# sourceMappingURL=IfcExpressionFunctions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["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.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN.js\";\nimport { TOLOGICAL } from \"./impl/TOLOGICAL.js\";\nimport { TOLOWERCASE } from \"./impl/TOLOWERCASE.js\";\nimport { TOUPPERCASE } from \"./impl/TOUPPERCASE.js\";\nimport { SUBSTRING } from \"./impl/SUBSTRING.js\";\nimport { SPLIT } from \"./impl/SPLIT.js\";\nimport { AT } from \"./impl/AT.js\";\nimport { TOIFCDATE } from \"./impl/TOIFCDATE.js\";\nimport { TOIFCDATETIME } from \"./impl/TOIFCDATETIME.js\";\nimport { TOIFCTIME } from \"./impl/TOIFCTIME.js\";\nimport { TOIFCDURATION } from \"./impl/TOIFCDURATION.js\";\nimport { TOIFCTIMESTAMP } from \"./impl/TOIFCTIMESTAMP.js\";\nimport { ADDDURATION } from \"./impl/ADDDURATION.js\";\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 AT());\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 TOIFCDATE());\nregisterFunc(new TOIFCTIME());\nregisterFunc(new TOIFCDATETIME());\nregisterFunc(new TOIFCDURATION());\nregisterFunc(new TOIFCTIMESTAMP());\nregisterFunc(new ADDDURATION());\nregisterFunc(new TOLOWERCASE());\nregisterFunc(new TOUPPERCASE());\nregisterFunc(new SUBSTRING());\nregisterFunc(new SPLIT());\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"]}
|
|
1
|
+
{"version":3,"sources":["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.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN.js\";\nimport { TOLOGICAL } from \"./impl/TOLOGICAL.js\";\nimport { TOLOWERCASE } from \"./impl/TOLOWERCASE.js\";\nimport { TOUPPERCASE } from \"./impl/TOUPPERCASE.js\";\nimport { SUBSTRING } from \"./impl/SUBSTRING.js\";\nimport { SPLIT } from \"./impl/SPLIT.js\";\nimport { AT } from \"./impl/AT.js\";\nimport { TOIFCDATE } from \"./impl/TOIFCDATE.js\";\nimport { TOIFCDATETIME } from \"./impl/TOIFCDATETIME.js\";\nimport { TOIFCTIME } from \"./impl/TOIFCTIME.js\";\nimport { TOIFCDURATION } from \"./impl/TOIFCDURATION.js\";\nimport { TOIFCTIMESTAMP } from \"./impl/TOIFCTIMESTAMP.js\";\nimport { ADDDURATION } from \"./impl/ADDDURATION.js\";\n\nconst builtinFunctions = new Map<string, Func>();\n\ntype BuiltinArgumentDoc = {\n label: string;\n documentation: string;\n};\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 toDocKey(label: string): string {\n return label.replace(/[^a-zA-Z0-9]+/g, \"_\");\n}\n\nfunction withDocumentation<T extends Func>(\n func: T,\n summary: string,\n args: Array<BuiltinArgumentDoc> = []\n): T {\n func.withDocumentation({\n key: `function.${func.getName()}.summary`,\n fallback: summary,\n });\n\n args.forEach((argument, index) => {\n const formalArgument = func.getFormalArguments()[index];\n if (!formalArgument) {\n return;\n }\n\n const docKey = toDocKey(argument.label);\n formalArgument.withDocumentation(\n {\n key: `function.${func.getName()}.arg.${docKey}.label`,\n fallback: argument.label,\n },\n {\n key: `function.${func.getName()}.arg.${docKey}.summary`,\n fallback: argument.documentation,\n }\n );\n });\n\n return 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\nfunction documentAttributeAccessor(name: string, summary: string): Func {\n return withDocumentation(\n new AttributeAccessorFunction(name, Type.STRING),\n summary,\n [\n {\n label: \"object\",\n documentation: \"The IFC object to read from\",\n },\n ]\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 public static getBuiltinFunctionNames(): Array<string> {\n return [...builtinFunctions.keys()].sort((left, right) =>\n left.localeCompare(right)\n );\n }\n}\n\nregisterFunc(\n withDocumentation(\n new MAP(),\n \"map an input value through a list of key/value mappings\",\n [\n { label: \"input\", documentation: \"The value to look up\" },\n {\n label: \"mappings\",\n documentation: \"The mapping table as [key, value] pairs\",\n },\n {\n label: \"defaultValue\",\n documentation: \"The fallback value to return when no mapping matches\",\n },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new CHOOSE(),\n \"return the value from the first matching boolean case\",\n [\n {\n label: \"cases\",\n documentation:\n \"The candidate [condition, value] pairs to evaluate in order\",\n },\n {\n label: \"defaultValue\",\n documentation: \"The fallback value when no case evaluates to true\",\n },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new AT(),\n \"return the item at the specified index from an array or tuple\",\n [\n { label: \"input\", documentation: \"The array or tuple to read from\" },\n { label: \"index\", documentation: \"The zero-based index to read\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new IF(),\n \"choose one of two or three values based on a boolean or logical condition\",\n [\n { label: \"condition\", documentation: \"The condition to evaluate\" },\n {\n label: \"thenValue\",\n documentation: \"The value returned when the condition is true\",\n },\n {\n label: \"elseValue\",\n documentation: \"The value returned when the condition is false\",\n },\n {\n label: \"unknownValue\",\n documentation: \"The value returned when a logical condition is unknown\",\n },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new ROUND(),\n \"round a numeric value to the requested number of decimal places\",\n [\n { label: \"input\", documentation: \"The numeric value to round\" },\n {\n label: \"decimals\",\n documentation: \"The number of decimal places to keep\",\n },\n ]\n )\n);\nregisterFunc(\n documentAttributeAccessor(\n \"name\",\n \"read the name attribute from an IFC object\"\n )\n);\nregisterFunc(\n documentAttributeAccessor(\n \"guid\",\n \"read the global identifier from an IFC object\"\n )\n);\nregisterFunc(\n documentAttributeAccessor(\n \"ifcClass\",\n \"read the IFC class name from an IFC object\"\n )\n);\nregisterFunc(\n documentAttributeAccessor(\n \"description\",\n \"read the description attribute from an IFC object\"\n )\n);\nregisterFunc(\n withDocumentation(\n new AttributeAccessorFunction(\n \"value\",\n Types.or(Type.STRING, Type.NUMERIC, Type.BOOLEAN, Type.ARRAY)\n ),\n \"read the value of an IFC property object\",\n [{ label: \"object\", documentation: \"The IFC property object to read from\" }]\n )\n);\nregisterFunc(\n withDocumentation(\n new PROPERTYSET(),\n \"resolve a property set on an IFC object\",\n [\n { label: \"object\", documentation: \"The IFC object to inspect\" },\n {\n label: \"name\",\n documentation: \"The name of the property set to resolve\",\n },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new PROPERTY(),\n \"resolve a property on an IFC element, type object, or property set\",\n [\n { label: \"object\", documentation: \"The IFC object to inspect\" },\n { label: \"name\", documentation: \"The name of the property to resolve\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(new TYPE(), \"resolve the IFC type object of an element\", [\n { label: \"object\", documentation: \"The IFC element to inspect\" },\n ])\n);\nregisterFunc(\n withDocumentation(new NOT(), \"negate a boolean or logical value\", [\n { label: \"value\", documentation: \"The value to negate\" },\n ])\n);\nregisterFunc(\n withDocumentation(\n new TOSTRING(),\n \"convert a value to its string representation\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n )\n);\nregisterFunc(\n withDocumentation(\n new TONUMERIC(),\n \"convert a value to a numeric representation\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n ),\n \"TONUMBER\"\n);\nregisterFunc(\n withDocumentation(\n new TOBOOLEAN(),\n \"convert a value to a boolean representation\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n )\n);\nregisterFunc(\n withDocumentation(\n new TOLOGICAL(),\n \"convert a value to a logical representation that can be true, false, or unknown\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n ),\n \"NOTFOUNDASUNKNOWN\"\n);\nregisterFunc(\n withDocumentation(new TOIFCDATE(), \"convert a value to an IFC date\", [\n { label: \"input\", documentation: \"The value to convert\" },\n ])\n);\nregisterFunc(\n withDocumentation(new TOIFCTIME(), \"convert a value to an IFC time\", [\n { label: \"input\", documentation: \"The value to convert\" },\n ])\n);\nregisterFunc(\n withDocumentation(\n new TOIFCDATETIME(),\n \"convert a value to an IFC date-time\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n )\n);\nregisterFunc(\n withDocumentation(new TOIFCDURATION(), \"convert a value to an IFC duration\", [\n { label: \"input\", documentation: \"The value to convert\" },\n ])\n);\nregisterFunc(\n withDocumentation(\n new TOIFCTIMESTAMP(),\n \"convert a value to an IFC timestamp\",\n [{ label: \"input\", documentation: \"The value to convert\" }]\n )\n);\nregisterFunc(\n withDocumentation(\n new ADDDURATION(),\n \"add a duration to an IFC date-time or timestamp\",\n [\n {\n label: \"pointInTime\",\n documentation: \"The IFC date-time or timestamp to shift\",\n },\n { label: \"duration\", documentation: \"The duration to add\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(new TOLOWERCASE(), \"convert a string to lowercase\", [\n { label: \"input\", documentation: \"The string to transform\" },\n ])\n);\nregisterFunc(\n withDocumentation(new TOUPPERCASE(), \"convert a string to uppercase\", [\n { label: \"input\", documentation: \"The string to transform\" },\n ])\n);\nregisterFunc(\n withDocumentation(new SUBSTRING(), \"extract a substring from a string\", [\n { label: \"input\", documentation: \"The source string\" },\n { label: \"from\", documentation: \"The inclusive start index\" },\n { label: \"to\", documentation: \"The exclusive end index\" },\n ])\n);\nregisterFunc(\n withDocumentation(new SPLIT(), \"split a string into an array of substrings\", [\n { label: \"input\", documentation: \"The source string\" },\n { label: \"separator\", documentation: \"The separator string to split on\" },\n { label: \"limit\", documentation: \"The maximum number of resulting items\" },\n ])\n);\nregisterFunc(\n withDocumentation(\n new EXISTS(),\n \"check whether an IFC reference can be resolved\",\n [{ label: \"object\", documentation: \"The IFC reference to test\" }]\n )\n);\nregisterFunc(\n withDocumentation(\n new FuncBooleanBinary(\"AND\", \"and\"),\n \"return true only when both inputs are true\",\n [\n { label: \"left\", documentation: \"The left logical operand\" },\n { label: \"right\", documentation: \"The right logical operand\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new FuncBooleanBinary(\"OR\", \"or\"),\n \"return true when at least one input is true\",\n [\n { label: \"left\", documentation: \"The left logical operand\" },\n { label: \"right\", documentation: \"The right logical operand\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new FuncBooleanBinary(\"XOR\", \"xor\"),\n \"return true when exactly one input is true\",\n [\n { label: \"left\", documentation: \"The left logical operand\" },\n { label: \"right\", documentation: \"The right logical operand\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new FuncBooleanBinary(\"IMPLIES\", \"implies\"),\n \"evaluate logical implication from left to right\",\n [\n { label: \"left\", documentation: \"The premise\" },\n { label: \"right\", documentation: \"The consequence\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(new EQUALS(), \"compare two values for equality\", [\n { label: \"left\", documentation: \"The left value to compare\" },\n { label: \"right\", documentation: \"The right value to compare\" },\n ])\n);\nregisterFunc(\n withDocumentation(\n new CompareMagnitudes(\"GREATERTHAN\", (cmp) => cmp > 0),\n \"return true when the left value is greater than the right value\",\n [\n { label: \"left\", documentation: \"The left value to compare\" },\n { label: \"right\", documentation: \"The right value to compare\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new CompareMagnitudes(\"GREATERTHANOREQUAL\", (cmp) => cmp >= 0),\n \"return true when the left value is greater than or equal to the right value\",\n [\n { label: \"left\", documentation: \"The left value to compare\" },\n { label: \"right\", documentation: \"The right value to compare\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new CompareMagnitudes(\"LESSTHAN\", (cmp) => cmp < 0),\n \"return true when the left value is less than the right value\",\n [\n { label: \"left\", documentation: \"The left value to compare\" },\n { label: \"right\", documentation: \"The right value to compare\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new CompareMagnitudes(\"LESSTHANOREQUAL\", (cmp) => cmp <= 0),\n \"return true when the left value is less than or equal to the right value\",\n [\n { label: \"left\", documentation: \"The left value to compare\" },\n { label: \"right\", documentation: \"The right value to compare\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new MatchesPattern(\"CONTAINS\", true, false),\n \"check whether the input contains a simple wildcard pattern\",\n [\n { label: \"input\", documentation: \"The source string\" },\n { label: \"pattern\", documentation: \"The wildcard pattern to search for\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new MatchesPattern(\"MATCHES\", true, true),\n \"check whether the input fully matches a simple wildcard pattern\",\n [\n { label: \"input\", documentation: \"The source string\" },\n { label: \"pattern\", documentation: \"The wildcard pattern to match\" },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new MatchesPattern(\"REGEXCONTAINS\", false, false),\n \"check whether the input contains a regular-expression match\",\n [\n { label: \"input\", documentation: \"The source string\" },\n {\n label: \"pattern\",\n documentation: \"The regular expression to search for\",\n },\n ]\n )\n);\nregisterFunc(\n withDocumentation(\n new MatchesPattern(\"REGEXMATCHES\", false, true),\n \"check whether the input fully matches a regular expression\",\n [\n { label: \"input\", documentation: \"The source string\" },\n { label: \"pattern\", documentation: \"The regular expression to match\" },\n ]\n )\n);\nregisterFunc(new ReplacePattern(\"REPLACE\", true));\nregisterFunc(new ReplacePattern(\"REGEXREPLACE\", false));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/CHOOSE.ts"],"names":[],"mappings":"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","file":"expression/function/impl/CHOOSE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ParserRuleContext } from \"
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/CHOOSE.ts"],"names":[],"mappings":"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","file":"expression/function/impl/CHOOSE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ParserRuleContext } from \"antlr4ng\";\n\nexport class CHOOSE extends Func {\n private static readonly ARG_NAME_CASES = \"cases\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"CHOOSE\", [\n new FuncArgMappings(true, CHOOSE.ARG_NAME_CASES),\n new FuncArg(false, CHOOSE.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[0][1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!Type.BOOLEAN.overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n Type.BOOLEAN,\n inType,\n 0,\n argumentTypes[0][0]\n );\n }\n\n if (\n argumentTypes.length > 1 &&\n !argumentTypes[1][1].overlapsWith(outType)\n ) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[1].name,\n inType,\n argumentTypes[1][1],\n 1,\n argumentTypes[1][0]\n );\n }\n return returnType;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n const returnTypes = (argumentTypes[0] as TupleType)\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1]);\n return Types.or(...returnTypes);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n CHOOSE.ARG_NAME_CASES\n ) as unknown as ArrayValue;\n const defaultValue = evaluatedArguments.get(\n CHOOSE.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(\n callingExpr,\n outerArray,\n i\n );\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (!BooleanValue.isBooleanValueType(pair[0])) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION,\n `First array element at 0-based position ${i} in the mappings does not evaluate to a boolean`,\n pair[0],\n callingExpr.getTextSpan()\n );\n }\n if (pair[0].getValue() === true) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name,\n callingExpr.getTextSpan()\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/IF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAClC,+CAA+C,EAE/C,wCAAwC,EACxC,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,qDAAqD,CAAC;AACxG,OAAO,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,OAAO,EAAG,SAAQ,IAAI;IAM1B;QACE,KAAK,CAAC,IAAI,EAAE;YACV,IAAI,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC;YACxD,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC;YACtC,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC;YACtC,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SACvE;QACD,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAC9D,CAAC;IACJ,CAAC;IAES,kBAAkB,CAC1B,qBAA2D,EAC3D,GAAG;QAEH,KAAK,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACrD,yFAAyF;QACzF,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1D,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,MAAM,IAAI,gCAAgC,CACxC,IAAI,CAAC,IAAI,EACT,EAAE,CAAC,gBAAgB,EACnB,CAAC,EACD,GAAG,EACH,YAAY,EAAE,CAAC,gBAAgB,gCAAgC,EAAE,CAAC,kBAAkB,2DAA2D,CAChJ,CAAC;aACH;SACF;aAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjE,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,MAAM,IAAI,iCAAiC,CACzC,IAAI,CAAC,IAAI,EACT,EAAE,CAAC,gBAAgB,EACnB,CAAC,EACD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3B,YAAY,EAAE,CAAC,gBAAgB,mCAAmC,EAAE,CAAC,kBAAkB,uDAAuD,CAC/I,CAAC;aACH;SACF;IACH,CAAC;IAES,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE;QAEhE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAK,IAAI,CAAC,MAAqB,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACpE,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;oBAC/B,kBAAkB,CAAC,GAAG,CACpB,EAAE,CAAC,gBAAgB,EACnB,IAAI,+CAA+C,CACjD,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,EAAE,CAAC,gBAAgB,gCAAgC,EAAE,CAAC,kBAAkB,2DAA2D,EAC/I,IAAI,CAAC,IAAI,EACT,EAAE,CAAC,gBAAgB,EACnB,CAAC,EACD,WAAW,CAAC,WAAW,EAAE,CAC1B,CACF,CAAC;iBACH;aACF;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3D,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;oBAC/B,kBAAkB,CAAC,GAAG,CACpB,EAAE,CAAC,gBAAgB,EACnB,IAAI,wCAAwC,CAC1C,YAAY,EAAE,CAAC,gBAAgB,mCAAmC,EAAE,CAAC,kBAAkB,uDAAuD,EAC9I,IAAI,CAAC,IAAI,EACT,EAAE,CAAC,gBAAgB,EACnB,CAAC,EACD,WAAW,CAAC,WAAW,EAAE,CAC1B,CACF,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAE9C,CAAC;QACjB,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC3D,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;SAC1C;aAAM,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC3D,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;SAC1C;aAAM,IAAI,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE;YACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;YACjE,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,kCAAkC,CAC3C,QAAQ,CAAC,QAAQ,EACjB,cAAc,CAAC,KAAK,EACpB,qCAAqC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EACjE,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;IACJ,CAAC;;AApHuB,qBAAkB,GAAG,WAAW,CAAC;AACjC,gBAAa,GAAG,WAAW,CAAC;AAC5B,gBAAa,GAAG,WAAW,CAAC;AAC5B,mBAAgB,GAAG,cAAc,CAAC","file":"expression/function/impl/IF.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSpuriousFunctionArgumentErrorObj,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { FuncArgLogicalOrBoolean } from \"../arg/FuncArgLogicalOrBoolean.js\";\nimport { ParserRuleContext } from \"
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/IF.ts"],"names":[],"mappings":"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","file":"expression/function/impl/IF.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSpuriousFunctionArgumentErrorObj,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { FuncArgLogicalOrBoolean } from \"../arg/FuncArgLogicalOrBoolean.js\";\nimport { ParserRuleContext } from \"antlr4ng\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { SpuriousFunctionArgumentException } from \"../../../error/SpuriousFunctionArgumentException.js\";\nimport { MissingFunctionArgumentException } from \"../../../error/MissingFunctionArgumentException.js\";\nimport { Value } from \"../../../value/Value.js\";\nimport { Expr } from \"../../Expr.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue.js\";\n\nexport class IF extends Func {\n private static readonly ARG_NAME_CONDITION = \"condition\";\n private static readonly ARG_NAME_THEN = \"thenValue\";\n private static readonly ARG_NAME_ELSE = \"elseValue\";\n private static readonly ARG_NAME_UNKNOWN = \"unknownValue\";\n\n constructor() {\n super(\"IF\", [\n new FuncArgLogicalOrBoolean(true, IF.ARG_NAME_CONDITION),\n new FuncArgAny(true, IF.ARG_NAME_THEN),\n new FuncArgAny(true, IF.ARG_NAME_ELSE),\n new FuncArgAny(false, IF.ARG_NAME_UNKNOWN),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n if (argumentTypes.length == 3) {\n return Types.or(argumentTypes[1], argumentTypes[2]);\n }\n if (argumentTypes.length == 4) {\n return Types.or(argumentTypes[1], argumentTypes[2], argumentTypes[3]);\n }\n throw new Error(\n \"Unexpected argument types: \" + JSON.stringify(argumentTypes)\n );\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ) {\n super.checkArgumentTypes(providedArgumentTypes, ctx);\n //extra check: if our value to be checked is a Logical, the unknownValue must be provided\n if (providedArgumentTypes[0][1].isSameTypeAs(Type.LOGICAL)) {\n if (providedArgumentTypes.length < 4) {\n throw new MissingFunctionArgumentException(\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n ctx,\n `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`\n );\n }\n } else if (providedArgumentTypes[0][1].isSameTypeAs(Type.BOOLEAN)) {\n if (providedArgumentTypes.length > 3) {\n throw new SpuriousFunctionArgumentException(\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n providedArgumentTypes[3][0],\n `Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`\n );\n }\n }\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const cond = evaluatedArguments.get(IF.ARG_NAME_CONDITION);\n if (isExprEvalSuccess(cond)) {\n if ((cond.result as Value<any>).getType().isSameTypeAs(Type.LOGICAL)) {\n if (evaluatedArguments.size < 4) {\n evaluatedArguments.set(\n IF.ARG_NAME_UNKNOWN,\n new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`,\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n callingExpr.getTextSpan()\n )\n );\n }\n } else if (cond.result.getType().isSameTypeAs(Type.BOOLEAN)) {\n if (evaluatedArguments.size > 3) {\n evaluatedArguments.set(\n IF.ARG_NAME_UNKNOWN,\n new ExprEvalSpuriousFunctionArgumentErrorObj(\n `Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`,\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n callingExpr.getTextSpan()\n )\n );\n }\n }\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const condition = evaluatedArguments.get(IF.ARG_NAME_CONDITION) as\n | LogicalValue\n | BooleanValue;\n if (condition.isTrue()) {\n const thenValue = evaluatedArguments.get(IF.ARG_NAME_THEN);\n return new ExprEvalSuccessObj(thenValue);\n } else if (condition.isFalse()) {\n const elseValue = evaluatedArguments.get(IF.ARG_NAME_ELSE);\n return new ExprEvalSuccessObj(elseValue);\n } else if (LogicalValue.isUnknown(condition.getValue())) {\n const unknownValue = evaluatedArguments.get(IF.ARG_NAME_UNKNOWN);\n return new ExprEvalSuccessObj(unknownValue);\n }\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.ERROR,\n \"Cannot handle value of condtition: \" + JSON.stringify(condition),\n this.name,\n callingExpr.getTextSpan()\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ParserRuleContext } from \"
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils.js\";\nimport { FuncArgMappings } from \"../arg/FuncArgMappings.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { TupleType } from \"../../../type/TupleType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { TypeDisjunction } from \"../../../type/TypeDisjunction.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../../error/WrongFunctionArgumentTypeException.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ParserRuleContext } from \"antlr4ng\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new FuncArgMappings(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n const returnTypes = (argumentTypes[1] as TupleType)\n .getTypes()\n .map((t) => (t as TupleType).getTypes()[1]);\n return Types.or(...returnTypes);\n }\n\n checkArgumentsAndGetReturnType(\n argumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n const returnType = super.checkArgumentsAndGetReturnType(argumentTypes, ctx);\n const tupleTypes = (\n (\n (argumentTypes[1][1] as TupleType)\n .toArrayType()\n .getElementType() as TypeDisjunction\n ).getTypes()[0] as TupleType\n ).getTypes();\n const inType = tupleTypes[0];\n const outType = tupleTypes[1];\n if (!argumentTypes[0][1].overlapsWith(inType)) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[0].name,\n inType,\n argumentTypes[0][1],\n 0,\n argumentTypes[0][0]\n );\n }\n if (\n argumentTypes.length > 2 &&\n !argumentTypes[2][1].overlapsWith(outType)\n ) {\n throw new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[2].name,\n inType,\n argumentTypes[2][1],\n 2,\n argumentTypes[2][0]\n );\n }\n return returnType;\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as ExpressionValue;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as ExpressionValue;\n const outerArray = mappings.getValue() as unknown as Array<ArrayValue>;\n const numMappings = outerArray.length;\n for (let i = 0; i < numMappings; i++) {\n const error = FuncArgMappings.checkSingleMapping(\n callingExpr,\n outerArray,\n i\n );\n if (!isNullish(error)) {\n return error;\n }\n const pair = (outerArray[i] as unknown as ArrayValue).getValue();\n if (pair[0].equals(input)) {\n return new ExprEvalSuccessObj(pair[1] as ExpressionValue);\n }\n }\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name,\n callingExpr.getTextSpan()\n );\n }\n return new ExprEvalSuccessObj(defaultValue);\n }\n}\n"]}
|
|
@@ -8,9 +8,27 @@ import { MatchesPattern } from "./MatchesPattern.js";
|
|
|
8
8
|
export class ReplacePattern extends ApplyRegex {
|
|
9
9
|
constructor(name, simplePattern) {
|
|
10
10
|
super(name, simplePattern, false);
|
|
11
|
-
this.formalArguments.
|
|
11
|
+
this.formalArguments[0].withDocumentation({ key: `function.${name}.arg.input.label`, fallback: "input" }, {
|
|
12
|
+
key: `function.${name}.arg.input.summary`,
|
|
13
|
+
fallback: "The source string",
|
|
14
|
+
});
|
|
15
|
+
this.formalArguments[1].withDocumentation({ key: `function.${name}.arg.pattern.label`, fallback: "pattern" }, {
|
|
16
|
+
key: `function.${name}.arg.pattern.summary`,
|
|
17
|
+
fallback: "The pattern to replace",
|
|
18
|
+
});
|
|
19
|
+
this.formalArguments.splice(2, 0, (simplePattern
|
|
12
20
|
? new FuncArgString(true, ReplacePattern.KEY_REPLACE)
|
|
13
|
-
: new FuncArgRegex(true, ReplacePattern.KEY_REPLACE))
|
|
21
|
+
: new FuncArgRegex(true, ReplacePattern.KEY_REPLACE)).withDocumentation({
|
|
22
|
+
key: `function.${name}.arg.replacement.label`,
|
|
23
|
+
fallback: "replacement",
|
|
24
|
+
}, {
|
|
25
|
+
key: `function.${name}.arg.replacement.summary`,
|
|
26
|
+
fallback: "The replacement string",
|
|
27
|
+
}));
|
|
28
|
+
this.withDocumentation({
|
|
29
|
+
key: `function.${name}.summary`,
|
|
30
|
+
fallback: "replace pattern occurrences in input with replacement",
|
|
31
|
+
});
|
|
14
32
|
}
|
|
15
33
|
getReturnType(argumentTypes) {
|
|
16
34
|
return Type.STRING;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/ReplacePattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,MAAM,OAAO,cAAe,SAAQ,UAAU;IAG5C,YAAY,IAAY,EAAE,aAAsB;QAC9C,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CACzB,CAAC,EACD,CAAC,EACD,aAAa;
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/ReplacePattern.ts"],"names":[],"mappings":"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","file":"expression/function/impl/ReplacePattern.js","sourcesContent":["import { ApplyRegex } from \"./ApplyRegex.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FuncArgString } from \"../arg/FuncArgString.js\";\nimport { FuncArgRegex } from \"../arg/FuncArgRegex.js\";\nimport { MatchesPattern } from \"./MatchesPattern.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\n\nexport class ReplacePattern extends ApplyRegex {\n private static readonly KEY_REPLACE = \"replaceValue\";\n\n constructor(name: string, simplePattern: boolean) {\n super(name, simplePattern, false);\n this.formalArguments[0].withDocumentation(\n { key: `function.${name}.arg.input.label`, fallback: \"input\" },\n {\n key: `function.${name}.arg.input.summary`,\n fallback: \"The source string\",\n }\n );\n this.formalArguments[1].withDocumentation(\n { key: `function.${name}.arg.pattern.label`, fallback: \"pattern\" },\n {\n key: `function.${name}.arg.pattern.summary`,\n fallback: \"The pattern to replace\",\n }\n );\n this.formalArguments.splice(\n 2,\n 0,\n (simplePattern\n ? new FuncArgString(true, ReplacePattern.KEY_REPLACE)\n : new FuncArgRegex(true, ReplacePattern.KEY_REPLACE)\n ).withDocumentation(\n {\n key: `function.${name}.arg.replacement.label`,\n fallback: \"replacement\",\n },\n {\n key: `function.${name}.arg.replacement.summary`,\n fallback: \"The replacement string\",\n }\n )\n );\n this.withDocumentation({\n key: `function.${name}.summary`,\n fallback: \"replace pattern occurrences in input with replacement\",\n });\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.STRING;\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const inputValue = evaluatedArguments.get(MatchesPattern.KEY_INPUT);\n const patternValue = evaluatedArguments.get(MatchesPattern.KEY_PATTERN);\n const replaceValue = evaluatedArguments.get(ReplacePattern.KEY_REPLACE);\n const pattern = (patternValue as StringValue).getValue();\n if (pattern.length === 0) {\n return new ExprEvalSuccessObj(inputValue);\n }\n let flags = \"mg\";\n if (this.simplePattern) {\n const caseSensitive = evaluatedArguments.get(\n MatchesPattern.KEY_CASE_INSENSITIVE\n );\n if ((caseSensitive as BooleanValue).getValue()) {\n flags = \"img\";\n }\n } else {\n flags = (\n evaluatedArguments.get(ReplacePattern.KEY_FLAGS) as StringValue\n ).getValue();\n }\n const regex = new RegExp(pattern, flags);\n const input = (inputValue as StringValue).getValue();\n const replace = (replaceValue as StringValue).getValue();\n const result = input.replace(regex, replace);\n return new ExprEvalSuccessObj(StringValue.of(result));\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ExprBase } from "../ExprBase.js";
|
|
2
|
+
import { ExprKind } from "../ExprKind.js";
|
|
3
|
+
import { ExprEvalErrorObj, ExprEvalStatus, isExprEvalError, } from "../ExprEvalResult.js";
|
|
4
|
+
import { ContextObjectValue } from "../../value/ContextObjectValue.js";
|
|
5
|
+
import { getBuiltinMemberValue, toExpressionValue, unwrapExpressionValue, } from "../../builtin/BuiltinRuntimeValueConverter.js";
|
|
6
|
+
export class BuiltinFunctionCallExpr extends ExprBase {
|
|
7
|
+
constructor(target, name, args, type, targetName) {
|
|
8
|
+
super(ExprKind.REF_BUILTIN_FUNCTION);
|
|
9
|
+
this.target = target;
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.args = args;
|
|
12
|
+
this.type = type;
|
|
13
|
+
this.targetName = targetName;
|
|
14
|
+
}
|
|
15
|
+
getChildren() {
|
|
16
|
+
return [this.target, ...this.args];
|
|
17
|
+
}
|
|
18
|
+
evaluate(ctx, localCtx) {
|
|
19
|
+
const targetResult = this.target.evaluate(ctx, localCtx);
|
|
20
|
+
if (isExprEvalError(targetResult)) {
|
|
21
|
+
return targetResult;
|
|
22
|
+
}
|
|
23
|
+
if (!(targetResult.result instanceof ContextObjectValue)) {
|
|
24
|
+
return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.TYPE_ERROR, `Builtin function '${this.name}' requires a context object target`, this.getTextSpan());
|
|
25
|
+
}
|
|
26
|
+
const evaluatedArgs = [];
|
|
27
|
+
for (const arg of this.args) {
|
|
28
|
+
const argResult = arg.evaluate(ctx, localCtx);
|
|
29
|
+
if (isExprEvalError(argResult)) {
|
|
30
|
+
return argResult;
|
|
31
|
+
}
|
|
32
|
+
evaluatedArgs.push(argResult.result);
|
|
33
|
+
}
|
|
34
|
+
const fn = getBuiltinMemberValue(targetResult.result, this.name);
|
|
35
|
+
if (typeof fn !== "function") {
|
|
36
|
+
return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.NOT_FOUND, `No builtin function '${this.name}' found on '${this.targetName}'`, this.getTextSpan());
|
|
37
|
+
}
|
|
38
|
+
const rawResult = fn.apply(targetResult.result.getValue(), evaluatedArgs.map((arg) => unwrapExpressionValue(arg)));
|
|
39
|
+
if (rawResult === undefined || rawResult === null) {
|
|
40
|
+
return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.NOT_FOUND, `Builtin function '${this.name}' on '${this.targetName}' returned no value`, this.getTextSpan());
|
|
41
|
+
}
|
|
42
|
+
return this.wrapInResultIfNecessary(toExpressionValue(rawResult, this.type));
|
|
43
|
+
}
|
|
44
|
+
buildExprString(builder) {
|
|
45
|
+
builder
|
|
46
|
+
.appendExpr(this.target)
|
|
47
|
+
.appendString(`.${this.name}(`)
|
|
48
|
+
.appendExprArray(this.args)
|
|
49
|
+
.appendString(")");
|
|
50
|
+
}
|
|
51
|
+
getType() {
|
|
52
|
+
return this.type;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=BuiltinFunctionCallExpr.js.map
|