forked from skygragon/leetcode-cli
-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathhelper.js
108 lines (92 loc) · 2.59 KB
/
helper.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var chalk = require('chalk');
var fs = require('fs');
var path = require('path');
var h = {};
h.prettyState = function(state) {
switch (state) {
case 'ac': return chalk.green('✔');
case 'notac': return chalk.red('✘');
default: return ' ';
}
};
h.prettyYesNo = function(x) {
return x ? '✔' : '✘';
};
h.statusToName = function(sc) {
switch (sc) {
case 10: return 'Accepted';
case 11: return 'Wrong Answer';
case 12: return 'Memory Limit Exceeded';
case 13: return 'Output Limit Exceeded';
case 14: return 'Time Limit Exceeded';
case 15: return 'Runtime Error';
case 16: return 'Internal Error';
case 20: return 'Compile Error';
case 21: return 'Unknown Error';
default: return 'Unknown';
}
};
h.langToExt = function(lang) {
switch (lang) {
case 'c': return '.c';
case 'cpp': return '.cpp';
case 'csharp': return '.cs';
case 'golang': return '.go';
case 'java': return '.java';
case 'javascript': return '.js';
case 'python': return '.py';
case 'ruby': return '.rb';
case 'swift': return '.swift';
default: return '.raw';
}
};
h.extToLang = function(fullpath) {
var ext = path.extname(fullpath);
switch (ext) {
case '.c': return 'c';
case '.cpp': return 'cpp';
case '.cs': return 'csharp';
case '.go': return 'golang';
case '.java': return 'java';
case '.js': return 'javascript';
case '.py': return 'python';
case '.rb' : return 'ruby';
case '.swift': return 'swift';
default: return 'unknown';
}
};
h.getFileData = function(fullpath) {
return fs.readFileSync(fullpath).toString();
};
h.getFilename = function(fullpath) {
return path.basename(fullpath, path.extname(fullpath));
};
h.getHomeDir = function() {
return process.env.HOME || process.env.USERPROFILE;
};
h.getCacheDir = function() {
return this.getHomeDir() + '/.lc/';
};
h.getCacheFile = function(k) {
return this.getCacheDir() + k + '.json';
};
h.getConfigFile = function() {
return this.getHomeDir() + '/.lcconfig';
};
h.readStdin = function() {
// FIXME: not work for win32
return fs.readFileSync('/dev/stdin').toString();
};
h.getSetCookieValue = function(resp, key) {
var cookies = resp.headers['set-cookie'];
if (!cookies) return null;
for (var i = 0; i < cookies.length; ++i) {
var sections = cookies[i].split(';');
for (var j = 0; j < sections.length; ++j) {
var kv = sections[j].trim().split('=');
if (kv[0] === key) return kv[1];
}
}
return null;
};
module.exports = h;