123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
- var identity = require('../../nodes/identity.js');
- var Pair = require('../../nodes/Pair.js');
- var Scalar = require('../../nodes/Scalar.js');
- var YAMLSeq = require('../../nodes/YAMLSeq.js');
- function resolvePairs(seq, onError) {
- if (identity.isSeq(seq)) {
- for (let i = 0; i < seq.items.length; ++i) {
- let item = seq.items[i];
- if (identity.isPair(item))
- continue;
- else if (identity.isMap(item)) {
- if (item.items.length > 1)
- onError('Each pair must have its own sequence indicator');
- const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));
- if (item.commentBefore)
- pair.key.commentBefore = pair.key.commentBefore
- ? `${item.commentBefore}\n${pair.key.commentBefore}`
- : item.commentBefore;
- if (item.comment) {
- const cn = pair.value ?? pair.key;
- cn.comment = cn.comment
- ? `${item.comment}\n${cn.comment}`
- : item.comment;
- }
- item = pair;
- }
- seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);
- }
- }
- else
- onError('Expected a sequence for this tag');
- return seq;
- }
- function createPairs(schema, iterable, ctx) {
- const { replacer } = ctx;
- const pairs = new YAMLSeq.YAMLSeq(schema);
- pairs.tag = 'tag:yaml.org,2002:pairs';
- let i = 0;
- if (iterable && Symbol.iterator in Object(iterable))
- for (let it of iterable) {
- if (typeof replacer === 'function')
- it = replacer.call(iterable, String(i++), it);
- let key, value;
- if (Array.isArray(it)) {
- if (it.length === 2) {
- key = it[0];
- value = it[1];
- }
- else
- throw new TypeError(`Expected [key, value] tuple: ${it}`);
- }
- else if (it && it instanceof Object) {
- const keys = Object.keys(it);
- if (keys.length === 1) {
- key = keys[0];
- value = it[key];
- }
- else
- throw new TypeError(`Expected { key: value } tuple: ${it}`);
- }
- else {
- key = it;
- }
- pairs.items.push(Pair.createPair(key, value, ctx));
- }
- return pairs;
- }
- const pairs = {
- collection: 'seq',
- default: false,
- tag: 'tag:yaml.org,2002:pairs',
- resolve: resolvePairs,
- createNode: createPairs
- };
- exports.createPairs = createPairs;
- exports.pairs = pairs;
- exports.resolvePairs = resolvePairs;
|