aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/compile/markdown/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/compile/markdown/__init__.py')
-rw-r--r--nikola/plugins/compile/markdown/__init__.py49
1 files changed, 26 insertions, 23 deletions
diff --git a/nikola/plugins/compile/markdown/__init__.py b/nikola/plugins/compile/markdown/__init__.py
index d0fa66a..4182626 100644
--- a/nikola/plugins/compile/markdown/__init__.py
+++ b/nikola/plugins/compile/markdown/__init__.py
@@ -34,30 +34,14 @@ 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
-
-try:
- from collections import OrderedDict
-except ImportError:
- OrderedDict = dict # NOQA
-
from nikola.plugin_categories import PageCompiler
-from nikola.utils import makedirs, req_missing
+from nikola.utils import makedirs, req_missing, write_metadata
class CompileMarkdown(PageCompiler):
@@ -65,9 +49,22 @@ class CompileMarkdown(PageCompiler):
name = "markdown"
demote_headers = True
- extensions = [gist_extension, nikola_extension, podcast_extension]
+ extensions = []
site = None
+ def set_site(self, site):
+ for plugin_info in site.plugin_manager.getPluginsOfCategory("MarkdownExtension"):
+ if plugin_info.name in site.config['DISABLED_PLUGINS']:
+ site.plugin_manager.removePluginFromCategory(plugin_info, "MarkdownExtension")
+ continue
+
+ site.plugin_manager.activatePluginByName(plugin_info.name)
+ plugin_info.plugin_object.set_site(site)
+ self.extensions.append(plugin_info.plugin_object)
+ plugin_info.plugin_object.short_help = plugin_info.description
+
+ return super(CompileMarkdown, self).set_site(site)
+
def compile_html(self, source, dest, is_two_file=True):
if markdown is None:
req_missing(['markdown'], 'build this site (compile Markdown)')
@@ -81,15 +78,21 @@ class CompileMarkdown(PageCompiler):
output = markdown(data, self.extensions)
out_file.write(output)
- def create_post(self, path, onefile=False, is_page=False, **kw):
- metadata = OrderedDict()
+ def create_post(self, path, **kw):
+ content = kw.pop('content', None)
+ onefile = kw.pop('onefile', False)
+ # is_page is not used by create_post as of now.
+ kw.pop('is_page', False)
+
+ metadata = {}
metadata.update(self.default_metadata)
metadata.update(kw)
makedirs(os.path.dirname(path))
+ if not content.endswith('\n'):
+ content += '\n'
with codecs.open(path, "wb+", "utf8") as fd:
if onefile:
fd.write('<!-- \n')
- for k, v in metadata.items():
- fd.write('.. {0}: {1}\n'.format(k, v))
+ fd.write(write_metadata(metadata))
fd.write('-->\n\n')
- fd.write("Write your {0} here.".format('page' if is_page else 'post'))
+ fd.write(content)