From: APTX Date: Mon, 8 Aug 2011 22:01:27 +0000 (+0200) Subject: Add new/missing functions to the RenameEngine. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=816cfd797a50b16497ce6d6d9e1facb0b4a82917;p=anidbudpclient.git Add new/missing functions to the RenameEngine. --- diff --git a/renameparser/functions.cpp b/renameparser/functions.cpp index 9daa61e..2516876 100644 --- a/renameparser/functions.cpp +++ b/renameparser/functions.cpp @@ -29,6 +29,32 @@ QString max(const QStringList &args) return QString::number(maximum); } +QString min(const QStringList &args) +{ + int minimum = 0; + bool unset = true; + + bool ok; + int tmp; + foreach (const QString &num, args) + { + tmp = num.toInt(&ok); + if (ok) + { + if (unset) + { + minimum = tmp; + unset = false; + } + else if (tmp < minimum) + { + minimum = tmp; + } + } + } + return QString::number(minimum); +} + QString len(const QStringList &args) { if (args.isEmpty()) @@ -70,6 +96,97 @@ QString match(const QStringList &args) return QRegExp(args[1]).indexIn(args[0]) != -1 ? "1" : ""; } +QString uc(const QStringList &args) +{ + if (args.isEmpty()) + return ""; + return args.at(0).toUpper(); +} + +QString lc(const QStringList &args) +{ + if (args.isEmpty()) + return ""; + return args.at(0).toLower(); +} + +QString add(const QStringList &args) +{ + if (args.isEmpty()) + return "0"; + int result = args.at(0).toInt(); + for (int i = 1; i < args.count(); ++i) + { + result += args.at(i).toInt(); + } + return QString::number(result); +} + +QString sub(const QStringList &args) +{ + if (args.isEmpty()) + return "0"; + int result = args.at(0).toInt(); + for (int i = 1; i < args.count(); ++i) + { + result -= args.at(i).toInt(); + } + return QString::number(result); +} + +QString mul(const QStringList &args) +{ + if (args.isEmpty()) + return "0"; + int result = args.at(0).toInt(); + for (int i = 1; i < args.count(); ++i) + { + result *= args.at(i).toInt(); + } + return QString::number(result); +} + +QString div(const QStringList &args) +{ + if (args.isEmpty()) + return "0"; + int result = args.at(0).toInt(); + for (int i = 1; i < args.count(); ++i) + { + result /= args.at(i).toInt(); + } + return QString::number(result); +} + +QString substr(const QStringList &args) +{ + if (args.count() < 2) + return; + + int startpos = args.at(1).toInt(); + int endpos = -1; + + if (args.count() > 2) + endpos = args.at(2).toInt(); + return args.at(0).mid(startpos, endpos); +} + +QString indexof(const QStringList &args) +{ + if (args.count() < 2) + return "-1"; + + return QString::number(args.at(0).indexOf(args.at(1))); +} + +QString lindexof(const QStringList &args) +{ + if (args.count() < 2) + return "-1"; + + return QString::number(args.at(0).lastIndexOf(args.at(1))); +} + QString alt(const QStringList &args) { for (int i = 0; i < args.count(); ++i) diff --git a/renameparser/functions.h b/renameparser/functions.h index 7addc02..76e003f 100644 --- a/renameparser/functions.h +++ b/renameparser/functions.h @@ -12,10 +12,20 @@ namespace RenameFunctions #undef max #endif QString max(const QStringList &args); + QString min(const QStringList &args); QString len(const QStringList &args); QString pad(const QStringList &args); QString repl(const QStringList &args); QString match(const QStringList &args); + QString uc(const QStringList &args); + QString lc(const QStringList &args); + QString add(const QStringList &args); + QString sub(const QStringList &args); + QString mul(const QStringList &args); + QString div(const QStringList &args); + QString substr(const QStringList &args); + QString indexof(const QStringList &args); + QString lindexof(const QStringList &args); QString alt(const QStringList &args); } diff --git a/renameparser/renameengine.cpp b/renameparser/renameengine.cpp index af46438..646db75 100644 --- a/renameparser/renameengine.cpp +++ b/renameparser/renameengine.cpp @@ -93,10 +93,19 @@ void RenameEngine::staticInit() return; registerFunction("max", RenameFunctions::max); + registerFunction("min", RenameFunctions::min); registerFunction("pad", RenameFunctions::pad); registerFunction("len", RenameFunctions::len); registerFunction("repl", RenameFunctions::repl); - registerFunction("match", RenameFunctions::match); + registerFunction("uc", RenameFunctions::uc); + registerFunction("lc", RenameFunctions::lc); + registerFunction("add", RenameFunctions::add); + registerFunction("sub", RenameFunctions::sub); + registerFunction("mul", RenameFunctions::mul); + registerFunction("div", RenameFunctions::div); + registerFunction("substr", RenameFunctions::substr); + registerFunction("indexof", RenameFunctions::indexof); + registerFunction("lindexof", RenameFunctions::lindexof); registerFunction("alt", RenameFunctions::alt); staticInitialised = true;