-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
54 lines (42 loc) · 1004 Bytes
/
index.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
var includes = require('lodash.includes');
var forEach = require('lodash.foreach');
var starts = ['!', '.', '/', ';;'];
var reCommand = new RegExp(/^(([!.\/])|(;{2}))\w+(\s[^\s]+)*$/);
/**
* Parses the IRC command `message`.
*
* @param {String} message
* @return {Object}
* @api public
*/
function behest(message) {
var command = {};
if (!isValid(message)) {
return command;
}
var start = message.substring(0, 2);
forEach(starts, function(value) {
if (includes(start, value)) {
command.start = value;
return false;
}
});
var params = message.substring(start === ';;' ? 2 : 1).split(' ');
command.command = params[0];
if (params.length > 1) {
command.params = params.slice(1);
}
return command;
}
/**
* Check if `message` is a valid command.
*
* @param {String} message
* @return {Boolean} is valid
* @api public
*/
function isValid(message) {
return reCommand.test(message);
}
behest.isValid = isValid;
module.exports = behest;