File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2222
2323
2424def create_markdown (
25- escape : bool = True ,
25+ escape : Optional [ bool ] = None ,
2626 hard_wrap : bool = False ,
2727 renderer : Optional [RendererRef ] = "html" ,
2828 plugins : Optional [Iterable [PluginRef ]] = None ,
2929) -> Markdown :
3030 """Create a Markdown instance based on the given condition.
3131
32- :param escape: Boolean. If using html renderer, escape html.
32+ :param escape: Boolean. If using html renderer, escape html. When it is
33+ ``None``, the renderer keeps its own escape setting.
3334 :param hard_wrap: Boolean. Break every new line into ``<br>``.
3435 :param renderer: renderer instance, default is HTMLRenderer.
3536 :param plugins: List of plugins.
@@ -47,7 +48,10 @@ def create_markdown(
4748 # explicit and more similar to 2.x's API
4849 renderer = None
4950 elif renderer == "html" :
50- renderer = HTMLRenderer (escape = escape )
51+ renderer = HTMLRenderer (escape = True if escape is None else escape )
52+ elif escape is not None and isinstance (renderer , HTMLRenderer ):
53+ # a renderer instance was given, honor the explicit escape flag
54+ renderer ._escape = escape
5155
5256 inline = InlineParser (hard_wrap = hard_wrap )
5357 real_plugins : Optional [Iterable [Plugin ]] = None
Original file line number Diff line number Diff line change @@ -17,6 +17,20 @@ def _add_name(md, state):
1717 md .parse ("" , state )
1818 self .assertEqual (state .env ["name" ], "test" )
1919
20+ def test_escape_applies_to_custom_renderer (self ):
21+ class CustomRenderer (mistune .HTMLRenderer ):
22+ pass
23+
24+ md = mistune .create_markdown (renderer = CustomRenderer (), escape = False )
25+ self .assertEqual (md ("<b>hi</b>" ).strip (), "<p><b>hi</b></p>" )
26+
27+ md = mistune .create_markdown (renderer = CustomRenderer (escape = False ), escape = True )
28+ self .assertEqual (md ("<b>hi</b>" ).strip (), "<p><b>hi</b></p>" )
29+
30+ # without an explicit escape flag the renderer keeps its own setting
31+ md = mistune .create_markdown (renderer = CustomRenderer (escape = False ))
32+ self .assertEqual (md ("<b>hi</b>" ).strip (), "<p><b>hi</b></p>" )
33+
2034 def test_hard_wrap (self ):
2135 md = mistune .create_markdown (escape = False , hard_wrap = True )
2236 result = md ("foo\n bar" )
You can’t perform that action at this time.
0 commit comments