Fix up comments

This commit is contained in:
Adrian Vollmer 2022-09-26 17:49:00 +02:00
parent 6d059e3d6b
commit b78d3728eb

View File

@ -8,10 +8,9 @@ It creates an HTML file that has three script tags:
3. Some boostrap code that fixes the HTML so it loads all assets from the 3. Some boostrap code that fixes the HTML so it loads all assets from the
virtual file tree instead of the file system virtual file tree instead of the file system
TODO: Also, two scripts are injected into all HTML files in the file tree. One as
* JS dependencies like mathjax don't work the first child of <body>, one as the last. The first does some
* CSS delay noticable when using fonts monkeypatching, the last sets up all magic.
* CSS files can import other files with `@import`
Author: Adrian Vollmer Author: Adrian Vollmer
@ -92,10 +91,23 @@ def embed_assets(index_file):
return result_file return result_file
def pack_file(filename, before, after): def prepare_file(filename, before, after):
"""Prepare a file for the file tree
Referenced assets in CSS files will be embedded.
HTML files will be injected with two scripts.
`filename`: The name of the file
`before`: Javascript code that will be inserted as the first child of
`<body>` if the file is HTML.
`after`: Javascript code that will be inserted as the last child of
`<body>` if the file is HTML.
"""
_, ext = os.path.splitext(filename) _, ext = os.path.splitext(filename)
ext = ext.lower()[1:] ext = ext.lower()[1:]
data = open(filename, 'rb').read() data = open(filename, 'rb').read()
if ext == 'css': if ext == 'css':
# assuming all CSS files have names ending in '.css' # assuming all CSS files have names ending in '.css'
data = embed_css_resources(data, filename) data = embed_css_resources(data, filename)
@ -148,10 +160,15 @@ def embed_html_resources(html, base_dir, before, after):
script.string = after script.string = after
soup.find('body').append(script) soup.find('body').append(script)
# TODO embed remote resources in case we want the entire file to be
# usable in an offline environment
return str(soup) return str(soup)
def to_data_uri(filename, mime_type=None): def to_data_uri(filename, mime_type=None):
"""Create a data URI from the contents of a file"""
data = open(filename, 'br').read() data = open(filename, 'br').read()
data = base64.b64encode(data) data = base64.b64encode(data)
if not mime_type: if not mime_type:
@ -229,7 +246,7 @@ def load_filetree(base_dir, before=None, after=None, exclude_pattern=None):
continue continue
if path.is_file(): if path.is_file():
key = path.relative_to(base_dir).as_posix() key = path.relative_to(base_dir).as_posix()
result[key] = pack_file( result[key] = prepare_file(
path.as_posix(), path.as_posix(),
before, before,
after, after,