'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

});