Keine Beschreibung

seq.js 972B

123456789101112131415161718192021222324252627282930313233343536
  1. 'use strict';
  2. var createNode = require('../../doc/createNode.js');
  3. var Node = require('../../nodes/Node.js');
  4. var YAMLSeq = require('../../nodes/YAMLSeq.js');
  5. function createSeq(schema, obj, ctx) {
  6. const { replacer } = ctx;
  7. const seq = new YAMLSeq.YAMLSeq(schema);
  8. if (obj && Symbol.iterator in Object(obj)) {
  9. let i = 0;
  10. for (let it of obj) {
  11. if (typeof replacer === 'function') {
  12. const key = obj instanceof Set ? it : String(i++);
  13. it = replacer.call(obj, key, it);
  14. }
  15. seq.items.push(createNode.createNode(it, undefined, ctx));
  16. }
  17. }
  18. return seq;
  19. }
  20. const seq = {
  21. collection: 'seq',
  22. createNode: createSeq,
  23. default: true,
  24. nodeClass: YAMLSeq.YAMLSeq,
  25. tag: 'tag:yaml.org,2002:seq',
  26. resolve(seq, onError) {
  27. if (!Node.isSeq(seq))
  28. onError('Expected a sequence for this tag');
  29. return seq;
  30. }
  31. };
  32. exports.seq = seq;