From 27bced7694a593eca555bf4cc46c084ba9302f2d Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Wed, 11 May 2016 14:40:26 +0200 Subject: qdoc: Allow example files to be excluded Documentation configuration variables 'excludedirs' and 'excludefiles' had no effect on what source and image files were listed as belonging to an example. This commit fixes that, and refactors excludedirs/files handling: Remove duplicated code blocks, amd simplify the code reading the variables: - Drop checks whether an excluded directory exists - Drop conversion of native separators for excluded paths Both are unnecessary; QDoc expects '/'-separated paths for many other variables, and if an excluded dir does not exist, it won't exclude anything. Change-Id: Ie25511e20d33888653c23bb84975368317eb4306 Reviewed-by: Alex Blasche Reviewed-by: Martin Smith --- src/qdoc/cppcodeparser.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/qdoc/cppcodeparser.cpp') diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index c1295c3a7..61fb9b7d7 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -54,6 +54,8 @@ static bool inMacroCommand_ = false; static bool parsingHeaderFile_ = false; QStringList CppCodeParser::exampleFiles; QStringList CppCodeParser::exampleDirs; +QSet CppCodeParser::excludeDirs; +QSet CppCodeParser::excludeFiles; CppCodeParser* CppCodeParser::cppParser_ = 0; /*! @@ -78,7 +80,7 @@ CppCodeParser::~CppCodeParser() /*! The constructor initializes a map of special node types for identifying important nodes. And it initializes - some filters for identifying certain kinds of files. + some filters for identifying and excluding certain kinds of files. */ void CppCodeParser::initializeParser(const Config &config) { @@ -100,6 +102,10 @@ void CppCodeParser::initializeParser(const Config &config) QStringList exampleFilePatterns = config.getStringList( CONFIG_EXAMPLES + Config::dot + CONFIG_FILEEXTENSIONS); + // Used for excluding dirs and files from the list of example files + excludeDirs = QSet::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEDIRS)); + excludeFiles = QSet::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEFILES)); + if (!exampleFilePatterns.isEmpty()) exampleNameFilter = exampleFilePatterns.join(' '); else @@ -121,6 +127,8 @@ void CppCodeParser::initializeParser(const Config &config) void CppCodeParser::terminateParser() { nodeTypeMap.clear(); + excludeDirs.clear(); + excludeFiles.clear(); CodeParser::terminateParser(); } @@ -2643,9 +2651,9 @@ void CppCodeParser::createExampleFileNodes(DocumentNode *dn) sizeOfBoringPartOfName = sizeOfBoringPartOfName - 2; fullPath.truncate(fullPath.lastIndexOf('/')); - QStringList exampleFiles = Config::getFilesHere(fullPath,exampleNameFilter); + QStringList exampleFiles = Config::getFilesHere(fullPath, exampleNameFilter, Location(), excludeDirs, excludeFiles); QString imagesPath = fullPath + "/images"; - QStringList imageFiles = Config::getFilesHere(imagesPath,exampleImageFilter); + QStringList imageFiles = Config::getFilesHere(imagesPath, exampleImageFilter, Location(), excludeDirs, excludeFiles); if (!exampleFiles.isEmpty()) { // move main.cpp and to the end, if it exists QString mainCpp; -- cgit v1.2.1