command-parser.js 1.06 KB
const commands = require('./command-group');

function splitToken(msg) {
    if (typeof msg !== 'string') {
        return null;
    }

    if (!msg.trim()) {
        return null;
    }

    const delimiters = msg.trim().match(/^\w+(\W)/);
    const delimiter = delimiters && delimiters[1] ? delimiters[1] : null;

    const delimiterRegex = delimiter ? new RegExp(`\\${delimiter}+`) : new RegExp('[\\s\\.]+');
    return msg.trim().split(delimiterRegex);
}

function makeSureAsTokensArray(msgOrTokens) {
    if (typeof msgOrTokens === 'string') {
        return splitToken(msgOrTokens);
    }

    return msgOrTokens;
}

function extractCommand(msgOrTokens) {
    const msgOrTokensArray = makeSureAsTokensArray(msgOrTokens);

    if (!msgOrTokensArray) return null;
    return msgOrTokensArray[0];
}

function extractCommandGroup(msgOrTokens) {
    const cmd = extractCommand(msgOrTokens);
    if (!cmd) return null;
    return commands[cmd.toLowerCase()];
}

exports.splitToken = splitToken;
exports.extractCommand = extractCommand;
exports.extractCommandGroup = extractCommandGroup;