54 lines
1.1 KiB
Plaintext
54 lines
1.1 KiB
Plaintext
|
'use strict';
|
||
|
|
||
|
var Type = require('../type');
|
||
|
|
||
|
var _toString = Object.prototype.toString;
|
||
|
|
||
|
function resolveYamlPairs(data) {
|
||
|
if (data === null) return true;
|
||
|
|
||
|
var index, length, pair, keys, result,
|
||
|
object = data;
|
||
|
|
||
|
result = new Array(object.length);
|
||
|
|
||
|
for (index = 0, length = object.length; index < length; index += 1) {
|
||
|
pair = object[index];
|
||
|
|
||
|
if (_toString.call(pair) !== '[object Object]') return false;
|
||
|
|
||
|
keys = Object.keys(pair);
|
||
|
|
||
|
if (keys.length !== 1) return false;
|
||
|
|
||
|
result[index] = [ keys[0], pair[keys[0]] ];
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function constructYamlPairs(data) {
|
||
|
if (data === null) return [];
|
||
|
|
||
|
var index, length, pair, keys, result,
|
||
|
object = data;
|
||
|
|
||
|
result = new Array(object.length);
|
||
|
|
||
|
for (index = 0, length = object.length; index < length; index += 1) {
|
||
|
pair = object[index];
|
||
|
|
||
|
keys = Object.keys(pair);
|
||
|
|
||
|
result[index] = [ keys[0], pair[keys[0]] ];
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
module.exports = new Type('tag:yaml.org,2002:pairs', {
|
||
|
kind: 'sequence',
|
||
|
resolve: resolveYamlPairs,
|
||
|
construct: constructYamlPairs
|
||
|
});
|