d0a21263f0bea33e976f6fb47824031d339b04999a02542a4f27d41a8245eb1d28ad122b67676571e061bafacf3b2139b8385bcedc55d4af267817bc184570 1023 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. 'use strict';
  2. var Type = require('../type');
  3. var _hasOwnProperty = Object.prototype.hasOwnProperty;
  4. var _toString = Object.prototype.toString;
  5. function resolveYamlOmap(data) {
  6. if (data === null) return true;
  7. var objectKeys = [], index, length, pair, pairKey, pairHasKey,
  8. object = data;
  9. for (index = 0, length = object.length; index < length; index += 1) {
  10. pair = object[index];
  11. pairHasKey = false;
  12. if (_toString.call(pair) !== '[object Object]') return false;
  13. for (pairKey in pair) {
  14. if (_hasOwnProperty.call(pair, pairKey)) {
  15. if (!pairHasKey) pairHasKey = true;
  16. else return false;
  17. }
  18. }
  19. if (!pairHasKey) return false;
  20. if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
  21. else return false;
  22. }
  23. return true;
  24. }
  25. function constructYamlOmap(data) {
  26. return data !== null ? data : [];
  27. }
  28. module.exports = new Type('tag:yaml.org,2002:omap', {
  29. kind: 'sequence',
  30. resolve: resolveYamlOmap,
  31. construct: constructYamlOmap
  32. });