Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 6277:957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
Make earlier patch to fix mismatch between simplemde formatting
of embedded newlines choosable. New option MARKDOWN_BREAK_ON_NEWLINE
added to config.ini. If set to true all 4 renders: markdown,
markdown2, mistune and simplemde will make a newline into a hard
linebreak using <br> when displayed.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 25 Oct 2020 16:12:15 -0400 |
| parents | bda491248fd8 |
| children | 9ec3a9bc4ea5 |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Fri Oct 23 18:38:37 2020 -0400 +++ b/roundup/cgi/templating.py Sun Oct 25 16:12:15 2020 -0400 @@ -69,7 +69,13 @@ # don't allow disabled protocols in links _safe_protocols = re.compile('(?!' + ':|'.join([re.escape(s) for s in _disable_url_schemes]) + ':)', re.IGNORECASE) - markdown = lambda s: Markdown(safe_mode='escape', extras={ 'fenced-code-blocks' : True }).convert(s) + def _extras(config): + extras = { 'fenced-code-blocks' : True } + if config['MARKDOWN_BREAK_ON_NEWLINE']: + extras['break-on-newline'] = True + return extras + + markdown = lambda s, c: Markdown(safe_mode='escape', extras=_extras(c)).convert(s) except ImportError: markdown = None @@ -107,7 +113,13 @@ else: md.treeprocessors['restrict_links'] = RestrictLinksProcessor() - markdown = lambda s: markdown_impl(s, extensions=[SafeHtml(), 'fenced_code']) + def _extensions(config): + extensions = [SafeHtml(), 'fenced_code'] + if config['MARKDOWN_BREAK_ON_NEWLINE']: + extensions.append('nl2br') + return extensions + + markdown = lambda s, c: markdown_impl(s, extensions=_extensions(c)) except ImportError: markdown = None @@ -117,7 +129,14 @@ try: import mistune mistune._scheme_blacklist = [ s + ':' for s in _disable_url_schemes ] - markdown = mistune.markdown + + def _options(config): + options = {} + if config['MARKDOWN_BREAK_ON_NEWLINE']: + options['hard_wrap'] = True + return options + + markdown = lambda s, c: mistune.markdown(s, **_options(c)) except ImportError: markdown = None @@ -1731,7 +1750,7 @@ if hyperlink: s = self.hyper_re.sub(self._hyper_repl_markdown, s) try: - s = u2s(markdown(s2u(s))) + s = u2s(markdown(s2u(s), self._db.config)) except Exception: # when markdown formatting fails return markup return self.plain(escape=0, hyperlink=hyperlink) return s
