UNPKG

yaml-unist-parser

Version:

A YAML parser that produces output compatible with unist

23 lines (22 loc) 1.38 kB
import { createFlowMapping } from "../factories/flow-mapping.js"; import { createFlowMappingItem } from "../factories/flow-mapping-item.js"; import { extractComments } from "../utils/extract-comments.js"; import { getFlowMapItemAdditionalRanges } from "../utils/get-flow-map-item-additional-ranges.js"; import { getLast } from "../utils/get-last.js"; import { groupCstFlowCollectionItems } from "../utils/group-cst-flow-collection-items.js"; import { transformAstPair } from "./pair.js"; export function transformFlowMap(flowMap, context) { const cstItemsWithoutComments = extractComments(flowMap.cstNode.items, context); const groupedCstItems = groupCstFlowCollectionItems(cstItemsWithoutComments); const flowMappingItems = flowMap.items.map((pair, index) => { const cstNodes = groupedCstItems[index]; const { additionalKeyRange, additionalValueRange } = getFlowMapItemAdditionalRanges(cstNodes); return transformAstPair(pair, context, createFlowMappingItem, additionalKeyRange, additionalValueRange); }); const openMarker = cstItemsWithoutComments[0]; const closeMarker = getLast(cstItemsWithoutComments); return createFlowMapping(context.transformRange({ origStart: openMarker.origOffset, origEnd: closeMarker.origOffset + 1, }), context.transformContent(flowMap), flowMappingItems); }