/*************************************************************************** Class of utility functions. ------------------- Copyright : (C) 2004 Paul Giannaros ------------------- Original author: Paul Giannaros Current Maintainer: Paul Giannaros ****************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; version 2 of the License. * * * ***************************************************************************/ #include #include #include #include "utils.h" KttsUtils::KttsUtils() { } KttsUtils::~KttsUtils() { } /** * Check if an XML document has a certain root element. * @param xmldoc The document to check for the element. * @param elementName The element to check for in the document. * @returns True if the root element exists in the document, false otherwise. */ bool KttsUtils::hasRootElement(const TQString &xmldoc, const TQString &elementName) { // Strip all whitespace and go from there. TQString doc = xmldoc.simplifyWhiteSpace(); // Take off the if it exists if(doc.startsWith(" and strip everything off from there to the start - effectively removing // int xmlStatementEnd = doc.find("?>"); if(xmlStatementEnd == -1) { kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; return false; } xmlStatementEnd += 2; // len '?>' == 2 doc = doc.right(doc.length() - xmlStatementEnd); } // Take off leading comments, if they exist. while(doc.startsWith(""); if(commentStatementEnd == -1) { kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; return false; } commentStatementEnd += 3; // len '>' == 2 doc = doc.right(doc.length() - commentStatementEnd); } // Take off the doctype statement if it exists. while(doc.startsWith(""); if(doctypeStatementEnd == -1) { kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; return false; } doctypeStatementEnd += 1; // len '>' == 2 doc = doc.right(doc.length() - doctypeStatementEnd); } // We should (hopefully) be left with the root element. return (doc.startsWith("<" + elementName) || doc.startsWith(" <" + elementName)); } /** * Check if an XML document has a certain DOCTYPE. * @param xmldoc The document to check for the doctype. * @param name The doctype name to check for. Pass TQString() to not check the name. * @param publicId The public ID to check for. Pass TQString() to not check the ID. * @param systemId The system ID to check for. Pass TQString() to not check the ID. * @returns True if the parameters match the doctype, false otherwise. */ bool KttsUtils::hasDoctype(const TQString &xmldoc, const TQString &name/*, const TQString &publicId, const TQString &systemId*/) { // Strip all whitespace and go from there. TQString doc = xmldoc.stripWhiteSpace(); // Take off the if it exists if(doc.startsWith(" and strip everything off from there to the start - effectively removing // int xmlStatementEnd = doc.find("?>"); if(xmlStatementEnd == -1) { kdDebug() << "KttsUtils::hasDoctype: Bad XML file syntax\n"; return false; } xmlStatementEnd += 2; // len '?>' == 2 doc = doc.right(doc.length() - xmlStatementEnd); doc = doc.stripWhiteSpace(); } // Take off leading comments, if they exist. while(doc.startsWith(""); if(commentStatementEnd == -1) { kdDebug() << "KttsUtils::hasDoctype: Bad XML file syntax\n"; return false; } commentStatementEnd += 3; // len '>' == 2 doc = doc.right(doc.length() - commentStatementEnd); doc = doc.stripWhiteSpace(); } // Match the doctype statement if it exists. // kdDebug() << "KttsUtils::hasDoctype: searching " << doc.left(20) << "... for " << "count(); for (int ndx = 0; ndx < itemCount; ++ndx) { if (cb->text(ndx) == text) { cb->setCurrentItem(ndx); return; } } }