aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/metadataformatter2.h
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-02-02 09:45:48 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-02-02 09:45:48 +0000
commit8eccc97170a4ea592aa3fe38fed1294e86df0b1c (patch)
treeacc5396b22c40f6ddb2f58bc9f2a8ca2145904b0 /src/qmmpui/metadataformatter2.h
parent38e96066fdf3afe2c9afe2d4ac161342e5a01ff4 (diff)
downloadqmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.tar.gz
qmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.tar.bz2
qmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.zip
refactoring, fixed some bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4709 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/metadataformatter2.h')
-rw-r--r--src/qmmpui/metadataformatter2.h49
1 files changed, 17 insertions, 32 deletions
diff --git a/src/qmmpui/metadataformatter2.h b/src/qmmpui/metadataformatter2.h
index b193b9712..1e5bf7538 100644
--- a/src/qmmpui/metadataformatter2.h
+++ b/src/qmmpui/metadataformatter2.h
@@ -34,7 +34,7 @@ class MetaDataFormatter2
public:
/*!
* Constructor.
- * @param format Metadata template.
+ * @param pattern Metadata template.
* Syntax:
* %p - artist,
* %a - album,
@@ -52,7 +52,12 @@ public:
* %l - duration,
* %if(A,B,C) or %if(A&B&C,D,E) - condition.
*/
- MetaDataFormatter2(const QString &format = QString());
+ MetaDataFormatter2(const QString &pattern = QString());
+
+ void setPattern(const QString &pattern);
+
+ const QString pattern() const;
+
/*!
* Converts metadata of item \b item to one string using template.
*/
@@ -71,42 +76,22 @@ public:
private:
struct Node;
- struct Param
- {
- enum {
- KEY = 0,
- TEXT,
- NODES
- } type;
+ struct Param;
- Qmmp::MetaData key;
- QString text;
- QList<Node> children;
- };
- struct Node
- {
- enum {
- PRINT_TEXT = 0,
- IF_KEYWORD
- } command;
+ bool parseField(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
+ bool parseIf(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
+ void parseText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
- QList<Param> params;
- };
-
- bool processKey(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
- bool processIf(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
- void processText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
-
- QString execute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
+ QString evalute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
+ QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
+ QString dumpNode(Node node);
- QString nodeToString(Node node);
-
- QList<MetaDataFormatter2::Node> compile(const QString &format);
- QString m_format;
+ QList<MetaDataFormatter2::Node> compile(const QString &expr);
+ QString m_pattern;
QList<Node> m_nodes;
- //QString processIfKeyWord(QString title);
+ QMap<QString, int> m_fieldNames;
};
#endif // METADATAFORMATTER2_H