annotate piecrust/formatting/markdownformatter.py @ 74:8f988aa54433 2.0.0-alpha1

Fix package name case.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 30 Aug 2014 10:00:45 -0700
parents 95590732e4c9
children fdb08d986384
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 from markdown import markdown
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from piecrust.formatting.base import Formatter
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
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 class MarkdownFormatter(Formatter):
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 FORMAT_NAMES = ['markdown', 'mdown', 'md']
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 OUTPUT_FORMAT = 'html'
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8
20
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
9 def __init__(self):
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
10 super(MarkdownFormatter, self).__init__()
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
11 self._extensions = None
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
12
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 def render(self, format_name, txt):
20
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
14 self._ensureInitialized()
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
15 return markdown(txt, extensions=self._extensions)
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):
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
18 if self._extensions is not None:
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
95590732e4c9 More robust Markdown configuration handling.
Ludovic Chabant <ludovic@chabant.com>
parents: 20
diff changeset
28 extensions = config.get('extensions')
20
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
29 if extensions is None:
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
30 extensions = []
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 self._extensions = extensions
c95c90c82263 Add support for Markdown extensions.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
35