summaryrefslogtreecommitdiff
path: root/src/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs38
1 files changed, 8 insertions, 30 deletions
diff --git a/src/parser.rs b/src/parser.rs
index 5378f36..559ee3a 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -52,8 +52,7 @@ impl WikitextParser {
let (line, col) = self.position();
debug!("token at {}:{}", line, col);
let snippet = match &self.tokens[..] {
- [TokenKind::OpenBrackets, TokenKind::Word(target), TokenKind::CloseBrackets, ..] =>
- {
+ [TokenKind::OpenBrackets, TokenKind::Word(target), TokenKind::CloseBrackets, ..] => {
let wikilink = WikiLink::new(target, target);
let snippet = Snippet::WikiLink(wikilink);
self.drain(3);
@@ -98,8 +97,7 @@ impl WikitextParser {
self.drain(1);
break;
}
- [TokenKind::Pipe, TokenKind::Word(word), TokenKind::CloseBrackets, ..] =>
- {
+ [TokenKind::Pipe, TokenKind::Word(word), TokenKind::CloseBrackets, ..] => {
trace!("match |{:?}]]", word);
target = Some(word.to_string());
self.drain(3);
@@ -112,12 +110,7 @@ impl WikitextParser {
self.drain(3);
break;
}
- _ => panic!(
- "a can't parse line {} column {}: {:?}",
- line,
- col,
- &self.tokens[..5]
- ),
+ _ => return Err(SiteError::wikitext_syntax(line, col, &self.tokens[..5])),
}
}
if target.is_none() {
@@ -126,8 +119,7 @@ impl WikitextParser {
let wikilink = WikiLink::new(&link_text, &target.unwrap());
Snippet::WikiLink(wikilink)
}
- [TokenKind::OpenBrackets, TokenKind::Bang, TokenKind::Word(name), ..] =>
- {
+ [TokenKind::OpenBrackets, TokenKind::Bang, TokenKind::Word(name), ..] => {
trace!("match [[!{:?}", name);
let name = name.to_string();
let mut args = HashMap::new();
@@ -155,8 +147,7 @@ impl WikitextParser {
self.drain(2);
break;
}
- [TokenKind::Word(name), TokenKind::Equals, TokenKind::Word(value), ..] =>
- {
+ [TokenKind::Word(name), TokenKind::Equals, TokenKind::Word(value), ..] => {
trace!("match {:?}={:?}", name, value);
args.insert(name.to_string(), value.to_string());
self.drain(3);
@@ -172,12 +163,7 @@ impl WikitextParser {
args.insert(value.to_string(), "".to_string());
self.drain(1);
}
- _ => panic!(
- "b can't parse line {} column {}: {:?}",
- line,
- col,
- &self.tokens[..5]
- ),
+ _ => return Err(SiteError::wikitext_syntax(line, col, &self.tokens[..5])),
}
}
Snippet::Directive(ParsedDirective::new(&name, args)?)
@@ -204,12 +190,7 @@ impl WikitextParser {
self.drain(4);
break;
}
- _ => panic!(
- "c can't parse line {} column {}: {:?}",
- line,
- col,
- &self.tokens[..5]
- ),
+ _ => return Err(SiteError::wikitext_syntax(line, col, &self.tokens[..5])),
}
}
Snippet::Markdown(format!("![{}]({})", link_text, target.unwrap()))
@@ -275,10 +256,7 @@ impl WikitextParser {
self.drain(1);
Snippet::Markdown("]]".into())
}
- _ => panic!(
- "d can't parse line {} column {}: {:?}",
- line, col, self.tokens
- ),
+ _ => return Err(SiteError::wikitext_syntax(line, col, &self.tokens[..5])),
};
Ok(Some(snippet))
}