UNPKG

@abaplint/transpiler

Version:
40 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StringTemplateTranspiler = void 0; const core_1 = require("@abaplint/core"); const _1 = require("."); const chunk_1 = require("../chunk"); class StringTemplateTranspiler { transpile(node, traversal) { let ret = ""; const children = node.getChildren(); // eslint-disable-next-line @typescript-eslint/prefer-for-of for (let i = 0; i < children.length; i++) { const c = children[i]; const g = c.get(); if (c instanceof core_1.Nodes.TokenNode) { let original = c.getFirstToken().getStr(); original = original.substring(1, original.length - 1); original = original.replace(/`/g, "\\`"); if (g instanceof core_1.Tokens.StringTemplate) { ret = "`" + original + "`"; } else if (g instanceof core_1.Tokens.StringTemplateBegin) { ret = "`" + original + "${"; } else if (g instanceof core_1.Tokens.StringTemplateMiddle) { ret = ret + "}" + original + "${"; } else if (g instanceof core_1.Tokens.StringTemplateEnd) { ret = ret + "}" + original + "`"; } } else if (c instanceof core_1.Nodes.ExpressionNode) { ret += new _1.StringTemplateSourceTranspiler().transpile(c, traversal).getCode(); } } return new chunk_1.Chunk("new abap.types.String().set(" + ret + ")"); } } exports.StringTemplateTranspiler = StringTemplateTranspiler; //# sourceMappingURL=string_template.js.map