-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommandProcess.js
executable file
·48 lines (43 loc) · 1.52 KB
/
commandProcess.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
'use strict';
let menu = require('./menu.json');
let CommandProcessor = function() {
this.processCommand = function(command, cb) {
let commArray = command.trim().split(' ');
let moreToProcess = true;
let subMenu = menu;
do {
let menuElement = subMenu[commArray.shift()];
if (!menuElement) {
moreToProcess = false;
} else {
subMenu = menuElement;
if (!menuElement.submenu) {
moreToProcess = false;
} else {
subMenu = menuElement.submenu;
}
}
} while (moreToProcess);
cb(subMenu.command, commArray);
};
this.buildHelp = function(test) {
return new Promise((resolve) => {
let help = '';
let baseCommand = '';
JSON.stringify(menu, function(key, value) {
if (key && key != 'command' && key != 'description' && key != 'submenu' && key != 'end' && key != 'test') {
if (!value.submenu && (!value.test || test)) {
help += `<b>${baseCommand + ' ' + key}</b>: ${value.description} </br>`;
} else {
baseCommand += key && ` ${key}`;
}
} else if (key === 'end') {
baseCommand = '';
}
return value;
});
resolve(help);
});
};
};
module.exports = CommandProcessor;