[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-frameworks-devel
Subject: Re: Review Request 121094: KCoreAddons: add KTextToHTML class for plaintext -> HTML conversion
From: Daniel_Vrátil <dvratil () redhat ! com>
Date: 2014-11-11 14:51:14
Message-ID: 20141111145114.2121.37518 () probe ! kde ! org
[Download RAW message or body]
--===============0612780432250530955==
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121094/
-----------------------------------------------------------
(Updated Nov. 11, 2014, 3:51 p.m.)
Review request for KDE Frameworks and Michael Pyne.
Repository: kcoreaddons
Description
-------
This class comes from KPimUtils::LinkLocator from kdepimlibs.git. This class takes \
plaintext string, and converts it to HTML while perserving spacing, converting URLs \
and email addresses into <a href...> links and interpreting highligting markup \
(*bold*, _underline_, /italic/) and wrapping it to corresponding HTML tags. It can \
also convert text emoticons into <img> smileys.
The last - emoticons conversion - depends on KEmoticons, which we can't use directly \
from KCoreAddons, so I moved the actual KEmoticons code into FrameworkIntegration \
plugin. There is a dummy implementation provided by default in KCoreAddons that is \
loaded when the FrameworkIntegration plugin is not available, or when the application \
is only a QCoreApplication (since KEmoticons require QGuiApplication, so we must not \
load the plugin). The dummy implementation does nothing and returns the original \
string unaltered.
The reason for moving the class from KPimUtils is that KPimUtils is going to die, and \
while we could make this internal to KDE PIM, I think this is a rather useful code, \
that can be used by many applications that need to deal with 3rd party text data and \
want to provide user-friendly clickable links.
If you compare this with the original KPimUtils::LinkLocator you find, that I removed \
all public API except for the convertToHTML method. This is because the remaining \
methods (getUrl, getEmailAddress) depend on the actual state of the LinkLocator \
object, but LinkLocator provides no API for step-by-step parsing, so they were \
actually useless for public use. For that reason I decided to only publish the \
convertToHTML method, and hide the remaining methods as internal methods of the \
KTextToHTMLHelper (useful for unit-testing).
This patch also contains a unit-test from KPimUtils.
Diffs
-----
autotests/CMakeLists.txt d5a5feb
autotests/ktexttohtmltest.h PRE-CREATION
autotests/ktexttohtmltest.cpp PRE-CREATION
src/lib/CMakeLists.txt 1dc5627
src/lib/text/ktexttohtml.h PRE-CREATION
src/lib/text/ktexttohtml.cpp PRE-CREATION
src/lib/text/ktexttohtml_p.h PRE-CREATION
src/lib/text/ktexttohtmlemoticonsinterface.h PRE-CREATION
Diff: https://git.reviewboard.kde.org/r/121094/diff/
Testing
-------
Unit test passes
Thanks,
Daniel Vrátil
--===============0612780432250530955==
MIME-Version: 1.0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit
<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 \
solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;"> \
<tr> <td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://git.reviewboard.kde.org/r/121094/">https://git.reviewboard.kde.org/r/121094/</a>
</td>
</tr>
</table>
<br />
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: \
1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; \
-webkit-border-radius: 6px;"> <tr>
<td>
<div>Review request for KDE Frameworks and Michael Pyne.</div>
<div>By Daniel Vrátil.</div>
<p style="color: grey;"><i>Updated Nov. 11, 2014, 3:51 p.m.</i></p>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
kcoreaddons
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" \
style="border: 1px solid #b8b5a0"> <tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">This class comes from KPimUtils::LinkLocator from \
kdepimlibs.git. This class takes plaintext string, and converts it to HTML while \
perserving spacing, converting URLs and email addresses into <a href...> links \
and interpreting highligting markup (<em style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: normal;">bold</em>, <em \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
normal;">underline</em>, /italic/) and wrapping it to corresponding HTML tags. It can \
also convert text emoticons into <img> smileys.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The \
last - emoticons conversion - depends on KEmoticons, which we can't use directly from \
KCoreAddons, so I moved the actual KEmoticons code into FrameworkIntegration plugin. \
There is a dummy implementation provided by default in KCoreAddons that is loaded \
when the FrameworkIntegration plugin is not available, or when the application is \
only a QCoreApplication (since KEmoticons require QGuiApplication, so we must not \
load the plugin). The dummy implementation does nothing and returns the original \
string unaltered.</p> <p style="padding: 0;text-rendering: inherit;margin: \
0;line-height: inherit;white-space: inherit;">The reason for moving the class from \
KPimUtils is that KPimUtils is going to die, and while we could make this internal to \
KDE PIM, I think this is a rather useful code, that can be used by many applications \
that need to deal with 3rd party text data and want to provide user-friendly \
clickable links.</p> <p style="padding: 0;text-rendering: inherit;margin: \
0;line-height: inherit;white-space: inherit;">If you compare this with the original \
KPimUtils::LinkLocator you find, that I removed all public API except for the \
convertToHTML method. This is because the remaining methods (getUrl, getEmailAddress) \
depend on the actual state of the LinkLocator object, but LinkLocator provides no API \
for step-by-step parsing, so they were actually useless for public use. For that \
reason I decided to only publish the convertToHTML method, and hide the remaining \
methods as internal methods of the KTextToHTMLHelper (useful for unit-testing).</p> \
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">This patch also contains a unit-test from \
KPimUtils.</p></pre> </td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0"> <tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">Unit test passes</p></pre> </td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>autotests/CMakeLists.txt <span style="color: grey">(d5a5feb)</span></li>
<li>autotests/ktexttohtmltest.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>autotests/ktexttohtmltest.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>
<li>src/lib/CMakeLists.txt <span style="color: grey">(1dc5627)</span></li>
<li>src/lib/text/ktexttohtml.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/lib/text/ktexttohtml.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>
<li>src/lib/text/ktexttohtml_p.h <span style="color: \
grey">(PRE-CREATION)</span></li>
<li>src/lib/text/ktexttohtmlemoticonsinterface.h <span style="color: \
grey">(PRE-CREATION)</span></li>
</ul>
<p><a href="https://git.reviewboard.kde.org/r/121094/diff/" style="margin-left: \
3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>
--===============0612780432250530955==--
_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic