qdoc: Config class uses current path for each path var

The Config class is further modified to make
use of the current directory information it
stores with each configuration variable.

Task-number: QTBUG-30725
Change-Id: I34c845e6c05d7868266324f1d54e56f94d709f95
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This commit is contained in:
Martin Smith 2013-04-30 11:56:35 +02:00 committed by The Qt Project
parent a2892ad1d7
commit 08be36c176
5 changed files with 10 additions and 25 deletions

View File

@ -381,7 +381,7 @@ QStringList Config::getStringList(const QString& var) const
\param var The variable containing the list of paths. \param var The variable containing the list of paths.
\see Location::canonicalRelativePath() \see Location::canonicalRelativePath()
*/ */
QStringList Config::getCanonicalRelativePathList(const QString& var) const QStringList Config::getCanonicalPathList(const QString& var) const
{ {
QStringList t; QStringList t;
QList<ConfigVar> configVars = configVars_.values(var); QList<ConfigVar> configVars = configVars_.values(var);
@ -391,15 +391,16 @@ QStringList Config::getCanonicalRelativePathList(const QString& var) const
const ConfigVar& cv = configVars[i]; const ConfigVar& cv = configVars[i];
if (!cv.location_.isEmpty()) if (!cv.location_.isEmpty())
(Location&) lastLocation_ = cv.location_; (Location&) lastLocation_ = cv.location_;
if (!cv.plus_) if (!cv.plus_) {
t.clear(); t.clear();
}
const QString d = cv.currentPath_; const QString d = cv.currentPath_;
const QStringList& sl = cv.values_; const QStringList& sl = cv.values_;
if (!sl.isEmpty()) { if (!sl.isEmpty()) {
t.reserve(t.size() + sl.size()); t.reserve(t.size() + sl.size());
for (int i=0; i<sl.size(); ++i) { for (int i=0; i<sl.size(); ++i) {
const QString& crp = Location::canonicalRelativePath(sl[i], d); QDir dir(d + "/" + sl[i]);
t.append(crp); t.append(dir.canonicalPath());
} }
} }
--i; --i;
@ -595,7 +596,7 @@ QStringList Config::getAllFiles(const QString &filesVar,
const QSet<QString> &excludedFiles) const QSet<QString> &excludedFiles)
{ {
QStringList result = getStringList(filesVar); QStringList result = getStringList(filesVar);
QStringList dirs = getCanonicalRelativePathList(dirsVar); QStringList dirs = getCanonicalPathList(dirsVar);
QString nameFilter = getString(filesVar + dot + QLatin1String(CONFIG_FILEEXTENSIONS)); QString nameFilter = getString(filesVar + dot + QLatin1String(CONFIG_FILEEXTENSIONS));
@ -611,7 +612,7 @@ QStringList Config::getExampleQdocFiles(const QSet<QString> &excludedDirs,
const QSet<QString> &excludedFiles) const QSet<QString> &excludedFiles)
{ {
QStringList result; QStringList result;
QStringList dirs = getCanonicalRelativePathList("exampledirs"); QStringList dirs = getCanonicalPathList("exampledirs");
QString nameFilter = " *.qdoc"; QString nameFilter = " *.qdoc";
QStringList::ConstIterator d = dirs.constBegin(); QStringList::ConstIterator d = dirs.constBegin();
@ -626,7 +627,7 @@ QStringList Config::getExampleImageFiles(const QSet<QString> &excludedDirs,
const QSet<QString> &excludedFiles) const QSet<QString> &excludedFiles)
{ {
QStringList result; QStringList result;
QStringList dirs = getCanonicalRelativePathList("exampledirs"); QStringList dirs = getCanonicalPathList("exampledirs");
QString nameFilter = getString(CONFIG_EXAMPLES + dot + QLatin1String(CONFIG_IMAGEEXTENSIONS)); QString nameFilter = getString(CONFIG_EXAMPLES + dot + QLatin1String(CONFIG_IMAGEEXTENSIONS));
QStringList::ConstIterator d = dirs.constBegin(); QStringList::ConstIterator d = dirs.constBegin();

View File

@ -101,7 +101,7 @@ public:
QString getString(const QString& var) const; QString getString(const QString& var) const;
QSet<QString> getStringSet(const QString& var) const; QSet<QString> getStringSet(const QString& var) const;
QStringList getStringList(const QString& var) const; QStringList getStringList(const QString& var) const;
QStringList getCanonicalRelativePathList(const QString& var) const; QStringList getCanonicalPathList(const QString& var) const;
QStringList getCleanPathList(const QString& var) const; QStringList getCleanPathList(const QString& var) const;
QStringList getPathList(const QString& var) const; QStringList getPathList(const QString& var) const;
QRegExp getRegExp(const QString& var) const; QRegExp getRegExp(const QString& var) const;

View File

@ -243,21 +243,6 @@ QString Location::canonicalRelativePath(const QString &path)
return configFileDir.relativeFilePath(canon); return configFileDir.relativeFilePath(canon);
} }
/*!
\brief Returns \a path which is canonicalized and relative to the \a configDir.
QDir::relativeFilePath does not canonicalize the paths, so
if the config file is located at qtbase\src\widgets\doc\qtwidgets.qdocconf
and it has a reference to any ancestor folder (e.g. ".." or even "../doc")
*/
QString Location::canonicalRelativePath(const QString &path, const QString &configDir)
{
QDir configFileDir(configDir);
QDir dir(path);
const QString canon = dir.canonicalPath();
return configFileDir.relativeFilePath(canon);
}
/*! \fn int Location::lineNo() const /*! \fn int Location::lineNo() const
Returns the current line number. Returns the current line number.
Must not be called on an empty Location object. Must not be called on an empty Location object.

View File

@ -101,7 +101,6 @@ public:
static void startLoggingProgress() { logProgress_ = true; } static void startLoggingProgress() { logProgress_ = true; }
static void stopLoggingProgress() { logProgress_ = false; } static void stopLoggingProgress() { logProgress_ = false; }
static QString canonicalRelativePath(const QString &path); static QString canonicalRelativePath(const QString &path);
static QString canonicalRelativePath(const QString &path, const QString &configDir);
private: private:
enum MessageType { Warning, Error }; enum MessageType { Warning, Error };

View File

@ -356,7 +356,7 @@ static void processQdocconfFile(const QString &fileName)
QStringList excludedFilesList; QStringList excludedFilesList;
Generator::debugSegfault("Reading excludedirs"); Generator::debugSegfault("Reading excludedirs");
excludedDirsList = config.getCanonicalRelativePathList(CONFIG_EXCLUDEDIRS); excludedDirsList = config.getCanonicalPathList(CONFIG_EXCLUDEDIRS);
foreach (const QString &excludeDir, excludedDirsList) { foreach (const QString &excludeDir, excludedDirsList) {
QString p = QDir::fromNativeSeparators(excludeDir); QString p = QDir::fromNativeSeparators(excludeDir);
QDir tmp(p); QDir tmp(p);