-
Notifications
You must be signed in to change notification settings - Fork 0
/
parser.js
49 lines (48 loc) · 1.3 KB
/
parser.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
// Import the optparse script
var COMMAND_CHAR = "\\+";
var COMMAND_STRING = '^' + COMMAND_CHAR + "(\\w*)(.*?)$";
var COMMAND_STRING_SIMPLE = '^' + COMMAND_CHAR + "(\\w*)";
var parser = {
rules: {},
help_messages: {},
on: function(value, message, fn) {
this.rules[value] = fn;
this.help_messages[value] = message;
},
parse: function(user, message) {
var regexp = new RegExp(COMMAND_STRING, "gxm");
var parts = regexp.exec(message);
if (parts) {
this.processCommand(user, parts[1], parts[2]);
}
else{
this.help(user);
}
},
processCommand: function(user, command, _args) {
if (this.rules[command]) {
this.rules[command](user, _args);
}
else {
this.help(user);
}
},
help: function(user) {
var _message = 'Nu inteleg ce zici tu acolo\\n';
_message += 'Raspund la urmatoarele comenzi:';
_message += '\\n';
for(var i in this.help_messages) {
_message += this.help_messages[i] + '\\n';
}
user.sendMessage(_message);
}
};
/**
* Exports section
*/
exports.parse = function(user, message) {
parser.parse(user, message);
};
exports.on = function(command, message, _function) {
parser.on(command, message, _function);
};