UNPKG

rawsql-ts

Version:

[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.

38 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LiteralParser = void 0; const ValueComponent_1 = require("../models/ValueComponent"); const LiteralTokenReader_1 = require("../tokenReaders/LiteralTokenReader"); class LiteralParser { static parseFromLexeme(lexemes, index) { // Process literal value let idx = index; const valueText = lexemes[idx].value; let parsedValue; const lex = LiteralTokenReader_1.literalKeywordParser.parse(valueText.toLowerCase(), 0); if (lex) { const value = new ValueComponent_1.RawString(lex.keyword); idx++; return { value, newIndex: idx }; } // Check if it is a number if (/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(valueText)) { parsedValue = Number(valueText); } // Otherwise, treat it as a string else { // Remove single quotes if enclosed if (valueText.startsWith("'") && valueText.endsWith("'")) { parsedValue = valueText.slice(1, -1); } else { parsedValue = valueText; } } idx++; const value = new ValueComponent_1.LiteralValue(parsedValue); return { value, newIndex: idx }; } } exports.LiteralParser = LiteralParser; //# sourceMappingURL=LiteralParser.js.map