From 9e44204bf84edcfe2befaaa9b7280257c9268548 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 3 Apr 2014 10:50:02 +0200 Subject: qdoc: Simplify config code for reading file paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change greatly simplifies the code used for reading paths from config files: near-identical functions Config::getCanonicalPathList() and Config::getPathList() are combined into one, and the use of Config::getCleanPathList() is replaced with the above. Effectively, all paths read from the config files are now converted into canonical ones. It also adds support for absolute paths in config files. Task-number: QTBUG-36193 Change-Id: I2dc1ee6a67a400e056404ec1c09c6e81f643aa77 Reviewed-by: Martin Smith Reviewed-by: Jędrzej Nowacki --- src/tools/qdoc/config.cpp | 106 ++++++++------------------------------- src/tools/qdoc/config.h | 4 +- src/tools/qdoc/cppcodeparser.cpp | 4 +- src/tools/qdoc/doc.cpp | 8 +-- src/tools/qdoc/generator.cpp | 22 ++++---- src/tools/qdoc/main.cpp | 2 +- 6 files changed, 39 insertions(+), 107 deletions(-) (limited to 'src') diff --git a/src/tools/qdoc/config.cpp b/src/tools/qdoc/config.cpp index 185c1c77f1..644eab8a56 100644 --- a/src/tools/qdoc/config.cpp +++ b/src/tools/qdoc/config.cpp @@ -454,87 +454,21 @@ QStringList Config::getStringList(const QString& var) const } /*! - \brief Returns the a path list where all paths are canonicalized, then - made relative to the config file. - \param var The variable containing the list of paths. - \see Location::canonicalRelativePath() - */ -QStringList Config::getCanonicalPathList(const QString& var) const -{ - QStringList t; - QList configVars = configVars_.values(var); - if (!configVars.empty()) { - int i = configVars.size() - 1; - while (i >= 0) { - const ConfigVar& cv = configVars[i]; - if (!cv.location_.isEmpty()) - (Location&) lastLocation_ = cv.location_; - if (!cv.plus_) - t.clear(); - const QString d = cv.currentPath_; - const QStringList& sl = cv.values_; - if (!sl.isEmpty()) { - t.reserve(t.size() + sl.size()); - for (int i=0; i configVars = configVars_.values(var); - if (!configVars.empty()) { - int i = configVars.size() - 1; - while (i >= 0) { - const ConfigVar& cv = configVars[i]; - if (!cv.plus_) - t.clear(); - if (!cv.location_.isEmpty()) - (Location&) lastLocation_ = cv.location_; - const QStringList& sl = cv.values_; - if (!sl.isEmpty()) { - t.reserve(t.size() + sl.size()); - for (int i=0; i configVars = configVars_.values(var); @@ -542,22 +476,23 @@ QStringList Config::getPathList(const QString& var) const int i = configVars.size() - 1; while (i >= 0) { const ConfigVar& cv = configVars[i]; - if (!cv.plus_) - t.clear(); if (!cv.location_.isEmpty()) (Location&) lastLocation_ = cv.location_; + if (!cv.plus_) + t.clear(); const QString d = cv.currentPath_; const QStringList& sl = cv.values_; if (!sl.isEmpty()) { t.reserve(t.size() + sl.size()); for (int i=0; i getStringSet(const QString& var) const; QStringList getStringList(const QString& var) const; - QStringList getCanonicalPathList(const QString& var) const; - QStringList getCleanPathList(const QString& var) const; - QStringList getPathList(const QString& var) const; + QStringList getCanonicalPathList(const QString& var, bool validate = false) const; QRegExp getRegExp(const QString& var) const; QList getRegExpList(const QString& var) const; QSet subVars(const QString& var) const; diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp index 6603ba6385..cda541c928 100644 --- a/src/tools/qdoc/cppcodeparser.cpp +++ b/src/tools/qdoc/cppcodeparser.cpp @@ -100,8 +100,8 @@ void CppCodeParser::initializeParser(const Config &config) nodeTypeMap.insert(COMMAND_PROPERTY, Node::Property); nodeTypeMap.insert(COMMAND_VARIABLE, Node::Variable); - exampleFiles = config.getCleanPathList(CONFIG_EXAMPLES); - exampleDirs = config.getCleanPathList(CONFIG_EXAMPLEDIRS); + exampleFiles = config.getCanonicalPathList(CONFIG_EXAMPLES); + exampleDirs = config.getCanonicalPathList(CONFIG_EXAMPLEDIRS); QStringList exampleFilePatterns = config.getStringList( CONFIG_EXAMPLES + Config::dot + CONFIG_FILEEXTENSIONS); diff --git a/src/tools/qdoc/doc.cpp b/src/tools/qdoc/doc.cpp index afc21bb518..b18ccb4fe5 100644 --- a/src/tools/qdoc/doc.cpp +++ b/src/tools/qdoc/doc.cpp @@ -3054,10 +3054,10 @@ const Config* Doc::config_ = 0; void Doc::initialize(const Config& config) { DocParser::tabSize = config.getInt(CONFIG_TABSIZE); - DocParser::exampleFiles = config.getCleanPathList(CONFIG_EXAMPLES); - DocParser::exampleDirs = config.getCleanPathList(CONFIG_EXAMPLEDIRS); - DocParser::sourceFiles = config.getCleanPathList(CONFIG_SOURCES); - DocParser::sourceDirs = config.getCleanPathList(CONFIG_SOURCEDIRS); + DocParser::exampleFiles = config.getCanonicalPathList(CONFIG_EXAMPLES); + DocParser::exampleDirs = config.getCanonicalPathList(CONFIG_EXAMPLEDIRS); + DocParser::sourceFiles = config.getCanonicalPathList(CONFIG_SOURCES); + DocParser::sourceDirs = config.getCanonicalPathList(CONFIG_SOURCEDIRS); DocParser::quoting = config.getBool(CONFIG_QUOTINGINFORMATION); QmlClassNode::qmlOnly = config.getBool(CONFIG_QMLONLY); diff --git a/src/tools/qdoc/generator.cpp b/src/tools/qdoc/generator.cpp index 264e489942..2fef419d7a 100644 --- a/src/tools/qdoc/generator.cpp +++ b/src/tools/qdoc/generator.cpp @@ -1585,13 +1585,13 @@ void Generator::initialize(const Config &config) config.lastLocation().fatal(tr("Cannot create style directory '%1'").arg(outDir_ + "/style")); } - imageFiles = config.getCleanPathList(CONFIG_IMAGES); - imageDirs = config.getCleanPathList(CONFIG_IMAGEDIRS); - scriptFiles = config.getCleanPathList(CONFIG_SCRIPTS); - scriptDirs = config.getCleanPathList(CONFIG_SCRIPTDIRS); - styleFiles = config.getCleanPathList(CONFIG_STYLES); - styleDirs = config.getCleanPathList(CONFIG_STYLEDIRS); - exampleDirs = config.getCleanPathList(CONFIG_EXAMPLEDIRS); + imageFiles = config.getCanonicalPathList(CONFIG_IMAGES); + imageDirs = config.getCanonicalPathList(CONFIG_IMAGEDIRS); + scriptFiles = config.getCanonicalPathList(CONFIG_SCRIPTS); + scriptDirs = config.getCanonicalPathList(CONFIG_SCRIPTDIRS); + styleFiles = config.getCanonicalPathList(CONFIG_STYLES); + styleDirs = config.getCanonicalPathList(CONFIG_STYLEDIRS); + exampleDirs = config.getCanonicalPathList(CONFIG_EXAMPLEDIRS); exampleImgExts = config.getStringList(CONFIG_EXAMPLES + Config::dot + CONFIG_IMAGEEXTENSIONS); QString imagesDotFileExtensions = CONFIG_IMAGES + Config::dot + CONFIG_FILEEXTENSIONS; @@ -1607,9 +1607,9 @@ void Generator::initialize(const Config &config) if (outputFormats.contains((*g)->format())) { currentGenerator_ = (*g); (*g)->initializeGenerator(config); - QStringList extraImages = config.getPathList((*g)->format() + + QStringList extraImages = config.getCanonicalPathList((*g)->format() + Config::dot + - CONFIG_EXTRAIMAGES); + CONFIG_EXTRAIMAGES, true); QStringList::ConstIterator e = extraImages.constBegin(); while (e != extraImages.constEnd()) { QString filePath = *e; @@ -1620,7 +1620,7 @@ void Generator::initialize(const Config &config) } // Documentation template handling - QStringList scripts = config.getPathList((*g)->format()+Config::dot+CONFIG_SCRIPTS); + QStringList scripts = config.getCanonicalPathList((*g)->format()+Config::dot+CONFIG_SCRIPTS, true); e = scripts.constBegin(); while (e != scripts.constEnd()) { QString filePath = *e; @@ -1630,7 +1630,7 @@ void Generator::initialize(const Config &config) ++e; } - QStringList styles = config.getPathList((*g)->format()+Config::dot+CONFIG_STYLESHEETS); + QStringList styles = config.getCanonicalPathList((*g)->format()+Config::dot+CONFIG_STYLESHEETS, true); e = styles.constBegin(); while (e != styles.constEnd()) { QString filePath = *e; diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp index 9e0aecf393..91520e3cd2 100644 --- a/src/tools/qdoc/main.cpp +++ b/src/tools/qdoc/main.cpp @@ -393,7 +393,7 @@ static void processQdocconfFile(const QString &fileName) } Generator::debug("Reading excludefiles"); - excludedFilesList = config.getCleanPathList(CONFIG_EXCLUDEFILES); + excludedFilesList = config.getCanonicalPathList(CONFIG_EXCLUDEFILES); foreach (const QString& excludeFile, excludedFilesList) { QString p = QDir::fromNativeSeparators(excludeFile); excludedFiles.insert(p); -- cgit v1.2.3