Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/mistune/__init__.py: 70%
30 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-01 06:54 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-01 06:54 +0000
1"""
2 mistune
3 ~~~~~~~
5 A fast yet powerful Python Markdown parser with renderers and
6 plugins, compatible with sane CommonMark rules.
8 Documentation: https://mistune.lepture.com/
9"""
11from .markdown import Markdown
12from .core import BlockState, InlineState, BaseRenderer
13from .block_parser import BlockParser
14from .inline_parser import InlineParser
15from .renderers.html import HTMLRenderer
16from .util import escape, escape_url, safe_entity, unikey
17from .plugins import import_plugin
20def create_markdown(escape: bool=True, hard_wrap: bool=False, renderer='html', plugins=None) -> Markdown:
21 """Create a Markdown instance based on the given condition.
23 :param escape: Boolean. If using html renderer, escape html.
24 :param hard_wrap: Boolean. Break every new line into ``<br>``.
25 :param renderer: renderer instance, default is HTMLRenderer.
26 :param plugins: List of plugins.
28 This method is used when you want to re-use a Markdown instance::
30 markdown = create_markdown(
31 escape=False,
32 hard_wrap=True,
33 )
34 # re-use markdown function
35 markdown('.... your text ...')
36 """
37 if renderer == 'ast':
38 # explicit and more similar to 2.x's API
39 renderer = None
40 elif renderer == 'html':
41 renderer = HTMLRenderer(escape=escape)
43 inline = InlineParser(hard_wrap=hard_wrap)
44 if plugins is not None:
45 plugins = [import_plugin(n) for n in plugins]
46 return Markdown(renderer=renderer, inline=inline, plugins=plugins)
49html: Markdown = create_markdown(
50 escape=False,
51 plugins=['strikethrough', 'footnotes', 'table', 'speedup']
52)
55__cached_parsers = {}
58def markdown(text, escape=True, renderer='html', plugins=None) -> str:
59 if renderer == 'ast':
60 # explicit and more similar to 2.x's API
61 renderer = None
62 key = (escape, renderer, plugins)
63 if key in __cached_parsers:
64 return __cached_parsers[key](text)
66 md = create_markdown(escape=escape, renderer=renderer, plugins=plugins)
67 # improve the speed for markdown parser creation
68 __cached_parsers[key] = md
69 return md(text)
72__all__ = [
73 'Markdown', 'HTMLRenderer',
74 'BlockParser', 'BlockState', 'BaseRenderer',
75 'InlineParser', 'InlineState',
76 'escape', 'escape_url', 'safe_entity', 'unikey',
77 'html', 'create_markdown', 'markdown',
78]
80__version__ = '3.0.1'
81__homepage__ = 'https://mistune.lepture.com/'