Mercurial > piecrust2
annotate piecrust/formatting/markdownformatter.py @ 931:0e88640a994d
admin: Remove site switcher UI.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Wed, 04 Oct 2017 09:09:56 -0700 |
| parents | 370e74941d32 |
| children | 8adc27285d93 |
| rev | line source |
|---|---|
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 from piecrust.formatting.base import Formatter |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 class MarkdownFormatter(Formatter): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 FORMAT_NAMES = ['markdown', 'mdown', 'md'] |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 OUTPUT_FORMAT = 'html' |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
8 def __init__(self): |
|
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
9 super(MarkdownFormatter, self).__init__() |
|
410
d1a472464e57
markdown: Cache the formatter once.
Ludovic Chabant <ludovic@chabant.com>
parents:
202
diff
changeset
|
10 self._formatter = None |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
11 |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 def render(self, format_name, txt): |
|
76
fdb08d986384
Add SmartyPants formatting.
Ludovic Chabant <ludovic@chabant.com>
parents:
58
diff
changeset
|
13 assert format_name in self.FORMAT_NAMES |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
14 self._ensureInitialized() |
|
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
410
diff
changeset
|
15 return self._formatter.reset().convert(txt) |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
16 |
|
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
17 def _ensureInitialized(self): |
|
410
d1a472464e57
markdown: Cache the formatter once.
Ludovic Chabant <ludovic@chabant.com>
parents:
202
diff
changeset
|
18 if self._formatter is not None: |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
19 return |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 |
|
58
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
21 config = self.app.config.get('markdown') |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
22 if config is None: |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
23 config = {} |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
24 elif not isinstance(config, dict): |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
25 raise Exception("The `markdown` configuration setting must be " |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
26 "a dictionary.") |
|
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
27 |
|
508
79f03b5c1b8f
formatting: Add support for Markdown extension configs.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
28 extensions = config.get('extensions', []) |
|
202
cd049786c008
markdown: Let the user specify extensions in one line.
Ludovic Chabant <ludovic@chabant.com>
parents:
76
diff
changeset
|
29 if isinstance(extensions, str): |
|
cd049786c008
markdown: Let the user specify extensions in one line.
Ludovic Chabant <ludovic@chabant.com>
parents:
76
diff
changeset
|
30 extensions = [e.strip() for e in extensions.split(',')] |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
31 # Compatibility with PieCrust 1.x |
|
58
95590732e4c9
More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents:
20
diff
changeset
|
32 if config.get('use_markdown_extra'): |
|
20
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
33 extensions.append('extra') |
|
c95c90c82263
Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
34 |
|
508
79f03b5c1b8f
formatting: Add support for Markdown extension configs.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
35 extension_configs = config.get('extension_configs', {}) |
|
410
d1a472464e57
markdown: Cache the formatter once.
Ludovic Chabant <ludovic@chabant.com>
parents:
202
diff
changeset
|
36 |
|
850
370e74941d32
optimize: Only load some 3rd party packages when needed.
Ludovic Chabant <ludovic@chabant.com>
parents:
508
diff
changeset
|
37 from markdown import Markdown |
|
508
79f03b5c1b8f
formatting: Add support for Markdown extension configs.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
38 self._formatter = Markdown(extensions=extensions, |
|
79f03b5c1b8f
formatting: Add support for Markdown extension configs.
Ludovic Chabant <ludovic@chabant.com>
parents:
411
diff
changeset
|
39 extension_configs=extension_configs) |
