yaml-unist-parser
Version:
A YAML parser that produces output compatible with unist
44 lines (42 loc) • 1.81 kB
JavaScript
import { transformAlias } from "./alias.mjs";
import { transformBlockFolded } from "./block-folded.mjs";
import { transformBlockLiteral } from "./block-literal.mjs";
import { transformFlowMap } from "./flow-map.mjs";
import { transformFlowSeq } from "./flow-seq.mjs";
import { transformMap } from "./map.mjs";
import { transformPlain } from "./plain.mjs";
import { transformQuoteDouble } from "./quote-double.mjs";
import { transformQuoteSingle } from "./quote-single.mjs";
import { transformSeq } from "./seq.mjs";
import * as YAML from "yaml";
//#region src/transforms/transform.ts
function transformNode(node, context, props) {
if (node == null) return null;
if (YAML.isAlias(node)) return transformAlias(node, context, props);
if (YAML.isMap(node)) {
if (node.flow) return transformFlowMap(node, context, props);
return transformMap(node, context, props);
}
if (YAML.isSeq(node)) {
if (node.flow) return transformFlowSeq(node, context, props);
return transformSeq(node, context, props);
}
if (YAML.isScalar(node)) {
switch (node.type) {
case "BLOCK_FOLDED": return transformBlockFolded(node, context, props);
case "BLOCK_LITERAL": return transformBlockLiteral(node, context, props);
case "PLAIN": return transformPlain(node, context, props);
case "QUOTE_DOUBLE": return transformQuoteDouble(node, context, props);
case "QUOTE_SINGLE": return transformQuoteSingle(node, context, props);
}
// istanbul ignore next -- @preserve
throw new Error(`Unexpected scalar type: ${node.type}`);
}
// istanbul ignore next -- @preserve
throw new Error(`Unexpected unknown node type`);
}
function isEmptyNode(node, props) {
return !node || node.range[0] === node.range[1] && props.tokens.every((t) => t.type === "comment");
}
//#endregion
export { isEmptyNode, transformNode };