diff --git a/src/book/init.rs b/src/book/init.rs index 264c113d..a54c08eb 100644 --- a/src/book/init.rs +++ b/src/book/init.rs @@ -156,7 +156,13 @@ impl BookBuilder { let mut highlight_js = File::create(themedir.join("highlight.js"))?; highlight_js.write_all(theme::HIGHLIGHT_JS)?; + + let mut iframe = File::create(themedir.join("iframe.html"))?; + iframe.write_all(theme::IFRAME)?; + let mut wasm_entry_js = File::create(themedir.join("wasm-entry.mjs"))?; + wasm_entry_js.write_all(theme::WASM_ENTRY_MJS)?; + Ok(()) } diff --git a/src/renderer/html_handlebars/hbs_renderer.rs b/src/renderer/html_handlebars/hbs_renderer.rs index f417a014..399bad0d 100644 --- a/src/renderer/html_handlebars/hbs_renderer.rs +++ b/src/renderer/html_handlebars/hbs_renderer.rs @@ -197,6 +197,8 @@ impl HtmlHandlebars { write_file(destination, "CNAME", format!("{}\n", cname).as_bytes())?; } + write_file(destination, "iframe.html", &theme.iframe_html)?; + write_file(destination, "wasm-entry.mjs", &theme.wasm_entry_mjs)?; write_file(destination, "book.js", &theme.js)?; write_file(destination, "css/general.css", &theme.general_css)?; write_file(destination, "css/chrome.css", &theme.chrome_css)?; diff --git a/src/theme/mod.rs b/src/theme/mod.rs index a1ee18af..ef29cc48 100644 --- a/src/theme/mod.rs +++ b/src/theme/mod.rs @@ -13,6 +13,8 @@ use std::path::Path; use crate::errors::*; +pub static IFRAME: &[u8] = include_bytes!("iframe.html"); +pub static WASM_ENTRY_MJS: &[u8] = include_bytes!("wasm-entry.mjs"); pub static INDEX: &[u8] = include_bytes!("index.hbs"); pub static HEAD: &[u8] = include_bytes!("head.hbs"); pub static REDIRECT: &[u8] = include_bytes!("redirect.hbs"); @@ -62,6 +64,8 @@ pub struct Theme { pub ayu_highlight_css: Vec, pub highlight_js: Vec, pub clipboard_js: Vec, + pub iframe_html: Vec, + pub wasm_entry_mjs: Vec, } impl Theme { @@ -79,6 +83,8 @@ impl Theme { // Check for individual files, if they exist copy them across { let files = vec![ + (theme_dir.join("iframe.html"), &mut theme.iframe_html), + (theme_dir.join("wasm-entry.mjs"), &mut theme.wasm_entry_mjs), (theme_dir.join("index.hbs"), &mut theme.index), (theme_dir.join("head.hbs"), &mut theme.head), (theme_dir.join("redirect.hbs"), &mut theme.redirect), @@ -161,6 +167,8 @@ impl Default for Theme { ayu_highlight_css: AYU_HIGHLIGHT_CSS.to_owned(), highlight_js: HIGHLIGHT_JS.to_owned(), clipboard_js: CLIPBOARD_JS.to_owned(), + iframe_html: IFRAME.to_owned(), + wasm_entry_mjs: WASM_ENTRY_MJS.to_owned(), } } } @@ -248,6 +256,8 @@ mod tests { ayu_highlight_css: Vec::new(), highlight_js: Vec::new(), clipboard_js: Vec::new(), + iframe_html: Vec::new(), + wasm_entry_mjs: Vec::new(), }; assert_eq!(got, empty);