command-parser.js 1.04 KB
"use strict";

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

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

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

    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) {
    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;