summaryrefslogtreecommitdiffstats
path: root/nikola/plugins/task/copy_assets.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/task/copy_assets.py')
-rw-r--r--nikola/plugins/task/copy_assets.py31
1 files changed, 23 insertions, 8 deletions
diff --git a/nikola/plugins/task/copy_assets.py b/nikola/plugins/task/copy_assets.py
index 93b7fb3..4801347 100644
--- a/nikola/plugins/task/copy_assets.py
+++ b/nikola/plugins/task/copy_assets.py
@@ -45,13 +45,21 @@ class CopyAssets(Task):
kw = {
"themes": self.site.THEMES,
+ "files_folders": self.site.config['FILES_FOLDERS'],
"output_folder": self.site.config['OUTPUT_FOLDER'],
"filters": self.site.config['FILTERS'],
"code_color_scheme": self.site.config['CODE_COLOR_SCHEME'],
+ "code.css_selectors": 'pre.code',
+ "code.css_head": '/* code.css file generated by Nikola */\n',
+ "code.css_close": "\ntable.codetable { width: 100%;} td.linenos {text-align: right; width: 4em;}\n",
}
- has_code_css = False
tasks = {}
code_css_path = os.path.join(kw['output_folder'], 'assets', 'css', 'code.css')
+ code_css_input = utils.get_asset_path('assets/css/code.css',
+ themes=kw['themes'],
+ files_folders=kw['files_folders'])
+
+ kw["code.css_input"] = code_css_input
yield self.group_task()
@@ -61,28 +69,35 @@ class CopyAssets(Task):
for task in utils.copy_tree(src, dst):
if task['name'] in tasks:
continue
- if task['targets'][0] == code_css_path:
- has_code_css = True
tasks[task['name']] = task
task['uptodate'] = [utils.config_changed(kw)]
task['basename'] = self.name
+ if code_css_input:
+ task['file_dep'] = [code_css_input]
yield utils.apply_filters(task, kw['filters'])
- if not has_code_css: # Generate it
-
+ # Check whether or not there is a code.css file around.
+ if not code_css_input:
def create_code_css():
from pygments.formatters import get_formatter_by_name
formatter = get_formatter_by_name('html', style=kw["code_color_scheme"])
utils.makedirs(os.path.dirname(code_css_path))
with codecs.open(code_css_path, 'wb+', 'utf8') as outf:
- outf.write(formatter.get_style_defs(['pre.code', 'div.code pre']))
- outf.write("\ntable.codetable { width: 100%;} td.linenos {text-align: right; width: 4em;}\n")
+ outf.write(kw["code.css_head"])
+ outf.write(formatter.get_style_defs(kw["code.css_selectors"]))
+ outf.write(kw["code.css_close"])
+
+ if os.path.exists(code_css_path):
+ with codecs.open(code_css_path, 'r', 'utf-8') as fh:
+ testcontents = fh.read(len(kw["code.css_head"])) == kw["code.css_head"]
+ else:
+ testcontents = False
task = {
'basename': self.name,
'name': code_css_path,
'targets': [code_css_path],
- 'uptodate': [utils.config_changed(kw)],
+ 'uptodate': [utils.config_changed(kw), testcontents],
'actions': [(create_code_css, [])],
'clean': True,
}