[uilib] `uilib.js` helper now honors explicit JSString (closes #4959538)
Previously, if a JSString was inside a nested container (i.e. list or
dict), it was handled as a string, not a verbatim js chunk (see
docstring and test). So the following code::
>>> str(js.cw.pouet(1, {'callback': JSString('cw.mycallback')})
resulted in::
"cw.pouet(1, {'callback': 'cw.mycallback')})"
while we expect (note the removed quotes)::
"cw.pouet(1, {'callback': cw.mycallback)})"
We use ``cubiweb.utils.js_dumps`` instead of
``cubicweb.utils.json_dumps`` which is aware of JSString.
from __future__ import absolute_import
import markdown
import logging
log = logging.getLogger(__name__)
def markdown_publish(context, data):
"""publish a string formatted as MarkDown Text to HTML
:type context: a cubicweb application object
:type data: str
:param data: some MarkDown text
:rtype: unicode
:return:
the data formatted as HTML or the original data if an error occurred
"""
md = markdown.Markdown()
try:
return md.convert(data)
except:
import traceback; traceback.print_exc()
log.exception("Error while converting Markdown to HTML")
return data