diff --git a/src/cube/mod.rs b/src/cube/mod.rs index c0211fa..7c80edf 100644 --- a/src/cube/mod.rs +++ b/src/cube/mod.rs @@ -1,20 +1,26 @@ +use embed_file::embed_string as embed; use maud::{ html, Markup, }; -use crate::page; +use crate::{ + minify, + page, +}; const FACES: [&str; 6] = ["front", "top", "back", "bottom", "right", "left"]; -pub fn create(styling: &str, faces: [Markup; 6]) -> Markup { +pub fn create>(styling: S, faces: [Markup; 6]) -> Markup { page::create( html! { - link href="cube.min.css" rel="stylesheet"; + style { + (minify::css(embed!("cube.css"))) + } }, html! { style { - (styling) + (styling.as_ref()) } div class="scene" { @@ -27,7 +33,9 @@ pub fn create(styling: &str, faces: [Markup; 6]) -> Markup { } } - script src="cube.min.js" {} + script { + (minify::js(embed!("cube.js"))) + } }, ) } diff --git a/src/minify/css.rs b/src/minify/css.rs index abeac96..110716f 100644 --- a/src/minify/css.rs +++ b/src/minify/css.rs @@ -1,13 +1,13 @@ const SPECIAL_CHARS: [char; 8] = ['{', '}', ':', ';', ' ', '\n', '!', '>']; // Taken from https://github.com/amgarrett09/rust-css-minifier/blob/master/src/minify/mod.rs. -pub fn css(input: &str) -> String { +pub fn css>(input: S) -> String { let mut last_char: Vec = " ".chars().collect(); let mut output = Vec::new(); let mut inside_comment = false; - for c in input.chars() { + for c in input.as_ref().chars() { // We're in a comment if we find '/*' if !inside_comment && c == '*' && last_char[0] == '/' { inside_comment = true; diff --git a/src/minify/js.rs b/src/minify/js.rs index fc0a5c8..d0f366f 100644 --- a/src/minify/js.rs +++ b/src/minify/js.rs @@ -1,18 +1,19 @@ -use anyhow::Context; use minify_js::{ Session, TopLevelMode, }; -pub fn js(input: &str) -> String { +pub fn js>(input: S) -> String { let session = Session::new(); let mut out = Vec::new(); - minify_js::minify(&session, TopLevelMode::Module, input.as_bytes(), &mut out) - .with_context(|| format!("Failed to minify::js: {code}.")) - .unwrap(); + minify_js::minify( + &session, + TopLevelMode::Module, + input.as_ref().as_bytes(), + &mut out, + ) + .unwrap(); - String::from_utf8(out) - .with_context(|| format!("Failed to create a string from minify::js output: {out:?}.")) - .unwrap() + String::from_utf8(out).unwrap() } diff --git a/src/pages/_404/mod.rs b/src/pages/_404/mod.rs index 6f4dc45..9a1ebed 100644 --- a/src/pages/_404/mod.rs +++ b/src/pages/_404/mod.rs @@ -13,7 +13,7 @@ use crate::{ pub async fn generate() -> Markup { cube::create( - minify::css(embed!("404.css").as_ref()).as_str(), + minify::css(embed!("404.css")), array::from_fn(|_| { (html! { div class="frame" {} diff --git a/src/pages/index/mod.rs b/src/pages/index/mod.rs index 4a951ec..c63437b 100644 --- a/src/pages/index/mod.rs +++ b/src/pages/index/mod.rs @@ -11,7 +11,7 @@ use crate::{ pub async fn generate() -> Markup { cube::create( - minify::css(embed!("index.css").as_ref()).as_str(), + minify::css(embed!("index.css")), [ html! { a href="contact" {