-void AliasManager::expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg, CommandList &list) {
- const Network *net = network(bufferInfo.networkId());
- if(!net) {
- // 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();
+
+void AliasManager::expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg, CommandList &list)
+{
+ const Network *net = network(bufferInfo.networkId());
+ if (!net) {
+ // 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(" "));
+ }
+ }