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>>,
|
||||
}
|
||||
|
||||
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>> {
|
||||
fn render(&self) -> String {
|
||||
let mut result = String::new();
|
||||
@@ -45,6 +67,10 @@ impl Render for Page {
|
||||
}
|
||||
|
||||
impl Page {
|
||||
pub(crate) fn builder() -> PageBuilder {
|
||||
PageBuilder::new()
|
||||
}
|
||||
|
||||
pub(crate) fn new<T>(title: T) -> Self
|
||||
where
|
||||
T: Into<String>,
|
||||
|
||||
Reference in New Issue
Block a user