-void ClientUserInputHandler::expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg) {
- const Network *network = Client::network(bufferInfo.networkId());
- if(!network) {
- // FIXME send error as soon as we have a method for that!
- return;
- }
-
- QRegExp paramRangeR("\\$(\\d+)\\.\\.(\\d*)");
- QStringList commands = alias.split(QRegExp("; ?"));
- QStringList params = msg.split(' ');
- QStringList expandedCommands;
- 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("*"));
- command = command.replace(QString("$%1").arg(j), params[j - 1]);
- }
- command = command.replace("$0", msg);
- command = command.replace("$channelname", bufferInfo.bufferName());
- command = command.replace("$currentnick", network->myNick());
- expandedCommands << command;
+ for(int i = 0; i < clist.count(); i++) {
+ QString cmd = clist.at(i).second.section(' ', 0, 0).remove(0, 1).toUpper();
+ if(cmd == "EXEC")
+ handleExec(clist.at(i).first, clist.at(i).second.section(' ', 1));
+ else
+ emit sendInput(clist.at(i).first, clist.at(i).second);