You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
926 B
34 lines
926 B
2 years ago
|
import { createNode } from '../../doc/createNode.js';
|
||
|
import { isSeq } from '../../nodes/Node.js';
|
||
|
import { YAMLSeq } from '../../nodes/YAMLSeq.js';
|
||
|
|
||
|
function createSeq(schema, obj, ctx) {
|
||
|
const { replacer } = ctx;
|
||
|
const seq = new YAMLSeq(schema);
|
||
|
if (obj && Symbol.iterator in Object(obj)) {
|
||
|
let i = 0;
|
||
|
for (let it of obj) {
|
||
|
if (typeof replacer === 'function') {
|
||
|
const key = obj instanceof Set ? it : String(i++);
|
||
|
it = replacer.call(obj, key, it);
|
||
|
}
|
||
|
seq.items.push(createNode(it, undefined, ctx));
|
||
|
}
|
||
|
}
|
||
|
return seq;
|
||
|
}
|
||
|
const seq = {
|
||
|
collection: 'seq',
|
||
|
createNode: createSeq,
|
||
|
default: true,
|
||
|
nodeClass: YAMLSeq,
|
||
|
tag: 'tag:yaml.org,2002:seq',
|
||
|
resolve(seq, onError) {
|
||
|
if (!isSeq(seq))
|
||
|
onError('Expected a sequence for this tag');
|
||
|
return seq;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export { seq };
|