aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/compile_markdown/__init__.py
diff options
context:
space:
mode:
authorLibravatarAgustin Henze <tin@sluc.org.ar>2013-05-30 17:41:06 -0300
committerLibravatarAgustin Henze <tin@sluc.org.ar>2013-05-30 17:41:06 -0300
commit0c4dfdec5b55b6064dccc38bbfb0a7c0699c895a (patch)
treea6707225ccc559f7edf50ddd3fdc7fc85145c921 /nikola/plugins/compile_markdown/__init__.py
parent8b14a1e5b2ca574fdd4fd2377567ec98a110d4b6 (diff)
Imported Upstream version 5.4.4
Diffstat (limited to 'nikola/plugins/compile_markdown/__init__.py')
-rw-r--r--nikola/plugins/compile_markdown/__init__.py51
1 files changed, 29 insertions, 22 deletions
diff --git a/nikola/plugins/compile_markdown/__init__.py b/nikola/plugins/compile_markdown/__init__.py
index 7aa03a9..ae700e6 100644
--- a/nikola/plugins/compile_markdown/__init__.py
+++ b/nikola/plugins/compile_markdown/__init__.py
@@ -24,14 +24,28 @@
"""Implementation of compile_html based on markdown."""
+from __future__ import unicode_literals
+
import codecs
import os
-import re
try:
from markdown import markdown
+
+ from nikola.plugins.compile_markdown.mdx_nikola import NikolaExtension
+ nikola_extension = NikolaExtension()
+
+ from nikola.plugins.compile_markdown.mdx_gist import GistExtension
+ gist_extension = GistExtension()
+
+ from nikola.plugins.compile_markdown.mdx_podcast import PodcastExtension
+ podcast_extension = PodcastExtension()
+
except ImportError:
markdown = None # NOQA
+ nikola_extension = None
+ gist_extension = None
+ podcast_extension = None
from nikola.plugin_categories import PageCompiler
@@ -41,6 +55,9 @@ class CompileMarkdown(PageCompiler):
name = "markdown"
+ extensions = ['fenced_code', 'codehilite', gist_extension,
+ nikola_extension, podcast_extension]
+
def compile_html(self, source, dest):
if markdown is None:
raise Exception('To build this site, you need to install the '
@@ -52,30 +69,20 @@ class CompileMarkdown(PageCompiler):
with codecs.open(dest, "w+", "utf8") as out_file:
with codecs.open(source, "r", "utf8") as in_file:
data = in_file.read()
- output = markdown(data, ['fenced_code', 'codehilite'])
- # h1 is reserved for the title so increment all header levels
- for n in reversed(range(1, 9)):
- output = re.sub('<h{0}>'.format(n), '<h{0}>'.format(n + 1),
- output)
- output = re.sub('</h{0}>'.format(n), '</h{0}>'.format(n + 1),
- output)
- # python-markdown's highlighter uses the class 'codehilite' to wrap
- # code, # instead of the standard 'code'. None of the standard
- # pygments stylesheets use this class, so swap it to be 'code'
- output = re.sub(r'(<div[^>]+class="[^"]*)codehilite([^>]+)',
- r'\1code\2', output)
+ output = markdown(data, self.extensions)
out_file.write(output)
- def create_post(self, path, onefile=False, title="", slug="", date="",
- tags=""):
+ def create_post(self, path, onefile=False, **kw):
+ metadata = {}
+ metadata.update(self.default_metadata)
+ metadata.update(kw)
+ d_name = os.path.dirname(path)
+ if not os.path.isdir(d_name):
+ os.makedirs(os.path.dirname(path))
with codecs.open(path, "wb+", "utf8") as fd:
if onefile:
fd.write('<!-- \n')
- fd.write('.. title: {0}\n'.format(title))
- fd.write('.. slug: {0}\n'.format(slug))
- fd.write('.. date: {0}\n'.format(date))
- fd.write('.. tags: {0}\n'.format(tags))
- fd.write('.. link: \n')
- fd.write('.. description: \n')
+ for k, v in metadata.items():
+ fd.write('.. {0}: {1}\n'.format(k, v))
fd.write('-->\n\n')
- fd.write("\nWrite your post here.")
+ fd.write("Write your post here.")