mirror of
https://github.com/tcsenpai/Zundler.git
synced 2025-06-07 03:55:26 +00:00
Fix up comments
This commit is contained in:
parent
6d059e3d6b
commit
b78d3728eb
29
src/embed.py
29
src/embed.py
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user