From d18f9d2171a7ece99d0288d6b6aa8d138fad387a Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 27 Nov 2024 00:14:27 +0100 Subject: [PATCH] Add Document struct --- src/element.rs | 6 ++++++ src/render.rs | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/element.rs b/src/element.rs index c9e798a..6120420 100644 --- a/src/element.rs +++ b/src/element.rs @@ -99,3 +99,9 @@ impl Element { self } } + +/// An HTML document. +/// +/// A `Document(el)` is basically the same as `[Content::doctype(), el.into()]` +/// for the purposes of the [`crate::Render`] trait. +pub struct Document(pub Element); diff --git a/src/render.rs b/src/render.rs index c1d4a0a..7acbd78 100644 --- a/src/render.rs +++ b/src/render.rs @@ -3,6 +3,7 @@ use std::{error, fmt}; use crate::{ check, element::{Content, Element, ElementKind}, + Document, }; #[derive(Debug)] @@ -81,6 +82,14 @@ pub trait Render { } } +impl Render for Document { + fn render(&self, w: &mut W) -> Result<()> { + Content::doctype().render(w)?; + self.0.render(w)?; + Ok(()) + } +} + impl Render for [Content] { fn render(&self, w: &mut W) -> Result<()> { for content in self {