command-parser.js 876 Bytes
"use strict";

const commands = require('./command-group');

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

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

    return msg.trim().split(/[\s\.]+/); // eslint-disable-line no-useless-escape 
}

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

    return msgOrTokens;
}

function extractCommand(msgOrTokens) {
    msgOrTokens = _makeSureAsTokensArray(msgOrTokens);

    if (!msgOrTokens) return;
    return msgOrTokens[0];
}

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

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