From 641905d97d6858e3adb59bebf177b6964dd9066a Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sun, 2 Nov 2008 17:55:25 +0100 Subject: [PATCH] Fixing BR #335 - needs a core restart --- src/core/userinputhandler.cpp | 20 ++++++++++++++++++++ src/qtui/settingspages/aliasesmodel.cpp | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index e804c260..fcb879ea 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -386,10 +386,30 @@ void UserInputHandler::defaultHandler(QString cmd, const BufferInfo &bufferInfo, } void UserInputHandler::expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg) { + QRegExp paramRangeR("\\$(\\d+)\\.\\.(\\d*)"); QStringList commands = alias.split(QRegExp("; ?")); QStringList params = msg.split(' '); for(int i = 0; i < commands.count(); i++) { QString command = commands[i]; + + // replace ranges like $1..3 + if(!params.isEmpty()) { + int pos; + while((pos = paramRangeR.indexIn(command)) != -1) { + int start = paramRangeR.cap(1).toInt(); + bool ok; + int end = paramRangeR.cap(2).toInt(&ok); + if(!ok) { + end = params.count(); + } + if(end < start) + command = command.replace(pos, paramRangeR.matchedLength(), QString()); + else { + command = command.replace(pos, paramRangeR.matchedLength(), QStringList(params.mid(start - 1, end - start + 1)).join(" ")); + } + } + } + for(int j = params.count(); j > 0; j--) { IrcUser *ircUser = network()->ircUser(params[j - 1]); command = command.replace(QString("$%1:hostname").arg(j), ircUser ? ircUser->host() : QString("*")); diff --git a/src/qtui/settingspages/aliasesmodel.cpp b/src/qtui/settingspages/aliasesmodel.cpp index a0723305..baaaa9b9 100644 --- a/src/qtui/settingspages/aliasesmodel.cpp +++ b/src/qtui/settingspages/aliasesmodel.cpp @@ -54,6 +54,8 @@ QVariant AliasesModel::data(const QModelIndex &index, int role) const { return "The string the shortcut will be expanded to
" "special variables:
" " - $i represenents the i'th parameter.
" + " - $i..j represenents the i'th to j'th parameter separated by spaces.
" + " - $i.. represenents all parameters from i on separated by spaces.
" " - $i:hostname represents the hostname of the user identified by the i'th parameter or a * if unknown.
" " - $0 the whole string.
" " - $currentnick your current nickname
" -- 2.20.1