source: node_modules/yaml/dist/schema/yaml-1.1/pairs.js@ d24f17c

main
Last change on this file since d24f17c was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.8 KB
RevLine 
[d24f17c]1'use strict';
2
3var identity = require('../../nodes/identity.js');
4var Pair = require('../../nodes/Pair.js');
5var Scalar = require('../../nodes/Scalar.js');
6var YAMLSeq = require('../../nodes/YAMLSeq.js');
7
8function resolvePairs(seq, onError) {
9 if (identity.isSeq(seq)) {
10 for (let i = 0; i < seq.items.length; ++i) {
11 let item = seq.items[i];
12 if (identity.isPair(item))
13 continue;
14 else if (identity.isMap(item)) {
15 if (item.items.length > 1)
16 onError('Each pair must have its own sequence indicator');
17 const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));
18 if (item.commentBefore)
19 pair.key.commentBefore = pair.key.commentBefore
20 ? `${item.commentBefore}\n${pair.key.commentBefore}`
21 : item.commentBefore;
22 if (item.comment) {
23 const cn = pair.value ?? pair.key;
24 cn.comment = cn.comment
25 ? `${item.comment}\n${cn.comment}`
26 : item.comment;
27 }
28 item = pair;
29 }
30 seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);
31 }
32 }
33 else
34 onError('Expected a sequence for this tag');
35 return seq;
36}
37function createPairs(schema, iterable, ctx) {
38 const { replacer } = ctx;
39 const pairs = new YAMLSeq.YAMLSeq(schema);
40 pairs.tag = 'tag:yaml.org,2002:pairs';
41 let i = 0;
42 if (iterable && Symbol.iterator in Object(iterable))
43 for (let it of iterable) {
44 if (typeof replacer === 'function')
45 it = replacer.call(iterable, String(i++), it);
46 let key, value;
47 if (Array.isArray(it)) {
48 if (it.length === 2) {
49 key = it[0];
50 value = it[1];
51 }
52 else
53 throw new TypeError(`Expected [key, value] tuple: ${it}`);
54 }
55 else if (it && it instanceof Object) {
56 const keys = Object.keys(it);
57 if (keys.length === 1) {
58 key = keys[0];
59 value = it[key];
60 }
61 else {
62 throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);
63 }
64 }
65 else {
66 key = it;
67 }
68 pairs.items.push(Pair.createPair(key, value, ctx));
69 }
70 return pairs;
71}
72const pairs = {
73 collection: 'seq',
74 default: false,
75 tag: 'tag:yaml.org,2002:pairs',
76 resolve: resolvePairs,
77 createNode: createPairs
78};
79
80exports.createPairs = createPairs;
81exports.pairs = pairs;
82exports.resolvePairs = resolvePairs;
Note: See TracBrowser for help on using the repository browser.