Initial import
[darksolar] / node_modules / mongodb / lib / mongodb / utils.js
1 /**
2  * Sort functions, Normalize and prepare sort parameters
3  */
4 var formatSortValue = exports.formatSortValue = function(sortDirection) {
5   var value = ("" + sortDirection).toLowerCase();
6
7   switch (value) {
8     case 'ascending':
9     case 'asc':
10     case '1':
11       return 1;
12     case 'descending':
13     case 'desc':
14     case '-1':
15       return -1;
16     default:
17       throw new Error("Illegal sort clause, must be of the form "
18                     + "[['field1', '(ascending|descending)'], "
19                     + "['field2', '(ascending|descending)']]");
20   }
21 };
22
23 var formattedOrderClause = exports.formattedOrderClause = function(sortValue) {
24   var orderBy = {};
25
26   if (Array.isArray(sortValue)) {
27     for(var i = 0; i < sortValue.length; i++) {
28       if(sortValue[i].constructor == String) {
29         orderBy[sortValue[i]] = 1;
30       } else {
31         orderBy[sortValue[i][0]] = formatSortValue(sortValue[i][1]);
32       }      
33     }
34   } else if(Object.prototype.toString.call(sortValue) === '[object Object]') {
35     orderBy = sortValue;
36   } else if (sortValue.constructor == String) {
37     orderBy[sortValue] = 1;
38   } else {
39     throw new Error("Illegal sort clause, must be of the form " +
40       "[['field1', '(ascending|descending)'], ['field2', '(ascending|descending)']]");
41   }
42
43   return orderBy;
44 };
45
46 exports.encodeInt = function(value) {
47   var buffer = new Buffer(4);
48   buffer[3] = (value >> 24) & 0xff;      
49   buffer[2] = (value >> 16) & 0xff;
50   buffer[1] = (value >> 8) & 0xff;
51   buffer[0] = value & 0xff;
52   return buffer;
53 }
54
55 exports.encodeIntInPlace = function(value, buffer, index) {
56   buffer[index + 3] = (value >> 24) & 0xff;                     
57         buffer[index + 2] = (value >> 16) & 0xff;
58         buffer[index + 1] = (value >> 8) & 0xff;
59         buffer[index] = value & 0xff;
60 }
61
62 exports.encodeCString = function(string) {
63   var buf = new Buffer(string, 'utf8');
64   return [buf, new Buffer([0])];
65 }
66
67 exports.decodeUInt32 = function(array, index) {
68   return array[index] | array[index + 1] << 8 | array[index + 2] << 16 | array[index + 3] << 24;
69 }
70
71 // Decode the int
72 exports.decodeUInt8 = function(array, index) {
73   return array[index];
74 }