From 97a2c2a8220f9ebfd599408103d31e05f556308f Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 7 Mar 2020 17:06:33 +0000 Subject: [PATCH] Modernise revealjs build.py (still not good) --- revealjs/build.py | 92 ++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/revealjs/build.py b/revealjs/build.py index 6d89ea0..96c79ec 100755 --- a/revealjs/build.py +++ b/revealjs/build.py @@ -9,75 +9,85 @@ from commonmark import commonmark # "template macros" template_replace = [ - ('', ''), + ("", '"), ] -try: - directory = os.path.dirname(sys.argv[1]) - print(f'Processing {directory}…') -except IndexError: - print(f'USAGE: {sys.argv[0]} path/to/index.html', file=sys.stderr) - sys.exit(1) +directory = os.path.dirname(sys.argv[1]) -template_env = Environment(loader=FileSystemLoader(os.path.join(directory, '../_templates'))) +template_env = Environment( + loader=FileSystemLoader(os.path.join(directory, "../_templates")) +) -if not os.path.isfile(os.path.join(directory, 'index.md')): - print(f'{directory} is not valid: missing index.md') - sys.exit(1) +if not os.path.isfile(os.path.join(directory, "index.md")): + raise Exception("{directory} is missing index.md") -files = ['index.md'] -files.extend(sorted(filter(lambda x: os.path.isfile(os.path.join(directory, x)) and re.match('.*\.md$', x) and x != 'index.md', os.listdir(directory)))) +files = ["index.md"] +files.extend( + sorted( + [ + file + for file in os.listdir(directory) + if os.path.isfile(os.path.join(directory, file)) + and re.match(".*\.md$", file) + and file != "index.md" + ] + ) +) config = { - 'theme': '../_assets/reveal.js/css/theme/black.css', - 'mathjax': False, - 'controls': True, - 'progress': True, - 'history': True, - 'center': True, - 'show_notes': False, # on print - 'width': 1280, - 'height': 800, - 'transition': 'none', # none, fade, slide, convex, concave, zoom - 'background_transition': 'none' + "theme": "../_assets/reveal.js/css/theme/black.css", + "mathjax": False, + "controls": True, + "progress": True, + "history": True, + "center": True, + "show_notes": False, # on print + "width": 1280, + "height": 800, + "transition": "none", # none, fade, slide, convex, concave, zoom + "background_transition": "none", } content = "" for idx, file in enumerate(files): - with open(os.path.join(directory, file), 'r') as f: - parts = f.read().split('---\n') + with open(os.path.join(directory, file), "r") as f: + parts = f.read().split("---\n") if idx == 0: config = {**config, **yaml.safe_load(parts[0])} parts = parts[1:] - section_content = '
' + section_content = "
" for slide in parts: for r in template_replace: slide = slide.replace(r[0], r[1]) # parse config - slide_config = slide.split('\n')[0] - slide = '\n'.join(slide.split('\n')[1:]) - if slide_config != '': + slide_config = slide.split("\n")[0] + slide = "\n".join(slide.split("\n")[1:]) + if slide_config != "": slide_config = re.split(' (?=(?:[^"]|"[^"]*")*$)', slide_config) - slide_config = list(map(lambda x: x if re.match('^style=.*', x) else f'data-{x}', slide_config)) # data- - slide_config = ' ' + ' '.join(slide_config) + slide_config = list( + map( + lambda x: x if re.match("^style=.*", x) else f"data-{x}", + slide_config, + ) + ) # data- + slide_config = " " + " ".join(slide_config) - slide_content = f'' + slide_content = f"" slide_content += commonmark(slide) - slide_content += '
' + slide_content += "
" - if slide_content != '
': + if slide_content != "
": section_content += slide_content - section_content += '' + section_content += "" - if section_content != '
': + if section_content != "
": content += section_content -with open(os.path.join(directory, 'index.html'), 'w') as f: - f.write(template_env.get_template('index.html.j2').render(config, content=content)) -print(f'done') +with open(os.path.join(directory, "index.html"), "w") as f: + f.write(template_env.get_template("index.html.j2").render(config, content=content))