From 6f0ae129fa39d151bf06491ce18dc6971f522805 Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 2 Dec 2024 21:48:46 +0100 Subject: [PATCH] Add Element::into_document It's more convenient in some cases and also makes the example code less "misleading": Now the string represents a full, correct HTML document. --- CHANGELOG.md | 1 + README.md | 1 + src/element.rs | 8 ++++++++ src/lib.rs | 20 ++++++++++---------- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f79a16..0524c43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ A dependency update to an incompatible version is considered a breaking change. ### Added +- `Element::into_document` - Eponymous JS helper function in readme ## v0.1.0 - 2024-12-02 diff --git a/README.md b/README.md index cbf765a..a5d12f4 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ let page: String = html(( p(("This is an example for a ", em("simple"), " web page.")), )), )) +.into_document() .render_to_string() .unwrap(); ``` diff --git a/src/element.rs b/src/element.rs index 6e92ea9..2515e29 100644 --- a/src/element.rs +++ b/src/element.rs @@ -239,6 +239,14 @@ impl Element { self.add(c); self } + + /// Convert this element into a [`Document`]. + /// + /// This function is equivalent to calling `self.into()` but may be more + /// convenient in some cases. + pub fn into_document(self) -> Document { + self.into() + } } /// A component can add itself to an [`Element`] by modifying it. diff --git a/src/lib.rs b/src/lib.rs index d3d1826..fd4bc9e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -49,6 +49,7 @@ //! p(("This is an example for a ", em("simple"), " web page.")), //! )), //! )) +//! .into_document() //! .render_to_string() //! .unwrap(); //! ``` @@ -80,21 +81,20 @@ pub use self::{element::*, render::*}; #[cfg(test)] mod tests { - use crate::{html::*, Attr, Content, Element, Render}; + use crate::{html::*, Attr, Element, Render}; #[test] fn simple_website() { - let els = [ - Content::doctype(), - html(( - head(title("Hello")), - body((h1("Hello"), p(("Hello ", em("world"), "!")))), - )) - .into(), - ]; + let page = html(( + head(title("Hello")), + body((h1("Hello"), p(("Hello ", em("world"), "!")))), + )) + .into_document() + .render_to_string() + .unwrap(); assert_eq!( - els.render_to_string().unwrap(), + page, concat!( "", "Hello",