From d1abd33d5e0e6c713b8a94fd71dd11a4d9d0f9a0 Mon Sep 17 00:00:00 2001 From: Nik <57092040+nik-k999@users.noreply.github.com> Date: Tue, 20 Feb 2024 21:06:36 +0100 Subject: [PATCH 1/3] Add trait implementation for some common wrappers - Vec - [T] - Option --- maud/src/lib.rs | 26 +++++++++++++++++++++++++- maud/tests/misc.rs | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/maud/src/lib.rs b/maud/src/lib.rs index 9aa28b77..94918ac7 100644 --- a/maud/src/lib.rs +++ b/maud/src/lib.rs @@ -11,7 +11,7 @@ extern crate alloc; -use alloc::{borrow::Cow, boxed::Box, string::String, sync::Arc}; +use alloc::{borrow::Cow, boxed::Box, string::String, sync::Arc, vec::Vec}; use core::fmt::{self, Arguments, Display, Write}; pub use maud_macros::html; @@ -156,6 +156,30 @@ impl Render for Arc { } } +impl Render for Vec { + fn render_to(&self, w: &mut String) { + for item in self { + item.render_to(w); + } + } +} + +impl Render for [T] { + fn render_to(&self, w: &mut String) { + for item in self { + item.render_to(w); + } + } +} + +impl Render for Option { + fn render_to(&self, w: &mut String) { + if let Some(ref value) = *self { + value.render_to(w); + } + } +} + macro_rules! impl_render_with_display { ($($ty:ty)*) => { $( diff --git a/maud/tests/misc.rs b/maud/tests/misc.rs index 1a775725..14e6fc01 100644 --- a/maud/tests/misc.rs +++ b/maud/tests/misc.rs @@ -1,4 +1,4 @@ -use maud::{self, html}; +use maud::{self, html, Render}; #[test] fn issue_13() { @@ -143,3 +143,35 @@ fn render_arc() { let arc = std::sync::Arc::new("foo"); assert_eq!(html! { (arc) }.into_string(), "foo"); } + +#[test] +fn render_vec_generics() { + let vec = vec![1, 2, 3]; + assert_eq!(vec.render().into_string(), "123"); + let vec = vec!["a", "b", "c"]; + assert_eq!(vec.render().into_string(), "abc"); + let vec = vec![String::from("a"), String::from("b"), String::from("c")]; + assert_eq!(vec.render().into_string(), "abc"); +} + +#[test] +fn render_slice_generics() { + let slice = &[1, 2, 3]; + assert_eq!(slice.render().into_string(), "123"); + let slice = &["a", "b", "c"]; + assert_eq!(slice.render().into_string(), "abc"); + let slice = &[String::from("a"), String::from("b"), String::from("c")]; + assert_eq!(slice.render().into_string(), "abc"); +} + +#[test] +fn render_option_generics() { + let option = Some(42); + assert_eq!(option.render().into_string(), "42"); + let option = Some("foo"); + assert_eq!(option.render().into_string(), "foo"); + let option = Some(String::from("bar")); + assert_eq!(option.render().into_string(), "bar"); + let option: Option = None; + assert_eq!(option.render().into_string(), ""); +} From 5edaa8a57f72e121002510c4ad7b26107cd89a86 Mon Sep 17 00:00:00 2001 From: Nik <57092040+nik-k999@users.noreply.github.com> Date: Thu, 21 Mar 2024 19:29:00 +0100 Subject: [PATCH 2/3] Mergo upstream --- Cargo.toml | 7 +++++++ docs/src/bin/build_nav.rs | 2 +- docs/src/bin/build_page.rs | 1 - maud/Cargo.toml | 11 ++++++----- maud_macros/Cargo.toml | 13 +++++++------ maud_macros/src/escape.rs | 7 ------- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a9a374b1..956f33f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,10 @@ exclude = [ "doctest", ] resolver = "2" + +[workspace.package] +authors = ["Chris Wong "] +license = "MIT OR Apache-2.0" +homepage = "https://maud.lambda.xyz/" +repository = "https://github.com/lambda-fairy/maud" +edition = "2021" diff --git a/docs/src/bin/build_nav.rs b/docs/src/bin/build_nav.rs index 11e92a01..e53db11c 100644 --- a/docs/src/bin/build_nav.rs +++ b/docs/src/bin/build_nav.rs @@ -1,4 +1,4 @@ -use comrak::{self, nodes::AstNode, Arena}; +use comrak::{nodes::AstNode, Arena}; use docs::{ page::{Page, COMRAK_OPTIONS}, string_writer::StringWriter, diff --git a/docs/src/bin/build_page.rs b/docs/src/bin/build_page.rs index 9f56626d..bbd73fe0 100644 --- a/docs/src/bin/build_page.rs +++ b/docs/src/bin/build_page.rs @@ -1,5 +1,4 @@ use comrak::{ - self, nodes::{AstNode, NodeCodeBlock, NodeHeading, NodeHtmlBlock, NodeLink, NodeValue}, Arena, }; diff --git a/maud/Cargo.toml b/maud/Cargo.toml index 706853db..fe9894f9 100644 --- a/maud/Cargo.toml +++ b/maud/Cargo.toml @@ -2,14 +2,15 @@ name = "maud" # When releasing a new version, please update html_root_url in src/lib.rs version = "0.26.0" -authors = ["Chris Wong "] -license = "MIT/Apache-2.0" documentation = "https://docs.rs/maud/" -homepage = "https://maud.lambda.xyz/" -repository = "https://github.com/lambda-fairy/maud" description = "Compile-time HTML templates." categories = ["template-engine"] -edition = "2021" + +authors.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +edition.workspace = true [features] default = [] diff --git a/maud_macros/Cargo.toml b/maud_macros/Cargo.toml index 0a342f76..1a938be0 100644 --- a/maud_macros/Cargo.toml +++ b/maud_macros/Cargo.toml @@ -2,13 +2,14 @@ name = "maud_macros" # When releasing a new version, please update html_root_url in src/lib.rs version = "0.26.0" -authors = ["Chris Wong "] -license = "MIT/Apache-2.0" documentation = "https://docs.rs/maud_macros/" -homepage = "https://maud.lambda.xyz/" -repository = "https://github.com/lambda-fairy/maud" -description = "Compile-time HTML templates." -edition = "2021" +description = "Internal crate. Please use 'maud' instead." + +authors.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +edition.workspace = true [dependencies] syn = "2" diff --git a/maud_macros/src/escape.rs b/maud_macros/src/escape.rs index 49ece776..786d8c77 100644 --- a/maud_macros/src/escape.rs +++ b/maud_macros/src/escape.rs @@ -2,10 +2,6 @@ // !!!!!!!! PLEASE KEEP THIS IN SYNC WITH `maud/src/escape.rs` !!!!!!!!! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -extern crate alloc; - -use alloc::string::String; - pub fn escape_to_string(input: &str, output: &mut String) { for b in input.bytes() { match b { @@ -20,10 +16,7 @@ pub fn escape_to_string(input: &str, output: &mut String) { #[cfg(test)] mod test { - extern crate alloc; - use super::escape_to_string; - use alloc::string::String; #[test] fn it_works() { From f60b8190dff98114f5cc5e144476efa376c42975 Mon Sep 17 00:00:00 2001 From: Nik <57092040+nik-k999@users.noreply.github.com> Date: Thu, 21 Mar 2024 19:35:20 +0100 Subject: [PATCH 3/3] remove maud::self in test/misc.rs --- maud/tests/misc.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maud/tests/misc.rs b/maud/tests/misc.rs index 14e6fc01..0df15be7 100644 --- a/maud/tests/misc.rs +++ b/maud/tests/misc.rs @@ -1,4 +1,4 @@ -use maud::{self, html, Render}; +use maud::{html, Render}; #[test] fn issue_13() {