summaryrefslogtreecommitdiffstats
path: root/tools/qdoc3/quoter.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-02-04 14:19:15 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-02-04 14:19:15 (GMT)
commitf018d9236647b687e03dd9d2e1867944b4f4058b (patch)
treefa45c1bba51250efd04d630eef9a1d8ca4ca5941 /tools/qdoc3/quoter.cpp
parentbc331aca61a2f212a347708c9d44a4fb092183fd (diff)
parentf34259ed82da481f009830839ad4d421d9b80780 (diff)
downloadQt-f018d9236647b687e03dd9d2e1867944b4f4058b.zip
Qt-f018d9236647b687e03dd9d2e1867944b4f4058b.tar.gz
Qt-f018d9236647b687e03dd9d2e1867944b4f4058b.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-doc-staging into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-doc-staging: (216 commits) Doc: Fixed a reference to the wrong image. Fixed a bug that caused marked up inline text to be truncated. Doc: Renamed an image to ensure that it does not clash with another. Doc: Fixed QML, unindented snippet. Doc: Removed unnecessary HTML entity from the title. Doc: Fixed broken links to the old Symbian Foundation Wiki. Doc: Updated the copyright statements in the templates. Doc: Fixing typo Replace all occurances of "Qt 4.7" with "QtQuick 1.0" Doc: Adjusted the font sizes for the offline documentation. Doc: Added a missing style sheet to the qhp manifest. Doc: Fixed the qthelp namespace for the Qt documentation. Doc: including missing pages in overviews. Doc: Fixed typo in QCoreApplication docs Fixed whitespace. Avoid hard-coding product names in page titles. Doc: Unindented a code snippet. Doc: Fixed confusing wording of a sentence. Doc: Fixed a broken link. Doc: Updated the information about commercial editions of Qt. ...
Diffstat (limited to 'tools/qdoc3/quoter.cpp')
-rw-r--r--tools/qdoc3/quoter.cpp79
1 files changed, 43 insertions, 36 deletions
diff --git a/tools/qdoc3/quoter.cpp b/tools/qdoc3/quoter.cpp
index 1892f89..dadf67c 100644
--- a/tools/qdoc3/quoter.cpp
+++ b/tools/qdoc3/quoter.cpp
@@ -41,7 +41,6 @@
#include <qfileinfo.h>
#include <qregexp.h>
-#include <qdebug.h>
#include "quoter.h"
@@ -123,9 +122,9 @@ Quoter::Quoter()
/* We're going to hard code these delimiters:
* C++, Qt, Qt Script, Java:
//! [<id>]
- * .pro files:
+ * .pro, .py files:
#! [<id>]
- * .xq, .xml, .html files:
+ * .html, .qrc, .ui, .xq, .xml files:
<!-- [<id>] -->
*/
commentHash["pro"] = "#!";
@@ -222,10 +221,13 @@ QString Quoter::quoteSnippet(const Location &docLocation, const QString &identif
QString comment = commentForCode();
QString delimiter = comment + QString(" [%1]").arg(identifier);
QString t;
+ int indent = 0;
while (!plainLines.isEmpty()) {
if (match(docLocation, delimiter, plainLines.first())) {
- getLine();
+ QString startLine = getLine();
+ while (indent < startLine.length() && startLine[indent] == QLatin1Char(' '))
+ indent++;
break;
}
getLine();
@@ -233,33 +235,24 @@ QString Quoter::quoteSnippet(const Location &docLocation, const QString &identif
while (!plainLines.isEmpty()) {
QString line = plainLines.first();
if (match(docLocation, delimiter, line)) {
- QString lastLine = getLine();
+ QString lastLine = getLine(indent);
int dIndex = lastLine.indexOf(delimiter);
if (dIndex > 0) {
+ // The delimiter might be preceded on the line by other
+ // delimeters, so look for the first comment on the line.
QString leading = lastLine.left(dIndex);
dIndex = leading.indexOf(comment);
if (dIndex != -1)
leading = leading.left(dIndex);
+ if (leading.endsWith(QLatin1String("<@comment>")))
+ leading.chop(10);
if (!leading.trimmed().isEmpty())
t += leading;
}
return t;
}
- // Remove special macros to support Qt namespacing.
- if (line.startsWith("QT_BEGIN_NAMESPACE")) {
- getLine();
- } else if (line.startsWith("QT_END_NAMESPACE")) {
- getLine();
- t += QLatin1Char('\n');
- } else if (!line.startsWith(comment)) {
- // Ordinary code
- t += getLine();
- } else {
- // Normal comments
- if (line.contains(QLatin1Char('\n')))
- t += QLatin1Char('\n');
- getLine();
- }
+
+ t += removeSpecialLines(line, comment, indent);
}
failedAtEnd(docLocation, QString("snippet (%1)").arg(delimiter));
return t;
@@ -274,21 +267,7 @@ QString Quoter::quoteTo( const Location& docLocation, const QString& command,
if ( pattern.isEmpty() ) {
while ( !plainLines.isEmpty() ) {
QString line = plainLines.first();
- // Remove special macros to support Qt namespacing.
- if (line.startsWith("QT_BEGIN_NAMESPACE")) {
- getLine();
- } else if (line.startsWith("QT_END_NAMESPACE")) {
- getLine();
- t += QLatin1Char('\n');
- } else if (!line.startsWith(comment))
- // Ordinary code
- t += getLine();
- else {
- // Normal comments
- if (line.contains(QLatin1Char('\n')))
- t += QLatin1Char('\n');
- getLine();
- }
+ t += removeSpecialLines(line, comment);
}
} else {
while ( !plainLines.isEmpty() ) {
@@ -310,7 +289,7 @@ QString Quoter::quoteUntil( const Location& docLocation, const QString& command,
return t;
}
-QString Quoter::getLine()
+QString Quoter::getLine(int unindent)
{
if ( plainLines.isEmpty() )
return QString();
@@ -318,6 +297,11 @@ QString Quoter::getLine()
plainLines.removeFirst();
QString t = markedLines.takeFirst();
+ int i = 0;
+ while (i < unindent && i < t.length() && t[i] == QLatin1Char(' '))
+ i++;
+
+ t = t.mid(i);
t += QLatin1Char('\n');
codeLocation.advanceLines( t.count( QLatin1Char('\n') ) );
return t;
@@ -366,4 +350,27 @@ QString Quoter::commentForCode() const
return commentHash.value(suffix, "//!");
}
+QString Quoter::removeSpecialLines(const QString &line, const QString &comment, int unindent)
+{
+ QString t;
+
+ // Remove special macros to support Qt namespacing.
+ QString trimmed = line.trimmed();
+ if (trimmed.startsWith("QT_BEGIN_NAMESPACE")) {
+ getLine();
+ } else if (trimmed.startsWith("QT_END_NAMESPACE")) {
+ getLine();
+ t += QLatin1Char('\n');
+ } else if (!trimmed.startsWith(comment)) {
+ // Ordinary code
+ t += getLine(unindent);
+ } else {
+ // Comments
+ if (line.contains(QLatin1Char('\n')))
+ t += QLatin1Char('\n');
+ getLine();
+ }
+ return t;
+}
+
QT_END_NAMESPACE