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

1""" 

2 mistune 

3 ~~~~~~~ 

4 

5 A fast yet powerful Python Markdown parser with renderers and 

6 plugins, compatible with sane CommonMark rules. 

7 

8 Documentation: https://mistune.lepture.com/ 

9""" 

10 

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 

18 

19 

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. 

22 

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. 

27 

28 This method is used when you want to re-use a Markdown instance:: 

29 

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) 

42 

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) 

47 

48 

49html: Markdown = create_markdown( 

50 escape=False, 

51 plugins=['strikethrough', 'footnotes', 'table', 'speedup'] 

52) 

53 

54 

55__cached_parsers = {} 

56 

57 

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) 

65 

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) 

70 

71 

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] 

79 

80__version__ = '3.0.1' 

81__homepage__ = 'https://mistune.lepture.com/'