rawsql-ts
Version:
High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
31 lines • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.joinLexemeValues = joinLexemeValues;
const NO_SPACE_BEFORE = new Set([",", ")", "]", "}", ";"]);
const NO_SPACE_AFTER = new Set(["(", "[", "{"]);
/**
* Join lexeme values into a whitespace-normalized SQL fragment.
* Keeps punctuation tight while preserving spacing elsewhere.
*/
function joinLexemeValues(lexemes, start, end) {
var _a, _b;
let result = "";
for (let i = start; i < end; i++) {
const current = lexemes[i];
if (!current) {
continue;
}
if (result.length === 0) {
result = current.value;
continue;
}
const previous = (_b = (_a = lexemes[i - 1]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : "";
const omitSpace = NO_SPACE_BEFORE.has(current.value) ||
NO_SPACE_AFTER.has(previous) ||
current.value === "." ||
previous === ".";
result += omitSpace ? current.value : ` ${current.value}`;
}
return result;
}
//# sourceMappingURL=ParserStringUtils.js.map