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.
33 lines
926 B
33 lines
926 B
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 };
|
|
|