Rename Qt::escape to QString::toHtmlEscaped, add compat method
authorDavid Faure <faure@kde.org>
Thu, 29 Sep 2011 11:31:39 +0000 (13:31 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 29 Sep 2011 13:22:07 +0000 (15:22 +0200)
Merge-request: 56
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Change-Id: I46bbb2df10968e88b5eb5ef8dae182a651b622b8
Reviewed-on: http://codereview.qt-project.org/5793
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
dist/changes-5.0.0
doc/src/snippets/code/src_corelib_tools_qstring.cpp
src/corelib/tools/qstring.cpp
src/corelib/tools/qstring.h
src/gui/text/qtextdocument.cpp
tests/auto/corelib/tools/qstring/tst_qstring.cpp
tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp

index 803e16a..899c944 100644 (file)
@@ -30,6 +30,9 @@ information about a particular change.
 
 - QCoreApplication::translate() will no longer return the source text when
   the translation is empty. Use lrelease -removeidentical for optimization.
+  
+- Qt::escape() is deprecated (but can be enabled via
+  QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead.
 
 ****************************************************************************
 *                           General                                        *
index 740ec54..4a43ac0 100644 (file)
@@ -89,6 +89,6 @@ QLabel *label = new QLabel(QLatin1String("MOD"), this);
 
 //! [7]
 QString plain = "#include <QtCore>"
-QString html = Qt::escape(plain);
+QString html = plain.toHtmlEscaped();
 // html == "#include &lt;QtCore&gt;"
 //! [7]
index 37f8554..c22c8a9 100644 (file)
@@ -8788,6 +8788,14 @@ QVector<uint> QStringRef::toUcs4() const
     return v;
 }
 
+
+/*!
+    \obsolete
+    \fn QString Qt::escape(const QString &plain)
+
+    \sa QString::toHtmlEscaped()
+*/
+
 /*!
     Converts the plain text string \a plain to a HTML string with
     HTML metacharacters \c{<}, \c{>}, \c{&}, and \c{"} replaced by HTML
@@ -8795,27 +8803,24 @@ QVector<uint> QStringRef::toUcs4() const
 
     Example:
 
-    \snippet doc/src/snippets/code/src_gui_text_qtextdocument.cpp 0
-
-    This function is defined in the \c <QString> header file.
-
-    \sa convertFromPlainText(), mightBeRichText()
+    \snippet doc/src/snippets/code/src_corelib_tools_qstring.cpp 7
 */
-QString Qt::escape(const QString &plain)
+QString QString::toHtmlEscaped() const
 {
     QString rich;
-    rich.reserve(int(plain.length() * 1.1));
-    for (int i = 0; i < plain.length(); ++i) {
-        if (plain.at(i) == QLatin1Char('<'))
+    const int len = length();
+    rich.reserve(int(len * 1.1));
+    for (int i = 0; i < len; ++i) {
+        if (at(i) == QLatin1Char('<'))
             rich += QLatin1String("&lt;");
-        else if (plain.at(i) == QLatin1Char('>'))
+        else if (at(i) == QLatin1Char('>'))
             rich += QLatin1String("&gt;");
-        else if (plain.at(i) == QLatin1Char('&'))
+        else if (at(i) == QLatin1Char('&'))
             rich += QLatin1String("&amp;");
-        else if (plain.at(i) == QLatin1Char('"'))
+        else if (at(i) == QLatin1Char('"'))
             rich += QLatin1String("&quot;");
         else
-            rich += plain.at(i);
+            rich += at(i);
     }
     rich.squeeze();
     return rich;
index adb7e06..b73a34a 100644 (file)
@@ -330,6 +330,7 @@ public:
 
     QString trimmed() const Q_REQUIRED_RESULT;
     QString simplified() const Q_REQUIRED_RESULT;
+    QString toHtmlEscaped() const Q_REQUIRED_RESULT;
 
     QString &insert(int i, QChar c);
     QString &insert(int i, const QChar *uc, int len);
@@ -1250,7 +1251,11 @@ inline QBool QStringRef::contains(const QStringRef &s, Qt::CaseSensitivity cs) c
 { return QBool(indexOf(s, 0, cs) != -1); }
 
 namespace Qt {
-    Q_CORE_EXPORT QString escape(const QString &plain);
+#if QT_DEPRECATED_SINCE(5, 0)
+QT_DEPRECATED inline QString escape(const QString &plain) {
+    return plain.toHtmlEscaped();
+}
+#endif
 }
 
 QT_END_NAMESPACE
index c44e98b..8d9a8c4 100644 (file)
@@ -2087,7 +2087,7 @@ void QTextHtmlExporter::emitAttribute(const char *attribute, const QString &valu
     html += QLatin1Char(' ');
     html += QLatin1String(attribute);
     html += QLatin1String("=\"");
-    html += Qt::escape(value);
+    html += value.toHtmlEscaped();
     html += QLatin1Char('"');
 }
 
@@ -2360,7 +2360,7 @@ void QTextHtmlExporter::emitFontFamily(const QString &family)
         quote = QLatin1String("&quot;");
 
     html += quote;
-    html += Qt::escape(family);
+    html += family.toHtmlEscaped();
     html += quote;
     html += QLatin1Char(';');
 }
@@ -2394,13 +2394,13 @@ void QTextHtmlExporter::emitFragment(const QTextFragment &fragment)
         const QString name = format.anchorName();
         if (!name.isEmpty()) {
             html += QLatin1String("<a name=\"");
-            html += Qt::escape(name);
+            html += name.toHtmlEscaped();
             html += QLatin1String("\"></a>");
         }
         const QString href = format.anchorHref();
         if (!href.isEmpty()) {
             html += QLatin1String("<a href=\"");
-            html += Qt::escape(href);
+            html += href.toHtmlEscaped();
             html += QLatin1String("\">");
             closeAnchor = true;
         }
@@ -2449,7 +2449,7 @@ void QTextHtmlExporter::emitFragment(const QTextFragment &fragment)
     } else {
         Q_ASSERT(!txt.contains(QChar::ObjectReplacementCharacter));
 
-        txt = Qt::escape(txt);
+        txt = txt.toHtmlEscaped();
 
         // split for [\n{LineSeparator}]
         QString forcedLineBreakRegExp = QString::fromLatin1("[\\na]");
index 176becb..1721f80 100644 (file)
@@ -226,6 +226,8 @@ private slots:
     void literals();
 
     void reserve();
+    void toHtmlEscaped_data();
+    void toHtmlEscaped();
 };
 
 typedef QList<int> IntList;
@@ -5144,6 +5146,26 @@ void tst_QString::reserve()
     nil2.reserve(0);
 }
 
+void tst_QString::toHtmlEscaped_data()
+{
+    QTest::addColumn<QString>("original");
+    QTest::addColumn<QString>("expected");
+
+    QTest::newRow("1") << "Hello World\n" << "Hello World\n";
+    QTest::newRow("2") << "#include <QtCore>" << "#include &lt;QtCore&gt;";
+    QTest::newRow("3") << "<p class=\"cool\"><a href=\"http://example.com/?foo=bar&amp;bar=foo\">plop --&gt; </a></p>"
+                       << "&lt;p class=&quot;cool&quot;&gt;&lt;a href=&quot;http://example.com/?foo=bar&amp;amp;bar=foo&quot;&gt;plop --&amp;gt; &lt;/a&gt;&lt;/p&gt;";
+    QTest::newRow("4") << QString::fromUtf8("<\320\222\321\201>") << QString::fromUtf8("&lt;\320\222\321\201&gt;");
+}
+
+void tst_QString::toHtmlEscaped()
+{
+    QFETCH(QString, original);
+    QFETCH(QString, expected);
+
+    QCOMPARE(original.toHtmlEscaped(), expected);
+}
+
 QTEST_APPLESS_MAIN(tst_QString)
 
 #include "tst_qstring.moc"
index c98a703..ea8878e 100644 (file)
@@ -177,8 +177,6 @@ private slots:
     void testUndoBlocks();
 
     void receiveCursorPositionChangedAfterContentsChange();
-    void escape_data();
-    void escape();
 
     void copiedFontSize();
 
@@ -2718,26 +2716,6 @@ void tst_QTextDocument::receiveCursorPositionChangedAfterContentsChange()
     QCOMPARE(rec.first, QString("contentsChanged"));
 }
 
-void tst_QTextDocument::escape_data()
-{
-    QTest::addColumn<QString>("original");
-    QTest::addColumn<QString>("expected");
-
-    QTest::newRow("1") << "Hello World\n" << "Hello World\n";
-    QTest::newRow("2") << "#include <QtCore>" << "#include &lt;QtCore&gt;";
-    QTest::newRow("3") << "<p class=\"cool\"><a href=\"http://example.com/?foo=bar&amp;bar=foo\">plop --&gt; </a></p>"
-                       << "&lt;p class=&quot;cool&quot;&gt;&lt;a href=&quot;http://example.com/?foo=bar&amp;amp;bar=foo&quot;&gt;plop --&amp;gt; &lt;/a&gt;&lt;/p&gt;";
-    QTest::newRow("4") << QString::fromUtf8("<\320\222\321\201>") << QString::fromUtf8("&lt;\320\222\321\201&gt;");
-}
-
-void tst_QTextDocument::escape()
-{
-    QFETCH(QString, original);
-    QFETCH(QString, expected);
-
-    QCOMPARE(Qt::escape(original), expected);
-}
-
 void tst_QTextDocument::copiedFontSize()
 {
     QTextDocument documentInput;