yaml-unist-parser
Version:
A YAML parser that produces output compatible with unist
32 lines (31 loc) • 1.74 kB
JavaScript
import { createMappingKey } from "../factories/mapping-key.js";
import { createMappingValue } from "../factories/mapping-value.js";
import { createEmptyPosition, createPosition } from "../factories/position.js";
export function transformAstPair(pair, context, createNode, additionalKeyRange, additionalValueRange) {
const keyContent = context.transformNode(pair.key);
const valueContent = context.transformNode(pair.value);
const mappingKey = keyContent || additionalKeyRange
? createMappingKey(context.transformRange({
origStart: additionalKeyRange
? additionalKeyRange.origStart
: keyContent.position.start.offset,
origEnd: keyContent
? keyContent.position.end.offset
: additionalKeyRange.origStart + 1,
}), keyContent)
: null;
const mappingValue = valueContent || additionalValueRange
? createMappingValue(context.transformRange({
origStart: additionalValueRange
? additionalValueRange.origStart
: // istanbul ignore next
valueContent.position.start.offset,
origEnd: valueContent
? valueContent.position.end.offset
: additionalValueRange.origStart + 1,
}), valueContent)
: null;
return createNode(createPosition(mappingKey ? mappingKey.position.start : mappingValue.position.start, mappingValue ? mappingValue.position.end : mappingKey.position.end), mappingKey ||
createMappingKey(createEmptyPosition(mappingValue.position.start), null), mappingValue ||
createMappingValue(createEmptyPosition(mappingKey.position.end), null));
}