aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/metadataformatter2.h
diff options
context:
space:
mode:
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