<table><tr><td style="">vkrause created this revision.<br />Restricted Application added a project: KDE PIM.<br />Restricted Application added a subscriber: KDE PIM.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D8583" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This plugins looks for structured data about the email content inside HTML<br />
mail parts based on the schema.org ontology, as can be found in e.g.<br />
airline and hotel booking confirmation emails.</p>

<p>The only thing this does with that information for now is showing a simple<br />
summary of a flight itinerary. That's already useful, so you don't have<br />
to look through the usual several pages of poorly rendered HTML content.<br />
Allowing to add booking details to your calendar is an obvious next step.</p>

<p>Seeing how many workarounds were needed to parse the real-world mails I<br />
have here, I suspect this will need more adjustments, so please send me<br />
test material :)</p>

<p>See also <a href="https://developers.google.com/gmail/markup/" class="remarkup-link" target="_blank" rel="noreferrer">https://developers.google.com/gmail/markup/</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R81 KDE PIM Addons</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D8583" rel="noreferrer">https://phabricator.kde.org/D8583</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>plugins/messageviewer/bodypartformatter/CMakeLists.txt<br />
plugins/messageviewer/bodypartformatter/autotests/CMakeLists.txt<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-flight-reservation-json-ld.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-flight-reservation-json-ld.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-flight-reservation-microdata.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-flight-reservation-microdata.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-json-ld.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-json-ld.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-microdata-inline.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-microdata-inline.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-microdata.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/google-microdata.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/hotel-json-ld-fallback.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/hotel-json-ld-fallback.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/lh-invalid-microdata.html<br />
plugins/messageviewer/bodypartformatter/autotests/structureddata/lh-invalid-microdata.json<br />
plugins/messageviewer/bodypartformatter/autotests/structureddataextractortest.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/CMakeLists.txt<br />
plugins/messageviewer/bodypartformatter/semantic/datatypes.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/datatypes.h<br />
plugins/messageviewer/bodypartformatter/semantic/jsonlddocument.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/jsonlddocument.h<br />
plugins/messageviewer/bodypartformatter/semantic/semantic_plugin.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/semantic_plugin.json<br />
plugins/messageviewer/bodypartformatter/semantic/semanticmemento.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/semanticmemento.h<br />
plugins/messageviewer/bodypartformatter/semantic/semanticprocessor.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/semanticprocessor.h<br />
plugins/messageviewer/bodypartformatter/semantic/semanticrenderer.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/semanticrenderer.h<br />
plugins/messageviewer/bodypartformatter/semantic/structureddataextractor.cpp<br />
plugins/messageviewer/bodypartformatter/semantic/structureddataextractor.h<br />
plugins/messageviewer/bodypartformatter/semantic/templates.qrc<br />
plugins/messageviewer/bodypartformatter/semantic/templates/semantic.html</div></div></div><br /><div><strong>To: </strong>vkrause<br /><strong>Cc: </strong>KDE PIM, dvasin, winterz, vkrause, mlaurent, knauss, dvratil<br /></div>