| ; | |
| 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 tuple with one key, not ${keys.length} keys`); | |
| } | |
| } | |
| 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; | |
Xet Storage Details
- Size:
- 2.85 kB
- Xet hash:
- 0937bca70f7d6cb776899d47b3a75eed18069ac0e27d335c371121fd9879b30a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.