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.
This commit is contained in:
Joscha 2024-12-02 21:48:46 +01:00
parent b377ee2936
commit 6f0ae129fa
4 changed files with 20 additions and 10 deletions

View file

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

View file

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

View file

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

View file

@ -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!(
"<!DOCTYPE html><html>",
"<head><title>Hello</title></head>",