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