UNPKG

antlr-ng

Version:

Next generation ANTLR Tool

45 lines (44 loc) 1.19 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { writeFileSync } from "node:fs"; import { basename, join } from "node:path"; class LogManager { static { __name(this, "LogManager"); } records = []; log(info) { const stack = new Error().stack?.split("\n"); let fileName; let lineNumber; if (stack) { try { const stackLine = stack[3]; const match = stackLine.match(/\(([^)]+)\)/); if (match) { const parts = match[1].split(":"); fileName = basename(parts[0]); lineNumber = parseInt(parts[1], 10); } } catch { } } this.records.push({ ...info, fileName, lineNumber }); } save(filename) { if (!filename) { filename = join(".", `antlrng-${Date.now()}.log`); } writeFileSync(filename, this.toString()); return filename; } toString() { const entries = this.records.map((entry) => { return `${entry.component ?? ""} ${entry.fileName ?? ""}:${entry.lineNumber ?? -1} ${entry.msg}`; }); return entries.join("\n"); } } export { LogManager };