]> Some of my projects - anidbudpclient.git/commitdiff
Add new/missing functions to the RenameEngine.
authorAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 22:01:27 +0000 (00:01 +0200)
committerAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 22:01:27 +0000 (00:01 +0200)
renameparser/functions.cpp
renameparser/functions.h
renameparser/renameengine.cpp

index 9daa61ed39f2168e0b31000e235b00e2cf4d28cf..2516876b5374784f44766e9fba0c4d1cc7f438b2 100644 (file)
@@ -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)
index 7addc02f090d63a83afa70c13a01c8ea3b7d3d43..76e003f5cb46e62068ffcbb1299aeacb366bd03c 100644 (file)
@@ -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);
 }
 
index af464383c2a470514444769c7ea788e6e451af5f..646db75fc03bad27a6487a66d340cbfe92ac717f 100644 (file)
@@ -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;