cspell-grammar
Version:
Grammar parsing support for cspell
40 lines • 1.29 kB
JavaScript
import { promises as fs } from 'node:fs';
import * as path from 'node:path';
import { parser as parserTypeScript } from './parsers/typescript/index.js';
const parsers = {
'.ts': parserTypeScript,
};
/**
* Run simple parser
* @param args -- command line arguments
* @returns Promise
*/
export async function run(args) {
// early out if there are not enough arguments
if (args.length < 3) {
console.log('usage...');
return;
}
const filename = args.slice(2).find((p) => !p.startsWith('-'));
if (!filename) {
console.log('filename missing');
return;
}
const ext = path.extname(filename);
const parser = parsers[ext];
if (!parser) {
console.log(`No parser for ${path.basename(filename)}`);
return;
}
console.log(`File: ${path.basename(filename)} Parser: ${parser.name}`);
const content = await fs.readFile(filename, 'utf8');
const result = parser.parse(content, filename);
for (const pt of result.parsedTexts) {
emit(pt);
}
}
function emit(pt) {
const t = pt.text.replaceAll('\t', '↦').replaceAll(/\r?\n/g, '↩︎').replaceAll('\r', '⇠');
console.log(`${pt.range[0]}-${pt.range[1]}\t${t}\t${pt.scope?.toString() || ''}`);
}
//# sourceMappingURL=app.js.map