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.
35 lines
972 B
35 lines
972 B
'use strict'; |
|
|
|
var createNode = require('../../doc/createNode.js'); |
|
var Node = require('../../nodes/Node.js'); |
|
var YAMLSeq = require('../../nodes/YAMLSeq.js'); |
|
|
|
function createSeq(schema, obj, ctx) { |
|
const { replacer } = ctx; |
|
const seq = new YAMLSeq.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.createNode(it, undefined, ctx)); |
|
} |
|
} |
|
return seq; |
|
} |
|
const seq = { |
|
collection: 'seq', |
|
createNode: createSeq, |
|
default: true, |
|
nodeClass: YAMLSeq.YAMLSeq, |
|
tag: 'tag:yaml.org,2002:seq', |
|
resolve(seq, onError) { |
|
if (!Node.isSeq(seq)) |
|
onError('Expected a sequence for this tag'); |
|
return seq; |
|
} |
|
}; |
|
|
|
exports.seq = seq;
|
|
|