diff --git a/src/assets/init.js b/src/assets/init.js index b48385c..5b1575a 100644 --- a/src/assets/init.js +++ b/src/assets/init.js @@ -35,7 +35,7 @@ var createIframe = function() { } var load_virtual_page = (function (path, get_params, anchor) { - const data = window.global_context.file_tree[path]; + const data = window.global_context.file_tree[path].data; var iframe = createIframe(); window.global_context.get_parameters = get_params; iframe.contentDocument.write(data); diff --git a/src/assets/inject.js b/src/assets/inject.js index 07a2e5a..8cb2b34 100644 --- a/src/assets/inject.js +++ b/src/assets/inject.js @@ -142,7 +142,7 @@ var is_virtual = function(url) { var retrieve_file = function(path) { // console.log("Retrieving file: " + path); var file_tree = window.global_context.file_tree; - var file = file_tree[path]; + var file = file_tree[path].data; return file; }; diff --git a/src/embed.py b/src/embed.py index 09d0244..8b5cafb 100644 --- a/src/embed.py +++ b/src/embed.py @@ -107,6 +107,7 @@ def prepare_file(filename, before, after): _, ext = os.path.splitext(filename) ext = ext.lower()[1:] data = open(filename, 'rb').read() + mime_type = mime_type_from_bytes(data) if ext == 'css': # assuming all CSS files have names ending in '.css' @@ -134,7 +135,12 @@ def prepare_file(filename, before, after): logger.debug('loaded file: %s [%d]' % (filename, len(data))) - return data + result = { + 'data': data, + 'mime_type': mime_type, + } + + return result def deflate(data): @@ -217,9 +223,7 @@ def embed_css_resources(css, filename): mime_type = 'text/css' content = embed_css_resources(content, filename) else: - from io import BytesIO - from sphinx.util.images import guess_mimetype_for_stream - mime_type = guess_mimetype_for_stream(BytesIO(content)) + mime_type = mime_type_from_bytes(content) if not mime_type: logger.error('Unable to determine mime type: %s' % path) mime_type = 'application/octet-stream' @@ -237,6 +241,13 @@ def embed_css_resources(css, filename): return css +def mime_type_from_bytes(buffer): + from io import BytesIO + from sphinx.util.images import guess_mimetype_for_stream + mime_type = guess_mimetype_for_stream(BytesIO(buffer)) + return mime_type + + def load_filetree(base_dir, before=None, after=None, exclude_pattern=None): """Load entire directory in a dict"""