@abaplint/transpiler
Version:
35 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SQLFieldListTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
const sql_field_1 = require("./sql_field");
const sql_field_name_1 = require("./sql_field_name");
class SQLFieldListTranspiler {
transpile(node, traversal) {
const fields = [];
for (const f of node.getChildren() || []) {
if (f instanceof abaplint.Nodes.ExpressionNode && f.get() instanceof abaplint.Expressions.SQLField) {
const code = new sql_field_1.SQLFieldTranspiler().transpile(f, traversal).getCode();
fields.push(code);
}
else if (f instanceof abaplint.Nodes.ExpressionNode && f.get() instanceof abaplint.Expressions.SQLFieldName) {
const code = new sql_field_name_1.SQLFieldNameTranspiler().transpile(f, traversal).getCode();
fields.push(code);
}
else if (f instanceof abaplint.Nodes.ExpressionNode && f.get() instanceof abaplint.Expressions.SQLFieldList) {
// todo, I have no idea why its nested like this when there is just one field
return new SQLFieldListTranspiler().transpile(f, traversal);
}
else {
const concat = f.concatTokens();
if (concat !== ",") {
fields.push(concat);
}
}
}
return new chunk_1.Chunk().append(fields.join(", "), node, traversal);
}
}
exports.SQLFieldListTranspiler = SQLFieldListTranspiler;
//# sourceMappingURL=sql_field_list.js.map