-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathutils.js
executable file
·62 lines (47 loc) · 1.21 KB
/
utils.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
"use strict";
const crypto = require("crypto");
const attr = (name, val) => {
if(val === undefined)
return '';
if(typeof val == "boolean")
val = val ? "true" : "false";
return `${name}="${escapeXML(val)}"`;
};
function attrs(dict, keys) {
let body = [];
for(let attrName of keys || Object.keys(dict))
body.push(attr(attrName, dict[attrName]));
return body.join(' ');
}
function escapeXML(str) {
str = String(str)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/'/g, ''')
.replace(/"/g, '"');
return str;
}
function defer() {
var thisresolve;
var thisreject;
var defer = new Promise(function(resolve, reject) {
thisresolve = resolve;
thisreject = reject;
});
defer.resolve = function(body) { thisresolve(body); };
defer.reject = function(err) { thisreject(err); };
defer.chain = function(err, body) {
if(err)
return defer.reject(err);
return defer.resolve(body);
};
return defer;
}
function uuid() {
return crypto.randomBytes(16).toString("hex");
}
function md5(str) {
return crypto.createHash("md5").update(str).digest("hex");
}
module.exports = {escapeXML, attrs, defer, uuid, md5};