diff options
Diffstat (limited to 'src/page.rs')
-rw-r--r-- | src/page.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/page.rs b/src/page.rs index db0dc96..2c07023 100644 --- a/src/page.rs +++ b/src/page.rs @@ -2,7 +2,7 @@ use crate::directive::{Processed, Toc}; use crate::html::HtmlError; use crate::html::{parse, Content, Element, ElementTag, HtmlPage}; use crate::name::Name; -use crate::parser::WikitextParser; +use crate::parser::{ParserError, WikitextParser}; use crate::site::Site; use crate::util::get_mtime; use crate::wikitext::{Snippet, WikitextError}; @@ -28,6 +28,9 @@ pub enum PageError { Html(#[from] Box<HtmlError>), #[error(transparent)] + Parser(#[from] Box<ParserError>), + + #[error(transparent)] Riki(#[from] Box<crate::error::RikiError>), } @@ -43,6 +46,12 @@ impl From<HtmlError> for PageError { } } +impl From<ParserError> for PageError { + fn from(e: ParserError) -> Self { + Self::Parser(Box::new(e)) + } +} + pub struct Page { meta: PageMeta, unprocessed: UnprocessedPage, @@ -121,7 +130,7 @@ impl UnprocessedPage { fn snippets(parser: &mut WikitextParser) -> Result<Vec<Snippet>, PageError> { let mut snippets = vec![]; - while let Some(snippet) = parser.parse().map_err(|e| PageError::Riki(Box::new(e)))? { + while let Some(snippet) = parser.parse()? { snippets.push(snippet); } Ok(snippets) |