-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbbcode.js
76 lines (64 loc) · 1.3 KB
/
bbcode.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var _ = require('underscore');
var nodecrypto = require('crypto');
var uuid = require('./uuid');
function utils() {
}
utils.prototype.extend = function(target, source) {
for (var key in source) {
var original = target[key];
var next = source[key];
if (original && next && typeof next == "object") {
this.extend(original, next);
} else {
target[key] = next;
}
}
return target;
}
utils.prototype.uuid = function() {
return uuid.v4();
}
utils.prototype.pad = function(str, size) {
var len = str.length;
var free = size-len;
if (free <= 0) {
return str;
}
var tabsize = 8;
var ntabs = Math.ceil(free/tabsize);
var i;
/*for (i=0;i<ntabs;i++) {
str = str+"\t";
}*/
if (free > 0) {
str = str+"\x1B[90m"; // grey
}
for (i=0;i<free;i++) {
str = str+"-";
}
str = str+"\x1B[39m"; // reset
return str;
}
utils.prototype.indexed = function(data, key) {
var i;
var buffer = {};
for (i in data) {
if (data[i][key]) {
buffer[data[i][key]] = data[i];
}
}
return buffer;
}
utils.prototype.group = function(data, keys) {
var grouped = _.groupBy(data, function(item) {
return item[keys[0]];
});
var i;
for (i in grouped) {
grouped[i] = _.groupBy(grouped[i], function(subitem) {
return subitem[keys[1]];
});
}
return grouped;
}
exports.main = new utils();