comparison env/lib/python3.7/site-packages/mistune-0.8.4.dist-info/METADATA @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 Metadata-Version: 2.0
2 Name: mistune
3 Version: 0.8.4
4 Summary: The fastest markdown parser in pure Python
5 Home-page: https://github.com/lepture/mistune
6 Author: Hsiaoming Yang
7 Author-email: me@lepture.com
8 License: BSD
9 Platform: any
10 Classifier: Development Status :: 4 - Beta
11 Classifier: Environment :: Web Environment
12 Classifier: Intended Audience :: Developers
13 Classifier: License :: OSI Approved :: BSD License
14 Classifier: Operating System :: OS Independent
15 Classifier: Programming Language :: Python
16 Classifier: Programming Language :: Python :: 2
17 Classifier: Programming Language :: Python :: 2.7
18 Classifier: Programming Language :: Python :: 3
19 Classifier: Programming Language :: Python :: 3.5
20 Classifier: Programming Language :: Python :: 3.6
21 Classifier: Programming Language :: Python :: 3.7
22 Classifier: Programming Language :: Python :: Implementation :: CPython
23 Classifier: Programming Language :: Python :: Implementation :: PyPy
24 Classifier: Topic :: Text Processing :: Markup
25 Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
27 Mistune
28 =======
29
30 The fastest markdown parser in pure Python with renderer features,
31 inspired by marked_.
32
33 .. image:: https://img.shields.io/badge/donate-lepture-green.svg
34 :target: https://lepture.com/donate
35 :alt: Donate lepture
36 .. image:: https://img.shields.io/pypi/wheel/mistune.svg?style=flat
37 :target: https://pypi.python.org/pypi/mistune/
38 :alt: Wheel Status
39 .. image:: https://anaconda.org/conda-forge/mistune/badges/version.svg
40 :target: https://anaconda.org/conda-forge/mistune
41 :alt: Conda Version
42 .. image:: https://img.shields.io/pypi/v/mistune.svg
43 :target: https://pypi.python.org/pypi/mistune/
44 :alt: Latest Version
45 .. image:: https://travis-ci.org/lepture/mistune.svg?branch=master
46 :target: https://travis-ci.org/lepture/mistune
47 :alt: Travis CI Status
48 .. image:: https://coveralls.io/repos/lepture/mistune/badge.svg?branch=master
49 :target: https://coveralls.io/r/lepture/mistune
50 :alt: Coverage Status
51 .. image:: https://ci.appveyor.com/api/projects/status/8ai8tfwp75oela17?svg=true
52 :target: https://ci.appveyor.com/project/lepture/mistune
53 :alt: App Veyor CI Status
54
55 .. _marked: https://github.com/chjj/marked
56
57
58 Features
59 --------
60
61 * **Pure Python**. Tested in Python 2.7, Python 3.5+ and PyPy.
62 * **Very Fast**. It is the fastest in all **pure Python** markdown parsers.
63 * **More Features**. Table, footnotes, autolink, fenced code etc.
64
65 View the `benchmark results <https://github.com/lepture/mistune/issues/1>`_.
66
67 Installation
68 ------------
69
70 Installing mistune with pip::
71
72 $ pip install mistune
73
74
75 Mistune can be faster, if you compile with cython::
76
77 $ pip install cython mistune
78
79
80 Basic Usage
81 -----------
82
83 A simple API that render a markdown formatted text:
84
85 .. code:: python
86
87 import mistune
88
89 mistune.markdown('I am using **mistune markdown parser**')
90 # output: <p>I am using <strong>mistune markdown parser</strong></p>
91
92 If you care about performance, it is better to re-use the Markdown instance:
93
94 .. code:: python
95
96 import mistune
97
98 markdown = mistune.Markdown()
99 markdown('I am using **mistune markdown parser**')
100
101 Mistune has enabled all features by default. You don't have to configure
102 anything. But there are options for you to change the parser behaviors.
103
104
105 Options
106 -------
107
108 Here is a list of all options that will affect the rendering results,
109 configure them with ``mistune.Renderer``:
110
111 .. code:: python
112
113 renderer = mistune.Renderer(escape=True, hard_wrap=True)
114 # use this renderer instance
115 markdown = mistune.Markdown(renderer=renderer)
116 markdown(text)
117
118 * **escape**: if set to *False*, all raw html tags will not be escaped.
119 * **hard_wrap**: if set to *True*, it will has GFM line breaks feature.
120 All new lines will be replaced with ``<br>`` tag
121 * **use_xhtml**: if set to *True*, all tags will be in xhtml, for example: ``<hr />``.
122 * **parse_block_html**: parse text only in block level html.
123 * **parse_inline_html**: parse text only in inline level html.
124
125 When using the default renderer, you can use one of the following shortcuts::
126
127 mistune.markdown(text, escape=True, hard_wrap=True)
128
129 markdown = mistune.Markdown(escape=True, hard_wrap=True)
130 markdown(text)
131
132
133 Renderer
134 --------
135
136 Like misaka/sundown, you can influence the rendering by custom renderers.
137 All you need to do is subclassing a `Renderer` class.
138
139 Here is an example of code highlighting:
140
141 .. code:: python
142
143 import mistune
144 from pygments import highlight
145 from pygments.lexers import get_lexer_by_name
146 from pygments.formatters import html
147
148 class HighlightRenderer(mistune.Renderer):
149 def block_code(self, code, lang):
150 if not lang:
151 return '\n<pre><code>%s</code></pre>\n' % \
152 mistune.escape(code)
153 lexer = get_lexer_by_name(lang, stripall=True)
154 formatter = html.HtmlFormatter()
155 return highlight(code, lexer, formatter)
156
157 renderer = HighlightRenderer()
158 markdown = mistune.Markdown(renderer=renderer)
159 print(markdown('```python\nassert 1 == 1\n```'))
160
161 Find more renderers in `mistune-contrib`_.
162
163 Block Level
164 ~~~~~~~~~~~
165
166 Here is a list of block level renderer API::
167
168 block_code(code, language=None)
169 block_quote(text)
170 block_html(html)
171 header(text, level, raw=None)
172 hrule()
173 list(body, ordered=True)
174 list_item(text)
175 paragraph(text)
176 table(header, body)
177 table_row(content)
178 table_cell(content, **flags)
179
180 The *flags* tells you whether it is header with ``flags['header']``. And it
181 also tells you the align with ``flags['align']``.
182
183
184 Span Level
185 ~~~~~~~~~~
186
187 Here is a list of span level renderer API::
188
189 autolink(link, is_email=False)
190 codespan(text)
191 double_emphasis(text)
192 emphasis(text)
193 image(src, title, alt_text)
194 linebreak()
195 newline()
196 link(link, title, content)
197 strikethrough(text)
198 text(text)
199 inline_html(text)
200
201 Footnotes
202 ~~~~~~~~~
203
204 Here is a list of renderers related to footnotes::
205
206 footnote_ref(key, index)
207 footnote_item(key, text)
208 footnotes(text)
209
210 Lexers
211 ------
212
213 Sometimes you want to add your own rules to Markdown, such as GitHub Wiki
214 links. You can't achieve this goal with renderers. You will need to deal
215 with the lexers, it would be a little difficult for the first time.
216
217 We will take an example for GitHub Wiki links: ``[[Page 2|Page 2]]``.
218 It is an inline grammar, which requires custom ``InlineGrammar`` and
219 ``InlineLexer``:
220
221 .. code:: python
222
223 import copy,re
224 from mistune import Renderer, InlineGrammar, InlineLexer
225
226 class WikiLinkRenderer(Renderer):
227 def wiki_link(self, alt, link):
228 return '<a href="%s">%s</a>' % (link, alt)
229
230 class WikiLinkInlineLexer(InlineLexer):
231 def enable_wiki_link(self):
232 # add wiki_link rules
233 self.rules.wiki_link = re.compile(
234 r'\[\[' # [[
235 r'([\s\S]+?\|[\s\S]+?)' # Page 2|Page 2
236 r'\]\](?!\])' # ]]
237 )
238
239 # Add wiki_link parser to default rules
240 # you can insert it some place you like
241 # but place matters, maybe 3 is not good
242 self.default_rules.insert(3, 'wiki_link')
243
244 def output_wiki_link(self, m):
245 text = m.group(1)
246 alt, link = text.split('|')
247 # you can create an custom render
248 # you can also return the html if you like
249 return self.renderer.wiki_link(alt, link)
250
251 You should pass the inline lexer to ``Markdown`` parser:
252
253 .. code:: python
254
255 renderer = WikiLinkRenderer()
256 inline = WikiLinkInlineLexer(renderer)
257 # enable the feature
258 inline.enable_wiki_link()
259 markdown = Markdown(renderer, inline=inline)
260 markdown('[[Link Text|Wiki Link]]')
261
262 It is the same with block level lexer. It would take a while to understand
263 the whole mechanism. But you won't do the trick a lot.
264
265
266 Contribution & Extensions
267 -------------------------
268
269 Mistune itself doesn't accept any extension. It will always be a simple one
270 file script.
271
272 If you want to add features, you can head over to `mistune-contrib`_.
273
274 Here are some extensions already in `mistune-contrib`_:
275
276 * Math/MathJax features
277 * Highlight Code Renderer
278 * TOC table of content features
279 * MultiMarkdown Metadata parser
280
281 Get inspired with the contrib repository.
282
283 .. _`mistune-contrib`: https://github.com/lepture/mistune-contrib
284
285