l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

pairs.js (1084B)


      1 'use strict';
      2 
      3 var Type = require('../type');
      4 
      5 var _toString = Object.prototype.toString;
      6 
      7 function resolveYamlPairs(data) {
      8   if (data === null) return true;
      9 
     10   var index, length, pair, keys, result,
     11       object = data;
     12 
     13   result = new Array(object.length);
     14 
     15   for (index = 0, length = object.length; index < length; index += 1) {
     16     pair = object[index];
     17 
     18     if (_toString.call(pair) !== '[object Object]') return false;
     19 
     20     keys = Object.keys(pair);
     21 
     22     if (keys.length !== 1) return false;
     23 
     24     result[index] = [ keys[0], pair[keys[0]] ];
     25   }
     26 
     27   return true;
     28 }
     29 
     30 function constructYamlPairs(data) {
     31   if (data === null) return [];
     32 
     33   var index, length, pair, keys, result,
     34       object = data;
     35 
     36   result = new Array(object.length);
     37 
     38   for (index = 0, length = object.length; index < length; index += 1) {
     39     pair = object[index];
     40 
     41     keys = Object.keys(pair);
     42 
     43     result[index] = [ keys[0], pair[keys[0]] ];
     44   }
     45 
     46   return result;
     47 }
     48 
     49 module.exports = new Type('tag:yaml.org,2002:pairs', {
     50   kind: 'sequence',
     51   resolve: resolveYamlPairs,
     52   construct: constructYamlPairs
     53 });