aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/task_render_posts.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/task_render_posts.py')
-rw-r--r--nikola/plugins/task_render_posts.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/nikola/plugins/task_render_posts.py b/nikola/plugins/task_render_posts.py
new file mode 100644
index 0000000..44888f2
--- /dev/null
+++ b/nikola/plugins/task_render_posts.py
@@ -0,0 +1,52 @@
+from copy import copy
+import os
+
+from nikola.plugin_categories import Task
+from nikola import utils
+
+
+class RenderPosts(Task):
+ """Build HTML fragments from metadata and text."""
+
+ name = "render_posts"
+
+ def gen_tasks(self):
+ """Build HTML fragments from metadata and text."""
+ self.site.scan_posts()
+ kw = {
+ "translations": self.site.config["TRANSLATIONS"],
+ "timeline": self.site.timeline,
+ "default_lang": self.site.config["DEFAULT_LANG"],
+ }
+
+ flag = False
+ for lang in kw["translations"]:
+ # TODO: timeline is global, get rid of it
+ deps_dict = copy(kw)
+ deps_dict.pop('timeline')
+ for post in kw['timeline']:
+ source = post.source_path
+ dest = post.base_path
+ if lang != kw["default_lang"]:
+ dest += '.' + lang
+ source_lang = source + '.' + lang
+ if os.path.exists(source_lang):
+ source = source_lang
+ flag = True
+ yield {
+ 'basename': self.name,
+ 'name': dest.encode('utf-8'),
+ 'file_dep': post.fragment_deps(lang),
+ 'targets': [dest],
+ 'actions': [(self.site.get_compiler(post.source_path),
+ [source, dest])],
+ 'clean': True,
+ 'uptodate': [utils.config_changed(deps_dict)],
+ }
+ if flag is False: # Return a dummy task
+ yield {
+ 'basename': self.name,
+ 'name': 'None',
+ 'uptodate': [True],
+ 'actions': [],
+ }