diff options
Diffstat (limited to 'src/directive/meta.rs')
-rw-r--r-- | src/directive/meta.rs | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/src/directive/meta.rs b/src/directive/meta.rs index 490ffb1..1e8ec8c 100644 --- a/src/directive/meta.rs +++ b/src/directive/meta.rs @@ -1,3 +1,4 @@ +use crate::directive::DirectiveImplementation; use crate::error::SiteError; use crate::page::PageMeta; use crate::site::Site; @@ -10,20 +11,24 @@ pub struct Meta { date: Option<String>, } -impl Meta { - pub const REQUIRED: &'static [&'static str] = &[]; - pub const ALLOWED: &'static [&'static str] = &["date", "link", "title", "author"]; - pub const ALLOW_ANY_UNNAMED: bool = false; - - fn set_date(&mut self, date: &str) { - self.date = Some(date.into()); - } +impl DirectiveImplementation for Meta { + const REQUIRED: &'static [&'static str] = &[]; + const ALLOWED: &'static [&'static str] = &["date", "link", "title", "author"]; + const ALLOW_ANY_UNNAMED: bool = false; - fn set_title(&mut self, title: &str) { - self.title = Some(title.into()); + fn from_parsed(p: &ParsedDirective) -> Self { + let mut meta = Self::default(); + let args = p.args(); + if let Some(title) = args.get("title") { + meta.set_title(title); + } + if let Some(date) = args.get("date") { + meta.set_date(date); + } + meta } - pub fn process(&self, _site: &Site, meta: &mut PageMeta) -> Result<String, SiteError> { + fn process(&self, _site: &Site, meta: &mut PageMeta) -> Result<String, SiteError> { if let Some(title) = &self.title { meta.set_title(title.into()); } @@ -34,19 +39,12 @@ impl Meta { } } -impl From<&ParsedDirective> for Meta { - fn from(p: &ParsedDirective) -> Self { - let mut meta = Meta::default(); - let args = p.args(); - if let Some(title) = args.get("title") { - meta.set_title(title); - } - if let Some(date) = args.get("date") { - meta.set_date(date); - } - meta +impl Meta { + fn set_date(&mut self, date: &str) { + self.date = Some(date.into()); } -} -#[cfg(test)] -mod test {} + fn set_title(&mut self, title: &str) { + self.title = Some(title.into()); + } +} |