Add mime type to file tree

This commit is contained in:
Adrian Vollmer 2022-10-04 17:17:49 +02:00
parent c723a8bc52
commit 511ec5c0bb
3 changed files with 17 additions and 6 deletions

View File

@ -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);

View File

@ -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;
};

View File

@ -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"""