aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-01-26 13:12:16 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-01-26 13:12:16 +0000
commitebef658ac971ae9f4924fd6b0e059613c7eaee33 (patch)
treea192e35d0f00d6695c2e5210f3cfa69f236f067d
parent896e79cfd5993010a4a5796205a24ab19fdd48e1 (diff)
downloadqmmp-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
-rw-r--r--src/qmmpui/metadataformatter2.cpp44
-rw-r--r--src/qmmpui/metadataformatter2.h3
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);