52 lines
992 B
JavaScript
52 lines
992 B
JavaScript
'use strict';
|
|
|
|
|
|
var Type = require('../type');
|
|
|
|
|
|
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
var _toString = Object.prototype.toString;
|
|
|
|
|
|
function resolveYamlOmap(state) {
|
|
var objectKeys = [], index, length, pair, pairKey, pairHasKey,
|
|
object = state.result;
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
module.exports = new Type('tag:yaml.org,2002:omap', {
|
|
loadKind: 'sequence',
|
|
loadResolver: resolveYamlOmap
|
|
});
|