Reworking elements to implement the Builder pattern
This commit is contained in:
@@ -10,6 +10,28 @@ pub(crate) struct Page {
|
|||||||
body: Vec<Box<dyn Render>>,
|
body: Vec<Box<dyn Render>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) struct PageBuilder {
|
||||||
|
title: Option<String>,
|
||||||
|
head: Option<Vec<Box<dyn Render>>>
|
||||||
|
body: Option<Vec<Box<dyn Render>>>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PageBuilder {
|
||||||
|
pub(crate) fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
title: None,
|
||||||
|
head: None,
|
||||||
|
body: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn title<T>(mut self, title: T)
|
||||||
|
where T: Into<String>
|
||||||
|
{
|
||||||
|
self.title = Some(title.into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Render for Vec<Box<dyn Render>> {
|
impl Render for Vec<Box<dyn Render>> {
|
||||||
fn render(&self) -> String {
|
fn render(&self) -> String {
|
||||||
let mut result = String::new();
|
let mut result = String::new();
|
||||||
@@ -45,6 +67,10 @@ impl Render for Page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Page {
|
impl Page {
|
||||||
|
pub(crate) fn builder() -> PageBuilder {
|
||||||
|
PageBuilder::new()
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn new<T>(title: T) -> Self
|
pub(crate) fn new<T>(title: T) -> Self
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
|
|||||||
Reference in New Issue
Block a user