From 62db9ea4bd4ba2815e3f3d0594cc78dcd8839163 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Wed, 14 Sep 2011 10:08:27 -0300 Subject: Fixed function link generated in documentation. Fixes bug #986. Reviewer: Marcelo Lira Hugo Parente --- generators/qtdoc/qtdocgenerator.cpp | 25 ++++++++++++++++++++++++- generators/qtdoc/qtdocgenerator.h | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'generators/qtdoc') diff --git a/generators/qtdoc/qtdocgenerator.cpp b/generators/qtdoc/qtdocgenerator.cpp index 05a452aab..d301a0cd2 100644 --- a/generators/qtdoc/qtdocgenerator.cpp +++ b/generators/qtdoc/qtdocgenerator.cpp @@ -99,6 +99,7 @@ static QString escape(const QStringRef& strref) return escape(str); } + QtXmlToSphinx::QtXmlToSphinx(QtDocGenerator* generator, const QString& doc, const QString& context) : m_context(context), m_generator(generator), m_insideBold(false), m_insideItalic(false) { @@ -164,6 +165,26 @@ QString QtXmlToSphinx::popOutputBuffer() return strcpy; } +QString QtXmlToSphinx::expandFunction(const QString& function) +{ + QStringList functionSpec = function.split('.'); + QString className = functionSpec.first(); + const AbstractMetaClass* metaClass = 0; + foreach (const AbstractMetaClass* cls, m_generator->classes()) { + if (cls->name() == className) { + metaClass = cls; + break; + } + } + + if (metaClass) { + functionSpec.removeFirst(); + return metaClass->typeEntry()->qualifiedTargetLangName() + "." + functionSpec.join("."); + } else { + return function; + } +} + QString QtXmlToSphinx::resolveContextForMethod(const QString& methodName) { QString currentClass = m_context.split(".").last(); @@ -191,7 +212,7 @@ QString QtXmlToSphinx::resolveContextForMethod(const QString& methodName) } if (implementingClass) - return implementingClass->name(); + return implementingClass->typeEntry()->qualifiedTargetLangName(); } return QLatin1String("~") + m_context; @@ -576,6 +597,8 @@ void QtXmlToSphinx::handleLinkTag(QXmlStreamReader& reader) QString context = resolveContextForMethod(rawlinklist.last()); if (!l_linkref.startsWith(context)) l_linkref.prepend(context + '.'); + } else { + l_linkref = expandFunction(l_linkref); } } else if (l_type == "function" && m_context.isEmpty()) { l_linktag = " :func:`"; diff --git a/generators/qtdoc/qtdocgenerator.h b/generators/qtdoc/qtdocgenerator.h index fc8c82b0e..660d28bbd 100644 --- a/generators/qtdoc/qtdocgenerator.h +++ b/generators/qtdoc/qtdocgenerator.h @@ -93,6 +93,7 @@ public: private: QString resolveContextForMethod(const QString& methodName); + QString expandFunction(const QString& function); QString transform(const QString& doc); void handleHeadingTag(QXmlStreamReader& reader); -- cgit v1.2.3