Struct build_html::HtmlPage

source ·
pub struct HtmlPage { /* private fields */ }
Expand description

An entire page of HTML which can built up by chaining addition methods.

To convert an HtmlPage to a String which can be sent back to a client, use the Html::to_html_string() method

Example

let page: String = HtmlPage::new()
    .with_title("My Page")
    .with_header(1, "Header Text")
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head><title>My Page</title></head>",
    "<body><h1>Header Text</h1></body></html>"
));

Implementations§

source§

impl HtmlPage

source

pub fn new() -> Self

Creates a new HTML page with no content

source

pub fn with_version(version: HtmlVersion) -> Self

Create a new HTML page with the specified version.

Example
assert_eq!(
    HtmlPage::with_version(HtmlVersion::HTML4).to_html_string(),
    concat!(
        r#"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "#,
        r#""http://www.w3.org/TR/HTML4/loose.dtd">"#,
        "<html><head></head><body></body></html>",
    ),
)

Adds a new link element to the HTML head.

Example
let mut page = HtmlPage::new();
page.add_head_link("favicon.ico", "icon");

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="favicon.ico" rel="icon">"#,
    "</head><body></body></html>"
));

Adds a new link to the HTML head.

Example
let page = HtmlPage::new()
    .with_head_link("favicon.ico", "icon")
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="favicon.ico" rel="icon">"#,
    "</head><body></body></html>"
));

Adds a new link to the HTML head with the specified additional attributes

Example
let mut page = HtmlPage::new();
page.add_head_link_attr("print.css", "stylesheet", [("media", "print")]);

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="print.css" rel="stylesheet" media="print">"#,
    "</head><body></body></html>"
));

Adds a new link to the HTML head with the specified additional attributes

Example
let page = HtmlPage::new()
    .with_head_link_attr("print.css", "stylesheet", [("media", "print")])
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="print.css" rel="stylesheet" media="print">"#,
    "</head><body></body></html>"
));
source

pub fn add_meta<A, S>(&mut self, attributes: A)where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds the specified metadata elements to this HtmlPage

Attributes are specified in a HashMap

Example
let mut page = HtmlPage::new();
page.add_meta(vec![("charset", "utf-8")]);

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<meta charset="utf-8">"#,
    "</head><body></body></html>"
));
source

pub fn with_meta<A, S>(self, attributes: A) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds the specified metadata elements to this HtmlPage

Attributes are specified in a HashMap

Example

let page = HtmlPage::new()
    .with_meta(vec![("charset", "utf-8")])
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<meta charset="utf-8">"#,
    "</head><body></body></html>"
));

Adds the specified external script to the HtmlPage

Example
let mut page = HtmlPage::new();
page.add_script_link("myScript.js");

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<script src="myScript.js"></script>"#,
    "</head><body></body></html>"
));

Adds the specified external script to the HtmlPage

Example
let page = HtmlPage::new()
    .with_script_link("myScript.js")
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<script src="myScript.js"></script>"#,
    "</head><body></body></html>"
));

Adds a script link with additional attributes to the HtmlPage

Adds a script link with additional attributes to the HtmlPage

source

pub fn add_script_literal(&mut self, code: impl ToString)

Adds the specified script to this HtmlPage

Example
let mut page = HtmlPage::new();
page.add_script_literal(r#"window.onload = () => console.log("Hello World");"#);

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head><script>",
    r#"window.onload = () => console.log("Hello World");"#,
    "</script></head><body></body></html>"
));

In order to lint the code, it can be helpful to define your script in its own file. That file can be inserted into the html page using the include_str macro:

let mut page = HtmlPage::new();
page.add_script_literal(include_str!("myScript.js"));
source

pub fn with_script_literal(self, code: impl ToString) -> Self

Adds the specified script to this HtmlPage

Example
let page = HtmlPage::new()
    .with_script_literal(r#"window.onload = () => console.log("Hello World");"#)
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head><script>",
    r#"window.onload = () => console.log("Hello World");"#,
    "</script></head><body></body></html>"
));

In order to lint the code, it can be helpful to define your script in its own file. That file can be inserted into the html page using the include_str macro:

let page = HtmlPage::new()
    .with_script_literal(include_str!("myScript.js"))
    .to_html_string();
source

pub fn add_style(&mut self, css: impl ToString)

Adds raw style data to this HtmlPage

Example
let mut page = HtmlPage::new();
page.add_style(r#"p{font-family:"Liberation Serif";}"#);

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<style>p{font-family:"Liberation Serif";}</style>"#,
    "</head><body></body></html>"
));

To allow for linting, it can be helpful to define CSS in its own file. That file can be included at compile time using the include_str macro:

let mut page = HtmlPage::new();
page.add_style(include_str!("styles.css"));
source

pub fn with_style(self, css: impl ToString) -> Self

Adds raw style data to this HtmlPage

Example
let page = HtmlPage::new()
    .with_style(r#"p{font-family:"Liberation Serif";}"#)
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<style>p{font-family:"Liberation Serif";}</style>"#,
    "</head><body></body></html>"
));

To allow for linting, it can be helpful to define CSS in its own file. That file can be included at compile time using the include_str macro:

let page = HtmlPage::new()
    .with_style(include_str!("styles.css"))
    .to_html_string();
source

pub fn add_style_attr<A, S>(&mut self, css: impl ToString, attributes: A)where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds the specified style data with the specified attributes

source

pub fn with_style_attr<A, S>(self, css: impl ToString, attributes: A) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds the specified style data with the specified attributes

source

pub fn add_stylesheet(&mut self, source: impl ToString)

Adds the specified stylesheet to the HTML head.

This method uses add_head_link internally

Example
let mut page = HtmlPage::new();
page.add_stylesheet("print.css");

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="print.css" rel="stylesheet">"#,
    "</head><body></body></html>"
));
source

pub fn with_stylesheet(self, source: impl ToString) -> Self

Adds the specified stylesheet to the HTML head.

This method uses add_head_link internally

Example
let page = HtmlPage::new()
    .with_stylesheet("print.css")
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    r#"<link href="print.css" rel="stylesheet">"#,
    "</head><body></body></html>"
));
source

pub fn add_title(&mut self, title_text: impl ToString)

Adds a title to this HTML page

Example
let mut page = HtmlPage::new();
page.add_title("My Page");

assert_eq!(page.to_html_string(), concat!(
    "<!DOCTYPE html><html><head>",
    "<title>My Page</title>",
    "</head><body></body></html>"
));
source

pub fn with_title(self, title_text: impl ToString) -> Self

Adds a title to this HTML page

Example
let page = HtmlPage::new()
    .with_title("My Page")
    .to_html_string();

assert_eq!(page, concat!(
    "<!DOCTYPE html><html><head>",
    "<title>My Page</title>",
    "</head><body></body></html>"
));

Trait Implementations§

source§

impl Debug for HtmlPage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HtmlPage

source§

fn default() -> HtmlPage

Returns the “default value” for a type. Read more
source§

impl Html for HtmlPage

source§

fn to_html_string(&self) -> String

Convert this element into an HTML string Read more
source§

impl HtmlContainer for HtmlPage

source§

fn add_html<H: Html>(&mut self, html: H)

Adds the specified HTML element to this container Read more
source§

fn with_html<H: Html>(self, html: H) -> Self

Consumes the container, returning it with the specified HTML element added to it Read more
source§

fn add_container(&mut self, container: Container)

Add the container to this HTML Container Read more
source§

fn with_container(self, container: Container) -> Self

Nest the specified container within this container Read more
source§

fn add_table(&mut self, table: Table)

Add the specified Table to this container Read more
source§

fn with_table(self, table: Table) -> Self

Nest the specified Table within this container Read more
source§

fn add_header(&mut self, level: u8, text: impl ToString)

Adds a header tag with the designated level to this container Read more
source§

fn with_header(self, level: u8, text: impl ToString) -> Self

Adds a header tag with the designated level to this container Read more
source§

fn add_header_attr<A, S>(&mut self, level: u8, text: impl ToString, attr: A)where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a header tag with the designated level and attributes to this container. Read more
source§

fn with_header_attr<A, S>(self, level: u8, text: impl ToString, attr: A) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a header tag with the designated level and attributes to this container. Read more
source§

fn add_image(&mut self, src: impl ToString, alt: impl ToString)

Adds an <img> tag to this container Read more
source§

fn with_image(self, src: impl ToString, alt: impl ToString) -> Self

Adds an <img> tag to this container Read more
source§

fn add_image_attr<A, S>( &mut self, src: impl ToString, alt: impl ToString, attr: A )where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds an <img> tag with the specified attributes to this container Read more
source§

fn with_image_attr<A, S>( self, src: impl ToString, alt: impl ToString, attr: A ) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds an <img> tag with the specified attributes to this container Read more
Adds an <a> tag to this container Read more
Adds an <a> tag to this container Read more
Adds an <a> tag with the specified attributes to this container Read more
Adds an <a> tag with the specified attributes to this container Read more
source§

fn add_paragraph(&mut self, text: impl ToString)

Adds a <p> tag element to this Container Read more
source§

fn with_paragraph(self, text: impl ToString) -> Self

Adds a <p> tag element to this Container Read more
source§

fn add_paragraph_attr<A, S>(&mut self, text: impl ToString, attr: A)where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a <p> tag element with the specified attributes to this Container Read more
source§

fn with_paragraph_attr<A, S>(self, text: impl ToString, attr: A) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a <p> tag element with the specified attributes to this Container Read more
source§

fn add_preformatted(&mut self, text: impl ToString)

Adds a <pre> tag element to this container Read more
source§

fn with_preformatted(self, text: impl ToString) -> Self

Adds a <pre> tag element to this container Read more
source§

fn add_preformatted_attr<A, S>(&mut self, text: impl ToString, attr: A)where A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a <pre> tag element with the specified attributes to this container Read more
source§

fn with_preformatted_attr<A, S>(self, text: impl ToString, attr: A) -> Selfwhere A: IntoIterator<Item = (S, S)>, S: ToString,

Adds a <pre> tag element with the specified attributes to this container Read more
source§

fn add_raw(&mut self, content: impl ToString)

Add raw content to the container. This content is pasted directly into the HTML Read more
source§

fn with_raw(self, content: impl ToString) -> Self

Add raw content to this container. The content is pasted directly into the HTML Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.