[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-14 12:37:52
Message-ID: 20141114123752.2121.74277 () probe ! kde ! org
[Download RAW message or body]

--===============1531626681734281800==
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. 14, 2014, 1:37 p.m.)


Review request for KDE Frameworks and Michael Pyne.


Changes
-------

The KEmoticons plugin has been moved to from FrameworkIntegration into KEmoticons \
Framework


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 (updated)
-----

  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


--===============1531626681734281800==
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. 14, 2014, 1:37 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</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;">The KEmoticons plugin has been moved to from FrameworkIntegration into \
KEmoticons Framework</pre>  </td>
 </tr>
</table>







<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 &lt;a href...&gt; 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 &lt;img&gt; 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> \
(updated)</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>


--===============1531626681734281800==--



_______________________________________________
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