yaml-unist-parser
Version:
A YAML parser that produces output compatible with unist
27 lines (25 loc) • 1.31 kB
JavaScript
import { createPosition } from "../factories/position.mjs";
import { extractComments } from "../utils/extract-comments.mjs";
import { transformPair } from "./pair.mjs";
import { getLast } from "../utils/get-last.mjs";
import { createMapping } from "../factories/mapping.mjs";
import { createMappingItem } from "../factories/mapping-item.mjs";
//#region src/transforms/map.ts
function transformMap(map, context, props) {
const srcToken = map.srcToken;
// istanbul ignore if -- @preserve
if (!srcToken || srcToken.type !== "block-map") throw new Error("Expected block mapping srcToken");
const mappingItems = map.items.map((pair, index) => {
const srcItem = srcToken.items[index];
return transformPair(pair, srcItem, context, createMappingItem);
});
if (map.items.length < srcToken.items.length) for (let i = map.items.length; i < srcToken.items.length; i++) {
const srcItem = srcToken.items[i];
for (const token of extractComments(srcItem.start, context))
// istanbul ignore next -- @preserve
throw new Error(`Unexpected token type in collection item start: ${token.type}`);
}
return createMapping(createPosition(mappingItems[0].position.start, getLast(mappingItems).position.end), context.transformContentProperties(map, props.tokens), mappingItems);
}
//#endregion
export { transformMap };