src/lib/VSDXMetaData.cpp | 92 +++++------------------------------------------ src/lib/VSDXMetaData.h | 7 +-- 2 files changed, 12 insertions(+), 87 deletions(-)
New commits: commit a3d033a7561cfca087d86632e2e3f0b215a1222e Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Dec 25 12:16:00 2014 +0100 VSDXMetaData: merge read*() methods into a single one Change-Id: I218bca925d5fc86d7b492e05b2bebbca2e5675d9 diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp index 3f0d9bc..b9ba9bb 100644 --- a/src/lib/VSDXMetaData.cpp +++ b/src/lib/VSDXMetaData.cpp @@ -20,94 +20,22 @@ libvisio::VSDXMetaData::~VSDXMetaData() { } -void libvisio::VSDXMetaData::readTitle(xmlTextReaderPtr reader) +librevenge::RVNGString libvisio::VSDXMetaData::readString(xmlTextReaderPtr reader, int stringTokenId) { int ret = 1; int tokenId = XML_TOKEN_INVALID; int tokenType = -1; - librevenge::RVNGString title; + librevenge::RVNGString string; do { ret = xmlTextReaderRead(reader); tokenId = getElementToken(reader); tokenType = xmlTextReaderNodeType(reader); if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) - title.append((const char *)xmlTextReaderConstValue(reader)); + string.append((const char *)xmlTextReaderConstValue(reader)); } - while ((XML_DC_TITLE != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - m_metaData.insert("dc:title", title); -} - -void libvisio::VSDXMetaData::readSubject(xmlTextReaderPtr reader) -{ - int ret = 1; - int tokenId = XML_TOKEN_INVALID; - int tokenType = -1; - librevenge::RVNGString subject; - do - { - ret = xmlTextReaderRead(reader); - tokenId = getElementToken(reader); - tokenType = xmlTextReaderNodeType(reader); - if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) - subject.append((const char *)xmlTextReaderConstValue(reader)); - } - while ((XML_DC_SUBJECT != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - m_metaData.insert("dc:subject", subject); -} - -void libvisio::VSDXMetaData::readCreator(xmlTextReaderPtr reader) -{ - int ret = 1; - int tokenId = XML_TOKEN_INVALID; - int tokenType = -1; - librevenge::RVNGString creator; - do - { - ret = xmlTextReaderRead(reader); - tokenId = getElementToken(reader); - tokenType = xmlTextReaderNodeType(reader); - if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) - creator.append((const char *)xmlTextReaderConstValue(reader)); - } - while ((XML_DC_CREATOR != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - m_metaData.insert("meta:initial-creator", creator); -} - -void libvisio::VSDXMetaData::readCreated(xmlTextReaderPtr reader) -{ - int ret = 1; - int tokenId = XML_TOKEN_INVALID; - int tokenType = -1; - librevenge::RVNGString created; - do - { - ret = xmlTextReaderRead(reader); - tokenId = getElementToken(reader); - tokenType = xmlTextReaderNodeType(reader); - if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) - created.append((const char *)xmlTextReaderConstValue(reader)); - } - while ((XML_DCTERMS_CREATED != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - m_metaData.insert("meta:creation-date", created); -} - -void libvisio::VSDXMetaData::readModified(xmlTextReaderPtr reader) -{ - int ret = 1; - int tokenId = XML_TOKEN_INVALID; - int tokenType = -1; - librevenge::RVNGString modified; - do - { - ret = xmlTextReaderRead(reader); - tokenId = getElementToken(reader); - tokenType = xmlTextReaderNodeType(reader); - if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) - modified.append((const char *)xmlTextReaderConstValue(reader)); - } - while ((XML_DCTERMS_MODIFIED != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - m_metaData.insert("dc:date", modified); + while ((stringTokenId != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); + return string; } void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader) @@ -128,23 +56,23 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader) { case XML_DC_TITLE: if (tokenType == XML_READER_TYPE_ELEMENT) - readTitle(reader); + m_metaData.insert("dc:title", readString(reader, XML_DC_TITLE)); break; case XML_DC_SUBJECT: if (tokenType == XML_READER_TYPE_ELEMENT) - readSubject(reader); + m_metaData.insert("dc:subject", readString(reader, XML_DC_SUBJECT)); break; case XML_DC_CREATOR: if (tokenType == XML_READER_TYPE_ELEMENT) - readCreator(reader); + m_metaData.insert("meta:initial-creator", readString(reader, XML_DC_CREATOR)); break; case XML_DCTERMS_CREATED: if (tokenType == XML_READER_TYPE_ELEMENT) - readCreated(reader); + m_metaData.insert("meta:creation-date", readString(reader, XML_DCTERMS_CREATED)); break; case XML_DCTERMS_MODIFIED: if (tokenType == XML_READER_TYPE_ELEMENT) - readModified(reader); + m_metaData.insert("dc:date", readString(reader, XML_DCTERMS_MODIFIED)); break; default: break; diff --git a/src/lib/VSDXMetaData.h b/src/lib/VSDXMetaData.h index 4ef382c..b18a0a1 100644 --- a/src/lib/VSDXMetaData.h +++ b/src/lib/VSDXMetaData.h @@ -16,6 +16,7 @@ namespace libvisio { +/// Parses docProps/core.xml stream of a VSDX file. class VSDXMetaData { public: @@ -30,11 +31,7 @@ private: int getElementToken(xmlTextReaderPtr reader); void readCoreProperties(xmlTextReaderPtr reader); - void readTitle(xmlTextReaderPtr reader); - void readSubject(xmlTextReaderPtr reader); - void readCreator(xmlTextReaderPtr reader); - void readCreated(xmlTextReaderPtr reader); - void readModified(xmlTextReaderPtr reader); + librevenge::RVNGString readString(xmlTextReaderPtr reader, int stringTokenId); librevenge::RVNGPropertyList m_metaData; }; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits