summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js')
-rw-r--r--tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js b/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js
new file mode 100644
index 0000000000..f956459a0d
--- /dev/null
+++ b/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js
@@ -0,0 +1,56 @@
+'use strict';
+
+var Type = require('../type');
+
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+var _toString = Object.prototype.toString;
+
+function resolveYamlOmap(data) {
+ if (null === data) {
+ return true;
+ }
+
+ var objectKeys = [], index, length, pair, pairKey, pairHasKey,
+ object = data;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+ pairHasKey = false;
+
+ if ('[object Object]' !== _toString.call(pair)) {
+ return false;
+ }
+
+ for (pairKey in pair) {
+ if (_hasOwnProperty.call(pair, pairKey)) {
+ if (!pairHasKey) {
+ pairHasKey = true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ if (!pairHasKey) {
+ return false;
+ }
+
+ if (-1 === objectKeys.indexOf(pairKey)) {
+ objectKeys.push(pairKey);
+ } else {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function constructYamlOmap(data) {
+ return null !== data ? data : [];
+}
+
+module.exports = new Type('tag:yaml.org,2002:omap', {
+ kind: 'sequence',
+ resolve: resolveYamlOmap,
+ construct: constructYamlOmap
+});