ifc-expressions 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
- package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
- package/dist/cjs/expression/function/Func.js +4 -0
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +10 -0
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgArray.js +25 -0
- package/dist/cjs/expression/function/arg/FuncArgArray.js.map +1 -0
- package/dist/cjs/expression/function/impl/AT.js +31 -0
- package/dist/cjs/expression/function/impl/AT.js.map +1 -0
- package/dist/cjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -1
- package/dist/cjs/expression/function/impl/CompareMagnitudes.js.map +1 -1
- package/dist/cjs/expression/function/impl/EQUALS.js.map +1 -1
- package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
- package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
- package/dist/cjs/expression/function/impl/SPLIT.js +37 -0
- package/dist/cjs/expression/function/impl/SPLIT.js.map +1 -0
- package/dist/cjs/expression/function/impl/SUBSTRING.js +36 -0
- package/dist/cjs/expression/function/impl/SUBSTRING.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
- package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -1
- package/dist/cjs/expression/function/impl/TOLOWERCASE.js +23 -0
- package/dist/cjs/expression/function/impl/TOLOWERCASE.js.map +1 -0
- package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
- package/dist/cjs/expression/function/impl/TOUPPERCASE.js +23 -0
- package/dist/cjs/expression/function/impl/TOUPPERCASE.js.map +1 -0
- package/dist/cjs/util/TextSpan.js.map +1 -1
- package/dist/expression/function/arg/FuncArgArray.d.ts +11 -0
- package/dist/expression/function/impl/AT.d.ts +10 -0
- package/dist/expression/function/impl/SPLIT.d.ts +10 -0
- package/dist/expression/function/impl/SUBSTRING.d.ts +10 -0
- package/dist/expression/function/impl/TOLOWERCASE.d.ts +10 -0
- package/dist/expression/function/impl/TOUPPERCASE.d.ts +10 -0
- package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
- package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
- package/dist/mjs/expression/function/Func.js +4 -0
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +10 -0
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgArray.js +21 -0
- package/dist/mjs/expression/function/arg/FuncArgArray.js.map +1 -0
- package/dist/mjs/expression/function/impl/AT.js +27 -0
- package/dist/mjs/expression/function/impl/AT.js.map +1 -0
- package/dist/mjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -1
- package/dist/mjs/expression/function/impl/CompareMagnitudes.js.map +1 -1
- package/dist/mjs/expression/function/impl/EQUALS.js.map +1 -1
- package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
- package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
- package/dist/mjs/expression/function/impl/SPLIT.js +33 -0
- package/dist/mjs/expression/function/impl/SPLIT.js.map +1 -0
- package/dist/mjs/expression/function/impl/SUBSTRING.js +32 -0
- package/dist/mjs/expression/function/impl/SUBSTRING.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
- package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -1
- package/dist/mjs/expression/function/impl/TOLOWERCASE.js +19 -0
- package/dist/mjs/expression/function/impl/TOLOWERCASE.js.map +1 -0
- package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
- package/dist/mjs/expression/function/impl/TOUPPERCASE.js +19 -0
- package/dist/mjs/expression/function/impl/TOUPPERCASE.js.map +1 -0
- package/dist/mjs/util/TextSpan.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Func } from "../Func.js";
|
|
2
|
+
import { FuncArgString } from "../arg/FuncArgString.js";
|
|
3
|
+
import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
|
|
4
|
+
import { StringValue } from "../../../value/StringValue.js";
|
|
5
|
+
import { Type } from "../../../type/Types.js";
|
|
6
|
+
import { FuncArgNumeric } from "../arg/FuncArgNumeric.js";
|
|
7
|
+
export class SUBSTRING extends Func {
|
|
8
|
+
constructor() {
|
|
9
|
+
super("SUBSTRING", [
|
|
10
|
+
new FuncArgString(true, "input"),
|
|
11
|
+
new FuncArgNumeric(true, "fromIncl"),
|
|
12
|
+
new FuncArgNumeric(false, "toExcl"),
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
calculateResult(callingExpr, evaluatedArguments) {
|
|
16
|
+
const inputString = evaluatedArguments.get("input").getValue();
|
|
17
|
+
const fromIncl = evaluatedArguments.get("fromIncl").getValue();
|
|
18
|
+
let result;
|
|
19
|
+
if (evaluatedArguments.has("toExcl")) {
|
|
20
|
+
const toExcl = evaluatedArguments.get("toExcl").getValue();
|
|
21
|
+
result = inputString.substring(fromIncl.toNumber(), toExcl.toNumber());
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
result = inputString.substring(fromIncl.toNumber());
|
|
25
|
+
}
|
|
26
|
+
return new ExprEvalSuccessObj(StringValue.of(result));
|
|
27
|
+
}
|
|
28
|
+
getReturnType(argumentTypes) {
|
|
29
|
+
return Type.STRING;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=SUBSTRING.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/SUBSTRING.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;QACE,KAAK,CAAC,WAAW,EAAE;YACjB,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;YAChC,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC;YACpC,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IACS,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,WAAW,GACf,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAC/B,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GACZ,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAClC,CAAC,QAAQ,EAAE,CAAC;QACb,IAAI,MAAM,CAAC;QACX,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpC,MAAM,MAAM,GACV,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAChC,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxE;aAAM;YACL,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,aAAa,CAAC,aAAyB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"expression/function/impl/SUBSTRING.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgString } from \"../arg/FuncArgString.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgNumeric } from \"../arg/FuncArgNumeric\";\nimport { NumericValue } from \"../../../value/NumericValue\";\n\nexport class SUBSTRING extends Func {\n constructor() {\n super(\"SUBSTRING\", [\n new FuncArgString(true, \"input\"),\n new FuncArgNumeric(true, \"fromIncl\"),\n new FuncArgNumeric(false, \"toExcl\"),\n ]);\n }\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const inputString = (\n evaluatedArguments.get(\"input\") as StringValue\n ).getValue();\n const fromIncl = (\n evaluatedArguments.get(\"fromIncl\") as NumericValue\n ).getValue();\n let result;\n if (evaluatedArguments.has(\"toExcl\")) {\n const toExcl = (\n evaluatedArguments.get(\"toExcl\") as NumericValue\n ).getValue();\n result = inputString.substring(fromIncl.toNumber(), toExcl.toNumber());\n } else {\n result = inputString.substring(fromIncl.toNumber());\n }\n return new ExprEvalSuccessObj(StringValue.of(result));\n }\n\n public getReturnType(argumentTypes: ExprType[]): ExprType {\n return Type.STRING;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/TOBOOLEAN.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/TOBOOLEAN.ts"],"names":[],"mappings":"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","file":"expression/function/impl/TOBOOLEAN.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\n\nexport class TOBOOLEAN extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOBOOLEAN\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(BooleanValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): boolean {\n if (value instanceof BooleanValue) {\n return value.getValue();\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n switch (value.getValue()) {\n case \"TRUE\":\n case \"true\":\n case \"1\":\n return true;\n case \"FALSE\":\n case \"false\":\n case \"0\":\n return false;\n default:\n throw new Error(`Not a boolean value: ${value.getValue()}`);\n }\n }\n if (value instanceof NumericValue) {\n const val: Decimal = value.getValue();\n if (val.isZero()) {\n return false;\n }\n if (val.toNumber() === 1) {\n return true;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n if (value instanceof LogicalValue) {\n const val = value.getValue();\n if (val === true) {\n return true;\n }\n if (val === false) {\n return false;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/TOLOGICAL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/TOLOGICAL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,OAAO,SAAU,SAAQ,IAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE;QAEhE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,CAAC,sBAAsB,EAAE;gBACxD,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;aACH;SACF;aAAM;YACL,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CACpB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAa,CAAC,CAClD,CACF,CAAC;SACH;IACH,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA/CuB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOLOGICAL.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean\";\nimport { Expr } from \"../../Expr\";\n\nexport class TOLOGICAL extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOLOGICAL\", [new FuncArgBoolean(true, \"object\")]);\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n if (isExprEvalError(val)) {\n if (val.status === ExprEvalStatus.IFC_PROPERTY_NOT_FOUND) {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(LogicalValue.unknown())\n );\n }\n } else {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(\n LogicalValue.of(val.result.getValue() as boolean)\n )\n );\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n try {\n return new ExprEvalSuccessObj(val);\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Func } from "../Func.js";
|
|
2
|
+
import { FuncArgString } from "../arg/FuncArgString.js";
|
|
3
|
+
import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
|
|
4
|
+
import { StringValue } from "../../../value/StringValue.js";
|
|
5
|
+
import { Type } from "../../../type/Types.js";
|
|
6
|
+
export class TOLOWERCASE extends Func {
|
|
7
|
+
constructor() {
|
|
8
|
+
super("TOLOWERCASE", [new FuncArgString(true, "object")]);
|
|
9
|
+
}
|
|
10
|
+
calculateResult(callingExpr, evaluatedArguments) {
|
|
11
|
+
return new ExprEvalSuccessObj(StringValue.of(evaluatedArguments.get("object")
|
|
12
|
+
.getValue()
|
|
13
|
+
.toLowerCase()));
|
|
14
|
+
}
|
|
15
|
+
getReturnType(argumentTypes) {
|
|
16
|
+
return Type.STRING;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TOLOWERCASE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/TOLOWERCASE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,MAAM,OAAO,WAAY,SAAQ,IAAI;IACnC;QACE,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACS,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,OAAO,IAAI,kBAAkB,CAC3B,WAAW,CAAC,EAAE,CACX,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAiB;aAC9C,QAAQ,EAAE;aACV,WAAW,EAAE,CACjB,CACF,CAAC;IACJ,CAAC;IAEM,aAAa,CAAC,aAAyB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"expression/function/impl/TOLOWERCASE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgString } from \"../arg/FuncArgString.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\n\nexport class TOLOWERCASE extends Func {\n constructor() {\n super(\"TOLOWERCASE\", [new FuncArgString(true, \"object\")]);\n }\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return new ExprEvalSuccessObj(\n StringValue.of(\n (evaluatedArguments.get(\"object\") as StringValue)\n .getValue()\n .toLowerCase()\n )\n );\n }\n\n public getReturnType(argumentTypes: ExprType[]): ExprType {\n return Type.STRING;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,MAAM,OAAO,SAAU,SAAQ,IAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,UAAU,EACzB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,cAAc,EAAE;YACnE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS;gBACnC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAClB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA/CuB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TONUMERIC.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\n\nexport class TONUMERIC extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TONUMERIC\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(NumericValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.MATH_ERROR,\n `Cannot convert ${val.getValue()} to numeric: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): Decimal {\n if (value instanceof BooleanValue) {\n return value.getValue() ? new Decimal(1) : new Decimal(0);\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n return new Decimal(value.getValue());\n }\n if (value instanceof NumericValue) {\n return value.getValue();\n }\n if (value instanceof LogicalValue) {\n return value.getValue() === \"UNKNOWN\"\n ? new Decimal(-1)\n : value.getValue()\n ? new Decimal(1)\n : new Decimal(0);\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Func } from "../Func.js";
|
|
2
|
+
import { FuncArgString } from "../arg/FuncArgString.js";
|
|
3
|
+
import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
|
|
4
|
+
import { StringValue } from "../../../value/StringValue.js";
|
|
5
|
+
import { Type } from "../../../type/Types.js";
|
|
6
|
+
export class TOUPPERCASE extends Func {
|
|
7
|
+
constructor() {
|
|
8
|
+
super("TOUPPERCASE", [new FuncArgString(true, "object")]);
|
|
9
|
+
}
|
|
10
|
+
calculateResult(callingExpr, evaluatedArguments) {
|
|
11
|
+
return new ExprEvalSuccessObj(StringValue.of(evaluatedArguments.get("object")
|
|
12
|
+
.getValue()
|
|
13
|
+
.toUpperCase()));
|
|
14
|
+
}
|
|
15
|
+
getReturnType(argumentTypes) {
|
|
16
|
+
return Type.STRING;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TOUPPERCASE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/function/impl/TOUPPERCASE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,MAAM,OAAO,WAAY,SAAQ,IAAI;IACnC;QACE,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACS,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,OAAO,IAAI,kBAAkB,CAC3B,WAAW,CAAC,EAAE,CACX,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAiB;aAC9C,QAAQ,EAAE;aACV,WAAW,EAAE,CACjB,CACF,CAAC;IACJ,CAAC;IAEM,aAAa,CAAC,aAAyB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"expression/function/impl/TOUPPERCASE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgString } from \"../arg/FuncArgString.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\n\nexport class TOUPPERCASE extends Func {\n constructor() {\n super(\"TOUPPERCASE\", [new FuncArgString(true, \"object\")]);\n }\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return new ExprEvalSuccessObj(\n StringValue.of(\n (evaluatedArguments.get(\"object\") as StringValue)\n .getValue()\n .toUpperCase()\n )\n );\n }\n\n public getReturnType(argumentTypes: ExprType[]): ExprType {\n return Type.STRING;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["util/TextSpan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,OAAO,QAAQ;IAInB,YAAY,KAAmB,EAAE,GAAiB;QAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;SACjB;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;IACH,CAAC;IAED,MAAM,CAAC,EAAE,CACP,QAAgB,EAChB,UAAkB,EAClB,MAAc,EACd,QAAgB;QAEhB,OAAO,IAAI,QAAQ,CACjB,IAAI,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,EACtC,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAC/B;YACA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACnE;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,kIAAkI;YAClI,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,6CAC/D,KAAK,CAAC,MACR,GAAG,CACJ,CAAC;SACH;QACD,IACE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAC7B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EACjD;YACA,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,+EAC/D,KAAK,CAAC,MACR,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CACtC,CAAC;SACH;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACtB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CACrB,CAAC;SACH;QACD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAC/D,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxD,OAAO,GAAG,IAAI,CAAC;aAChB;iBAAM,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,OAAO,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;aAC3B;SACF;QACD,MAAM,IAAI,KAAK,CACb,mIAAmI,CACpI,CAAC;IACJ,CAAC;IAEM,SAAS,CAAC,KAAa,EAAE,gBAAwB,GAAG;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,kIAAkI;YAClI,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,6CAC/D,KAAK,CAAC,MACR,GAAG,CACJ,CAAC;SACH;QACD,IACE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAC7B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EACrD;YACA,2GAA2G;YAC3G,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,+EAC/D,KAAK,CAAC,MACR,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CACtC,CAAC;SACH;QACD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC/C,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACxD,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,gBAAgB,CACtB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EACf,aAAa,EACb,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EACrB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAC1C,CACF,CAAC;aACH;iBAAM,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBACpC,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,gBAAgB,CACtB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EACf,aAAa,EACb,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CACtB,CACF,CAAC;gBACF,WAAW,GAAG,IAAI,CAAC;aACpB;iBAAM,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClC,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,gBAAgB,CACtB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EACf,aAAa,EACb,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAChB,CACF,CAAC;gBACF,WAAW,GAAG,KAAK,CAAC;aACrB;iBAAM;gBACL,IAAI,WAAW,EAAE;oBACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;iBACvE;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC9B;aACF;SACF;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,mIAAmI,CACpI,CAAC;IACJ,CAAC;IAEO,gBAAgB,CACtB,IAAY,EACZ,SAAiB,GAAG,EACpB,UAAkB,CAAC,EACnB,WAAmB,IAAI,CAAC,MAAM,GAAG,OAAO;QAExC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,gDAAgD,MAAM,mBAAmB,CAC1E,CAAC;SACH;QACD,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,QAAQ,GAAG,CAAC,CAAC;SACd;QACD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF","file":"util/TextSpan.js","sourcesContent":["import { TextPosition } from \"./TextPosition.js\";\nimport { isNullish } from \"./IfcExpressionUtils.js\";\n\nexport class TextSpan {\n private _start: TextPosition;\n private _end: TextPosition;\n\n constructor(start: TextPosition, end: TextPosition) {\n if (start.isBefore(end)) {\n this._start = start;\n this._end = end;\n } else {\n this._start = end;\n this._end = start;\n }\n }\n\n static of(\n fromLine: number,\n fromColumn: number,\n toLine: number,\n toColumn: number\n ) {\n return new TextSpan(\n new TextPosition(fromLine, fromColumn),\n new TextPosition(toLine, toColumn)\n );\n }\n\n get start(): TextPosition {\n return this._start;\n }\n\n get end(): TextPosition {\n return this._end;\n }\n\n toString(): string {\n return this._start.toString() + \" - \" + this._end.toString();\n }\n\n public getCoveredText(input: string) {\n if (\n this._start.isFirstLine() &&\n this._end.isFirstLine() &&\n this.end.column <= input.length\n ) {\n return input.substr(this._start.column - 1, this._end.column - 1);\n }\n const lines = input.split(\"\\n\");\n if (lines.length > this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length > this._end.column\n ) {\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n if (this._start.isAtSameLine(this._end)) {\n return lines[this.start.line - 1].substr(\n this._start.column - 1,\n this._end.column - 1\n );\n }\n let result = \"\";\n let copying = false;\n for (let line = this._start.line; line <= this.end.line; line++) {\n if (line === this._start.line) {\n result += lines[line - 1].substr(this.start.column - 1);\n copying = true;\n } else if (line === this._end.line) {\n result += lines[line - 1].substr(0, this.end.column - 1);\n return result;\n } else if (copying) {\n result += lines[line - 1];\n }\n }\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n public underline(input: string, underlineChar: string = \"~\"): string {\n const lines = input.split(\"\\n\");\n if (lines.length < this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length + 1 < this._end.column\n ) {\n //tolerate a one-off error as the antlr4 syntax error is sometimes at index 0, sometimes at index [length].\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n let result = [];\n let underlining = false;\n for (let line = 1; line <= lines.length; line++) {\n if (line === this._start.line && line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1,\n this._end.column - this._start.column + 1\n )\n );\n } else if (line === this._start.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1\n )\n );\n underlining = true;\n } else if (line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n 0,\n this.end.column\n )\n );\n underlining = false;\n } else {\n if (underlining) {\n result.push(...this.underlineOneLine(lines[line - 1], underlineChar));\n } else {\n result.push(lines[line - 1]);\n }\n }\n }\n return result.join(\"\\n\");\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n private underlineOneLine(\n line: string,\n ulChar: string = \"~\",\n ulStart: number = 0,\n ulLength: number = line.length - ulStart\n ): Array<string> {\n if (ulChar.length != 1) {\n throw new Error(\n `Underline char must be a string of length 1, ${ulChar} does not qualify`\n );\n }\n if (ulLength <= 0) {\n ulLength = 1;\n }\n return [line, \" \".repeat(ulStart) + ulChar.repeat(ulLength)];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["util/TextSpan.ts"],"names":[],"mappings":"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","file":"util/TextSpan.js","sourcesContent":["import { TextPosition } from \"./TextPosition.js\";\n\nexport class TextSpan {\n private _start: TextPosition;\n private _end: TextPosition;\n\n constructor(start: TextPosition, end: TextPosition) {\n if (start.isBefore(end)) {\n this._start = start;\n this._end = end;\n } else {\n this._start = end;\n this._end = start;\n }\n }\n\n static of(\n fromLine: number,\n fromColumn: number,\n toLine: number,\n toColumn: number\n ) {\n return new TextSpan(\n new TextPosition(fromLine, fromColumn),\n new TextPosition(toLine, toColumn)\n );\n }\n\n get start(): TextPosition {\n return this._start;\n }\n\n get end(): TextPosition {\n return this._end;\n }\n\n toString(): string {\n return this._start.toString() + \" - \" + this._end.toString();\n }\n\n public getCoveredText(input: string) {\n if (\n this._start.isFirstLine() &&\n this._end.isFirstLine() &&\n this.end.column <= input.length\n ) {\n return input.substr(this._start.column - 1, this._end.column - 1);\n }\n const lines = input.split(\"\\n\");\n if (lines.length > this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length > this._end.column\n ) {\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n if (this._start.isAtSameLine(this._end)) {\n return lines[this.start.line - 1].substr(\n this._start.column - 1,\n this._end.column - 1\n );\n }\n let result = \"\";\n let copying = false;\n for (let line = this._start.line; line <= this.end.line; line++) {\n if (line === this._start.line) {\n result += lines[line - 1].substr(this.start.column - 1);\n copying = true;\n } else if (line === this._end.line) {\n result += lines[line - 1].substr(0, this.end.column - 1);\n return result;\n } else if (copying) {\n result += lines[line - 1];\n }\n }\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n public underline(input: string, underlineChar: string = \"~\"): string {\n const lines = input.split(\"\\n\");\n if (lines.length < this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length + 1 < this._end.column\n ) {\n //tolerate a one-off error as the antlr4 syntax error is sometimes at index 0, sometimes at index [length].\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n let result = [];\n let underlining = false;\n for (let line = 1; line <= lines.length; line++) {\n if (line === this._start.line && line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1,\n this._end.column - this._start.column + 1\n )\n );\n } else if (line === this._start.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1\n )\n );\n underlining = true;\n } else if (line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n 0,\n this.end.column\n )\n );\n underlining = false;\n } else {\n if (underlining) {\n result.push(...this.underlineOneLine(lines[line - 1], underlineChar));\n } else {\n result.push(lines[line - 1]);\n }\n }\n }\n return result.join(\"\\n\");\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n private underlineOneLine(\n line: string,\n ulChar: string = \"~\",\n ulStart: number = 0,\n ulLength: number = line.length - ulStart\n ): Array<string> {\n if (ulChar.length != 1) {\n throw new Error(\n `Underline char must be a string of length 1, ${ulChar} does not qualify`\n );\n }\n if (ulLength <= 0) {\n ulLength = 1;\n }\n return [line, \" \".repeat(ulStart) + ulChar.repeat(ulLength)];\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ifc-expressions",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Parsing and evaluation of IFC expressions",
|
|
5
5
|
"main": "dist/cjs/IfcExpression.js",
|
|
6
6
|
"module": "dist/mjs/IfcExpression.js",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"require": "./dist/cjs/IfcExpression.js"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
|
+
"license": "Apache-2.0",
|
|
13
14
|
"types": "./dist/IfcExpression.d.ts",
|
|
14
15
|
"files": [
|
|
15
16
|
"./dist/**/*",
|