UNPKG

majas

Version:

Format-agnostic structure converter.

33 lines (32 loc) 996 B
import { readFileSync } from 'fs'; import ParseError from './ParseError.js'; import { TextDecoder } from 'util'; export function decode(encoding, buf) { return new TextDecoder(encoding).decode(buf); } export function readFile(encoding, path) { return readFileSync(path, { encoding }); } export function decodeRawInput(input, encoding, decodeArg = readFile, decodeStdin = decode) { return typeof input === 'string' ? decodeArg(encoding, input) : decodeStdin(encoding, input); } export class FormatterBase { format; constructor(format) { this.format = format; } parse(input) { try { return { format: this.format, root: this.parseImpl(input), }; } catch (err) { throw err instanceof ParseError ? err : this.error(input, undefined, err); } } error(input, message, cause) { return new ParseError(this.format, String(input), message, cause); } }