summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2022-07-24 05:00:20 +0000
committerLars Wirzenius <liw@liw.fi>2022-07-24 05:00:20 +0000
commite4e3c0c56857567395adf2e982292dc9b3d29e73 (patch)
treec7edf116e7e36d3066d32e70c30c6f6ab3f97481
parentdd1f2eabc0a3f9fb6051be3788fc37095c79f76f (diff)
parent0fdef7105cf3a34c7fc8774b2ed1d438935bfe59 (diff)
downloadriki-e4e3c0c56857567395adf2e982292dc9b3d29e73.tar.gz
Merge branch 'fix-tables' into 'main'
fix: handle tables by not handling them See merge request larswirzenius/riki!23
-rw-r--r--src/directive/meta.rs2
-rw-r--r--src/parser.rs74
2 files changed, 44 insertions, 32 deletions
diff --git a/src/directive/meta.rs b/src/directive/meta.rs
index 789a6b0..da595eb 100644
--- a/src/directive/meta.rs
+++ b/src/directive/meta.rs
@@ -10,7 +10,7 @@ pub struct Meta {
impl Meta {
pub const REQUIRED: &'static [&'static str] = &[];
- pub const ALLOWED: &'static [&'static str] = &["date", "link", "title"];
+ pub const ALLOWED: &'static [&'static str] = &["date", "link", "title", "author"];
pub const ALLOW_ANY_UNNAMED: bool = false;
fn set_title(&mut self, title: &str) {
diff --git a/src/parser.rs b/src/parser.rs
index 12a89e6..14f46c4 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -31,37 +31,6 @@ impl WikitextParser {
}
let snippet = match &self.tokens[..] {
- [Token::Markdown(text), ..] => {
- let snippet = Snippet::Markdown(text.to_string());
- self.tokens.drain(..1);
- snippet
- }
- [Token::Spaces(s), ..] => {
- let snippet = Snippet::Markdown(s.to_string());
- self.tokens.drain(..1);
- snippet
- }
- [Token::Word(text), ..] => {
- let snippet = Snippet::Markdown(text.to_string());
- self.tokens.drain(..1);
- snippet
- }
- [Token::OpenParens, ..] => {
- self.tokens.drain(..1);
- Snippet::Markdown("(".into())
- }
- [Token::ClosedParens, ..] => {
- self.tokens.drain(..1);
- Snippet::Markdown(")".into())
- }
- [Token::OpenBracket, ..] => {
- self.tokens.drain(..1);
- Snippet::Markdown("[".into())
- }
- [Token::ClosedBracket, ..] => {
- self.tokens.drain(..1);
- Snippet::Markdown("]".into())
- }
[Token::OpenBrackets, Token::Word(target), Token::CloseBrackets, ..] => {
let wikilink = WikiLink::new(target, target);
let snippet = Snippet::WikiLink(wikilink);
@@ -161,10 +130,53 @@ impl WikitextParser {
}
Snippet::Markdown(format!("![{}]({})", link_text, target.unwrap()))
}
+ [Token::Markdown(text), ..] => {
+ let snippet = Snippet::Markdown(text.to_string());
+ self.tokens.drain(..1);
+ snippet
+ }
+ [Token::Spaces(s), ..] => {
+ let snippet = Snippet::Markdown(s.to_string());
+ self.tokens.drain(..1);
+ snippet
+ }
+ [Token::Word(text), ..] => {
+ let snippet = Snippet::Markdown(text.to_string());
+ self.tokens.drain(..1);
+ snippet
+ }
[Token::Equals, ..] => {
self.tokens.drain(..1);
Snippet::Markdown("=".into())
}
+ [Token::Pipe, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("|".into())
+ }
+ [Token::OpenParens, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("(".into())
+ }
+ [Token::ClosedParens, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown(")".into())
+ }
+ [Token::OpenBracket, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("[".into())
+ }
+ [Token::ClosedBracket, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("]".into())
+ }
+ [Token::OpenBrackets, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("[[".into())
+ }
+ [Token::CloseBrackets, ..] => {
+ self.tokens.drain(..1);
+ Snippet::Markdown("]]".into())
+ }
_ => panic!("eeek: {:?}", self.tokens),
};
Ok(Some(snippet))