From 320878afdf87d87745d9e36731ae70b8bc23063d Mon Sep 17 00:00:00 2001 From: albert-github Date: Wed, 10 Jun 2020 12:32:24 +0200 Subject: [PATCH] Incorrect label in map of dot files in xhtml https://github.com/doxygen/doxygen/pull/7840/commits/320878afdf87d87745d9e36731ae70b8bc23063d When a filename of a file starts with a digit the mapping of the resulting dot files results in message like: ``` Syntax of value for attribute id of map is not valid ``` an id cannot start with a digit, so an "a" is placed in front of it (unconditionally to overcome problems with a double label id i.e filename 087.cpp and a087.cpp). --- src/dotfilepatcher.cpp | 2 +- src/dotgraph.cpp | 2 +- src/util.cpp | 10 ++++++++++ src/util.h | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp index e386af9..338be69 100644 --- a/src/dotfilepatcher.cpp +++ b/src/dotfilepatcher.cpp @@ -459,7 +459,7 @@ bool DotFilePatcher::run() const convertMapFile(tt,map->mapFile,map->relPath,map->urlOnly,map->context); if (!result.isEmpty()) { - t << "label << "\" id=\"" << map->label << "\">" << endl; + t << "label << "\" id=\"" << correctId(map->label) << "\">" << endl; t << result; t << "" << endl; } diff --git a/src/dotgraph.cpp b/src/dotgraph.cpp index e622dd4..55ea5ab 100644 --- a/src/dotgraph.cpp +++ b/src/dotgraph.cpp @@ -246,7 +246,7 @@ void DotGraph::generateCode(FTextStream &t) else // add link to bitmap file with image map { if (!m_noDivTag) t << "
"; - t << "\"""; + t << "\"""; if (!m_noDivTag) t << "
"; t << endl; if (m_regenerate || !insertMapFile(t, absMapName(), m_relPath, getMapLabel())) diff --git a/src/util.cpp b/src/util.cpp index 6d6112e..e8cf778 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -5382,6 +5382,16 @@ QCString convertToId(const char *s) return growBuf.get(); } +/*! Some strings have been corrected but the requirement regarding the fact + * that an id cannot have a digit at the first position. To overcome problems + * with double labels we always place an "a" in front + */ +QCString correctId(QCString s) +{ + if (s.isEmpty()) return s; + return "a" + s; +} + /*! Converts a string to an XML-encoded string */ QCString convertToXML(const char *s, bool keepEntities) { diff --git a/src/util.h b/src/util.h index 98223b1..54421b2 100644 --- a/src/util.h +++ b/src/util.h @@ -278,6 +278,7 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te QCString stripScope(const char *name); QCString convertToId(const char *s); +QCString correctId(QCString s); QCString convertToHtml(const char *s,bool keepEntities=TRUE); -- 2.23.0