Mercurial > libervia-backend
changeset 1732:cf11cfc87ef9
xml_tools, plugin XEP-0071, XEP-0277: add method expandNewLinesToXHTML:
- \n in XHTML content should not be converted to <br /> by the frontend
- save it directly in the Atom payload for better compatibility with other clients
author | souliane <souliane@mailoo.org> |
---|---|
date | Thu, 10 Dec 2015 14:00:21 +0100 |
parents | 58ecc0e2e6fc |
children | 3770d13776e8 |
files | src/plugins/plugin_xep_0071.py src/plugins/plugin_xep_0277.py src/tools/xml_tools.py |
diffstat | 3 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0071.py Thu Dec 10 10:44:04 2015 +0100 +++ b/src/plugins/plugin_xep_0071.py Thu Dec 10 14:00:21 2015 +0100 @@ -22,6 +22,7 @@ from sat.core.log import getLogger log = getLogger(__name__) +from sat.tools import xml_tools from wokkel import disco, iwokkel from zope.interface import implements # from lxml import etree @@ -118,6 +119,7 @@ raise exceptions.DataError(_("Can't have xhtml and rich content at the same time")) if xhtml: d = self.synt_plg.clean_xhtml(xhtml) + d.addCallback(xml_tools.expandNewLinesToXHTML) d.addCallback(syntax_converted) return d
--- a/src/plugins/plugin_xep_0277.py Thu Dec 10 10:44:04 2015 +0100 +++ b/src/plugins/plugin_xep_0277.py Thu Dec 10 14:00:21 2015 +0100 @@ -180,6 +180,7 @@ key = check_conflict(u'{}_xhtml'.format(elem.name)) data = data_elt.toXml() microblog_data[key] = yield self.host.plugins["TEXT-SYNTAXES"].clean_xhtml(data) + microblog_data[key] = xml_tools.expandNewLinesToXHTML(microblog_data[key]) else: key = check_conflict(elem.name) microblog_data[key] = unicode(elem) @@ -368,6 +369,7 @@ raise failure.Failure(exceptions.DataError(_("Can't have xhtml and rich content at the same time"))) else: # clean the XHTML input converted = yield synt.clean_xhtml(data[attr]) + converted = xml_tools.expandNewLinesToXHTML(converted) xml_content = u'<div xmlns="{ns}">{converted}</div>'.format( ns=NS_XHTML,
--- a/src/tools/xml_tools.py Thu Dec 10 10:44:04 2015 +0100 +++ b/src/tools/xml_tools.py Thu Dec 10 14:00:21 2015 +0100 @@ -29,7 +29,7 @@ from twisted.internet import defer from sat.core import exceptions from collections import OrderedDict - +import re """This library help manage XML used in SàT (parameters, registration, etc)""" @@ -1351,3 +1351,13 @@ tmp.addRawXml(raw_xml) parser.parse(tmp.toXml().encode('utf-8')) return self.result.firstChildElement() + + +def expandNewLinesToXHTML(text): + """If not present yet, add a <br /> before all \n occurences. + + @param text(unicode) + @return unicode + """ + # if present, replace <br> (HTML), <br > and <br/> at end of line with <br /> (XHTML) + return re.sub(r"<br[ ]?/?>\n", "\n", text).replace("\n", "<br />\n")