From ebef658ac971ae9f4924fd6b0e059613c7eaee33 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 26 Jan 2015 13:12:16 +0000 Subject: some work on metadata formatter git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4701 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/metadataformatter2.cpp | 44 ++++++++++++++++++++++++++++++++++----- src/qmmpui/metadataformatter2.h | 3 ++- 2 files changed, 41 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/qmmpui/metadataformatter2.cpp b/src/qmmpui/metadataformatter2.cpp index c59151060..7b8c1a02d 100644 --- a/src/qmmpui/metadataformatter2.cpp +++ b/src/qmmpui/metadataformatter2.cpp @@ -139,6 +139,37 @@ bool MetaDataFormatter2::processKey(QList *nodes, QString::const_iterator return false; } +bool MetaDataFormatter2::processIf(QList *nodes, QString::const_iterator i, QString::const_iterator end) +{ + if((*i) != QChar('i')) + return false; + i++; + if((*i) != QChar('f')) + { + i--; + return false; + } + i++; + Node node; + node.command = Node::IF_KEYWORD; + + int c = 0; + QString str; + while(i != end) + { + if((*i) == QChar('(')) + c++; + else if((*i) == QChar(')')) + c--; + + str.append((*i)); + i++; + if(c == 0) + break; + } + return false; +} + void MetaDataFormatter2::processText(QList *nodes, QString::const_iterator i, QString::const_iterator end) { Node node; @@ -161,8 +192,9 @@ void MetaDataFormatter2::processText(QList *nodes, QSt nodes->append(node); } -void MetaDataFormatter2::compile(const QString &format) +QList MetaDataFormatter2::compile(const QString &format) { + QList nodes; QString::const_iterator i = format.constBegin(); while (i != format.constEnd()) @@ -171,17 +203,19 @@ void MetaDataFormatter2::compile(const QString &format) if((*i) == QChar('%')) { i++; - if(processKey(&m_nodes, i, format.constEnd())) - { + if(processKey(&nodes, i, format.constEnd())) + continue; + + if(processIf(&nodes, i, format.constEnd())) continue; - } } else { - processText(&m_nodes, i, format.constEnd()); + processText(&nodes, i, format.constEnd()); continue; } } + return nodes; } /*QString MetaDataFormatter::processIfKeyWord(QString title) diff --git a/src/qmmpui/metadataformatter2.h b/src/qmmpui/metadataformatter2.h index dd0bc6186..6158c0944 100644 --- a/src/qmmpui/metadataformatter2.h +++ b/src/qmmpui/metadataformatter2.h @@ -94,9 +94,10 @@ private: }; 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); - void compile(const QString &format); + QList compile(const QString &format); QString m_format; QList m_nodes; //QString processIfKeyWord(QString title); -- cgit v1.2.3-13-gbd6f