diff options
Diffstat (limited to 'src/qdoc/qdoc/docparser.cpp')
-rw-r--r-- | src/qdoc/qdoc/docparser.cpp | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/src/qdoc/qdoc/docparser.cpp b/src/qdoc/qdoc/docparser.cpp index 8ec7a49bf..0d4383f67 100644 --- a/src/qdoc/qdoc/docparser.cpp +++ b/src/qdoc/qdoc/docparser.cpp @@ -636,7 +636,7 @@ void DocParser::parse(const QString &source, DocPrivate *docPrivate, break; case CMD_KEYWORD: leavePara(); - insertTarget(getRestOfLine(), true); + insertKeyword(getRestOfLine()); break; case CMD_L: enterPara(); @@ -955,7 +955,7 @@ void DocParser::parse(const QString &source, DocPrivate *docPrivate, append(Atom::TableOfContents, p1); break; case CMD_TARGET: - insertTarget(getRestOfLine(), false); + insertTarget(getRestOfLine()); break; case CMD_TT: startFormat(ATOM_FORMATTING_TELETYPE, cmd); @@ -1307,7 +1307,21 @@ static void warnAboutPreexistingTarget(const Location &location, const QString & .arg(duplicateDefinition, previousDefinition)); } -void DocParser::insertTarget(const QString &target, bool keyword) +/*! + \internal + + \brief Registers \a target as a linkable entity. + + The main purpose of this method is to register a target as defined + along with its location, so that becomes a valid link target from other + parts of the documentation. + + If the \a target name is already registered, a warning is issued, + as multiple definitions are problematic. + + \sa insertKeyword, target-command + */ +void DocParser::insertTarget(const QString &target) { if (m_targetMap.contains(target)) return warnAboutPreexistingTarget(location(), target, m_targetMap[target].toString()); @@ -1315,13 +1329,34 @@ void DocParser::insertTarget(const QString &target, bool keyword) m_targetMap.insert(target, location()); m_private->constructExtra(); - if (keyword) { - append(Atom::Keyword, target); - m_private->extra->m_keywords.append(m_private->m_text.lastAtom()); - } else { - append(Atom::Target, target); - m_private->extra->m_targets.append(m_private->m_text.lastAtom()); - } + append(Atom::Target, target); + m_private->extra->m_targets.append(m_private->m_text.lastAtom()); +} + +/*! + \internal + + \brief Registers \a keyword as a linkable entity. + + The main purpose of this method is to register a keyword as defined + along with its location, so that becomes a valid link target from other + parts of the documentation. + + If the \a keyword name is already registered, a warning is issued, + as multiple definitions are problematic. + + \sa insertTarget, keyword-command + */ +void DocParser::insertKeyword(const QString &keyword) +{ + if (m_targetMap.contains(keyword)) + return warnAboutPreexistingTarget(location(), keyword, m_targetMap[keyword].toString()); + + m_targetMap.insert(keyword, location()); + m_private->constructExtra(); + + append(Atom::Keyword, keyword); + m_private->extra->m_keywords.append(m_private->m_text.lastAtom()); } void DocParser::include(const QString &fileName, const QString &identifier, const QStringList ¶meters) |