@abaplint/transpiler 2.6.41 → 2.6.43
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.
|
@@ -7,5 +7,5 @@ export declare class ConstantTranspiler implements IExpressionTranspiler {
|
|
|
7
7
|
constructor(addGet?: boolean);
|
|
8
8
|
transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
|
|
9
9
|
private character;
|
|
10
|
-
escape(str: string): string;
|
|
10
|
+
static escape(str: string): string;
|
|
11
11
|
}
|
|
@@ -28,14 +28,14 @@ class ConstantTranspiler {
|
|
|
28
28
|
return new chunk_1.Chunk().append(code, node, traversal);
|
|
29
29
|
}
|
|
30
30
|
else if (res.startsWith("`") && this.addGet === false) {
|
|
31
|
-
const code = "new abap.types.String().set(" +
|
|
31
|
+
const code = "new abap.types.String().set(" + ConstantTranspiler.escape(res) + ")";
|
|
32
32
|
return new chunk_1.Chunk().append(code, node, traversal);
|
|
33
33
|
}
|
|
34
34
|
else {
|
|
35
35
|
if (res.startsWith("'")) {
|
|
36
36
|
res = "'" + res.substring(1, res.length - 1).trimEnd() + "'";
|
|
37
37
|
}
|
|
38
|
-
const code =
|
|
38
|
+
const code = ConstantTranspiler.escape(res);
|
|
39
39
|
return new chunk_1.Chunk().append(code, node, traversal);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -56,7 +56,7 @@ class ConstantTranspiler {
|
|
|
56
56
|
chunk.append(code, node, traversal);
|
|
57
57
|
}
|
|
58
58
|
else if (res.startsWith("`") && this.addGet === false) {
|
|
59
|
-
const code = "new abap.types.String().set(" +
|
|
59
|
+
const code = "new abap.types.String().set(" + ConstantTranspiler.escape(res) + ")";
|
|
60
60
|
chunk.append(code, node, traversal);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -72,10 +72,10 @@ class ConstantTranspiler {
|
|
|
72
72
|
// note: Characters cannot have length = zero, 1 is minimum
|
|
73
73
|
length = 1;
|
|
74
74
|
}
|
|
75
|
-
const code = "new abap.types.Character(" + length + ").set(" +
|
|
75
|
+
const code = "new abap.types.Character(" + length + ").set(" + ConstantTranspiler.escape(res) + ")";
|
|
76
76
|
return code;
|
|
77
77
|
}
|
|
78
|
-
escape(str) {
|
|
78
|
+
static escape(str) {
|
|
79
79
|
str = str.replace(/\\/g, "\\\\");
|
|
80
80
|
if (str.startsWith("'")) {
|
|
81
81
|
const reg = new RegExp(/(.+)''(.+)/g);
|
|
@@ -21,7 +21,13 @@ class DataTranspiler {
|
|
|
21
21
|
if (found === undefined) {
|
|
22
22
|
throw new Error("DataTranspiler, var not found, \"" + token.getStr() + "\"");
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
let value = "";
|
|
25
|
+
if (found.getValue() !== undefined && node.concatTokens().includes(" & ")) {
|
|
26
|
+
value = "\n" + traversal.setValues(found, found.getName());
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
value = DataTranspiler.buildValue(node, found.getName().toLowerCase(), traversal);
|
|
30
|
+
}
|
|
25
31
|
const ret = new chunk_1.Chunk()
|
|
26
32
|
.appendString("let ")
|
|
27
33
|
.append(found.getName().toLowerCase(), token, traversal)
|
|
@@ -39,7 +45,7 @@ class DataTranspiler {
|
|
|
39
45
|
int = val.findFirstExpression(abaplint.Expressions.ConstantString);
|
|
40
46
|
}
|
|
41
47
|
if (int) {
|
|
42
|
-
const escaped =
|
|
48
|
+
const escaped = constant_1.ConstantTranspiler.escape(int.concatTokens());
|
|
43
49
|
value = "\n" + name + ".set(" + escaped + ");";
|
|
44
50
|
}
|
|
45
51
|
else if (val.getChildren()[1].get() instanceof abaplint.Expressions.SimpleFieldChain) {
|
|
@@ -64,7 +64,7 @@ class InterfaceTranspiler {
|
|
|
64
64
|
const valExpression = constantStatement === null || constantStatement === void 0 ? void 0 : constantStatement.findFirstExpression(abaplint.Expressions.Value);
|
|
65
65
|
if ((valExpression === null || valExpression === void 0 ? void 0 : valExpression.getChildren()[1].get()) instanceof abaplint.Expressions.SimpleFieldChain) {
|
|
66
66
|
const s = new expressions_1.FieldChainTranspiler().transpile(valExpression.getChildren()[1], traversal, false).getCode();
|
|
67
|
-
const e =
|
|
67
|
+
const e = expressions_1.ConstantTranspiler.escape(s);
|
|
68
68
|
ret += name + ".set(" + e + ");\n";
|
|
69
69
|
continue;
|
|
70
70
|
}
|
package/build/src/traversal.js
CHANGED
|
@@ -501,21 +501,23 @@ class Traversal {
|
|
|
501
501
|
static setValues(identifier, name) {
|
|
502
502
|
const val = identifier.getValue();
|
|
503
503
|
let ret = "";
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
504
|
+
const handle = (val, name) => {
|
|
505
|
+
if (typeof val === "string") {
|
|
506
|
+
const e = expressions_1.ConstantTranspiler.escape(val);
|
|
507
|
+
ret += name + ".set(" + e + ");\n";
|
|
508
|
+
}
|
|
509
|
+
else if (typeof val === "object") {
|
|
510
|
+
const a = val;
|
|
511
|
+
for (const v of Object.keys(val)) {
|
|
512
|
+
const s = a[v];
|
|
513
|
+
if (s === undefined) {
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
516
|
+
handle(s, name + ".get()." + v);
|
|
514
517
|
}
|
|
515
|
-
s = new expressions_1.ConstantTranspiler().escape(s);
|
|
516
|
-
ret += name + ".get()." + v + ".set(" + s + ");\n";
|
|
517
518
|
}
|
|
518
|
-
}
|
|
519
|
+
};
|
|
520
|
+
handle(val, name);
|
|
519
521
|
return ret;
|
|
520
522
|
}
|
|
521
523
|
buildInternalName(name, def) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.43",
|
|
4
4
|
"description": "Transpiler",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/src/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"author": "abaplint",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@abaplint/core": "^2.99.
|
|
31
|
+
"@abaplint/core": "^2.99.7",
|
|
32
32
|
"source-map": "^0.7.4"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|