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