Нет описания

seq.js 926B

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