From 8eccc97170a4ea592aa3fe38fed1294e86df0b1c Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 2 Feb 2015 09:45:48 +0000 Subject: refactoring, fixed some bugs git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4709 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/metadataformatter2.h | 49 ++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) (limited to 'src/qmmpui/metadataformatter2.h') 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 children; - }; - struct Node - { - enum { - PRINT_TEXT = 0, - IF_KEYWORD - } command; + bool parseField(QList *nodes, QString::const_iterator *i, QString::const_iterator end); + bool parseIf(QList *nodes, QString::const_iterator *i, QString::const_iterator end); + void parseText(QList *nodes, QString::const_iterator *i, QString::const_iterator end); - QList params; - }; - - bool processKey(QList *nodes, QString::const_iterator *i, QString::const_iterator end); - bool processIf(QList *nodes, QString::const_iterator *i, QString::const_iterator end); - void processText(QList *nodes, QString::const_iterator *i, QString::const_iterator end); - - QString execute(QList *nodes, const QMap *metaData, qint64 length); + QString evalute(QList *nodes, const QMap *metaData, qint64 length); QString printParam(Param *p, const QMap *metaData, qint64 length); + QString printField(int field, const QMap *metaData, qint64 length); + QString dumpNode(Node node); - QString nodeToString(Node node); - - QList compile(const QString &format); - QString m_format; + QList compile(const QString &expr); + QString m_pattern; QList m_nodes; - //QString processIfKeyWord(QString title); + QMap m_fieldNames; }; #endif // METADATAFORMATTER2_H -- cgit v1.2.3-13-gbd6f