fdb5a1f0b898c577c6ed40dc21ce6c3f4f59ca53ccb902fe861eba607db7f2b4638ad12181057fc1ef5b0d2403cc2c3bcd95961ba9a64f3244c2dac562a5b9 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. var Type = require('../type');
  3. var _toString = Object.prototype.toString;
  4. function resolveYamlPairs(data) {
  5. if (data === null) return true;
  6. var index, length, pair, keys, result,
  7. object = data;
  8. result = new Array(object.length);
  9. for (index = 0, length = object.length; index < length; index += 1) {
  10. pair = object[index];
  11. if (_toString.call(pair) !== '[object Object]') return false;
  12. keys = Object.keys(pair);
  13. if (keys.length !== 1) return false;
  14. result[index] = [ keys[0], pair[keys[0]] ];
  15. }
  16. return true;
  17. }
  18. function constructYamlPairs(data) {
  19. if (data === null) return [];
  20. var index, length, pair, keys, result,
  21. object = data;
  22. result = new Array(object.length);
  23. for (index = 0, length = object.length; index < length; index += 1) {
  24. pair = object[index];
  25. keys = Object.keys(pair);
  26. result[index] = [ keys[0], pair[keys[0]] ];
  27. }
  28. return result;
  29. }
  30. module.exports = new Type('tag:yaml.org,2002:pairs', {
  31. kind: 'sequence',
  32. resolve: resolveYamlPairs,
  33. construct: constructYamlPairs
  34. });