UNPKG

majas

Version:

Format-agnostic structure converter.

22 lines (21 loc) 696 B
import {} from '../core/Format.js'; import { Ajv } from 'ajv'; import { IRNodeSchema, normalize } from '../core/IRNode.js'; import { FormatterBase } from '../core/Formatter.js'; const validateIRNode = new Ajv().compile(IRNodeSchema); export default class IR extends FormatterBase { space; constructor(format, space) { super(format); this.space = space; } parseImpl(input) { const root = JSON.parse(input); if (!validateIRNode(root)) throw this.error(input, 'invalid IRNode structure', validateIRNode.errors); return root; } emit(output) { return JSON.stringify(normalize(output.root), null, this.space); } }