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
This commit is contained in:
parent
17476b420c
commit
ca5c913ce2
3 changed files with 15 additions and 1 deletions
|
|
@ -22,6 +22,7 @@ from sat.core import exceptions
|
|||
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 @@ class XEP_0071(object):
|
|||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -180,6 +180,7 @@ class XEP_0277(object):
|
|||
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 @@ class XEP_0277(object):
|
|||
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,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ from twisted.words.protocols.jabber import jid
|
|||
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 @@ class ElementParser(object):
|
|||
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")
|
||||
|
|
|
|||
Loading…
Reference in a new issue