diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-01-26 13:12:16 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-01-26 13:12:16 +0000 |
| commit | ebef658ac971ae9f4924fd6b0e059613c7eaee33 (patch) | |
| tree | a192e35d0f00d6695c2e5210f3cfa69f236f067d /src | |
| parent | 896e79cfd5993010a4a5796205a24ab19fdd48e1 (diff) | |
| download | qmmp-ebef658ac971ae9f4924fd6b0e059613c7eaee33.tar.gz qmmp-ebef658ac971ae9f4924fd6b0e059613c7eaee33.tar.bz2 qmmp-ebef658ac971ae9f4924fd6b0e059613c7eaee33.zip | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmpui/metadataformatter2.cpp | 44 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter2.h | 3 |
2 files changed, 41 insertions, 6 deletions
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<Node> *nodes, QString::const_iterator return false; } +bool MetaDataFormatter2::processIf(QList<MetaDataFormatter2::Node> *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<MetaDataFormatter2::Node> *nodes, QString::const_iterator i, QString::const_iterator end) { Node node; @@ -161,8 +192,9 @@ void MetaDataFormatter2::processText(QList<MetaDataFormatter2::Node> *nodes, QSt nodes->append(node); } -void MetaDataFormatter2::compile(const QString &format) +QList<MetaDataFormatter2::Node> MetaDataFormatter2::compile(const QString &format) { + QList <Node> 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<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); - void compile(const QString &format); + QList<MetaDataFormatter2::Node> compile(const QString &format); QString m_format; QList<Node> m_nodes; //QString processIfKeyWord(QString title); |
