diff options
Diffstat (limited to 'src/directive/meta.rs')
-rw-r--r-- | src/directive/meta.rs | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/src/directive/meta.rs b/src/directive/meta.rs index 490ffb1..882288b 100644 --- a/src/directive/meta.rs +++ b/src/directive/meta.rs @@ -1,3 +1,4 @@ +use crate::directive::{DirectiveImplementation, Processed}; use crate::error::SiteError; use crate::page::PageMeta; use crate::site::Site; @@ -10,43 +11,40 @@ 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<Processed, SiteError> { if let Some(title) = &self.title { meta.set_title(title.into()); } if let Some(mtime) = &self.date { meta.set_mtime(parse_timestamp(mtime)?); } - Ok("".into()) + Ok(Processed::Markdown("".into())) } } -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()); + } +} |