diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-08-06 04:59:36 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-08-06 04:59:36 +0000 |
commit | 454368dfbf11dad54567f004b94db90118bfc0b2 (patch) | |
tree | 14136e465198ea574f85d696698067aab0dc7a90 /src/directive/mod.rs | |
parent | 97b2307e4ae2223fb2f9020bfa49e0e8924a268f (diff) | |
parent | be85bae2e516ce3b2b7874e94e5bb4fea6c30754 (diff) | |
download | riki-454368dfbf11dad54567f004b94db90118bfc0b2.tar.gz |
Merge branch 'dummy-directives' into 'main'
fix: single-quoted values may also contain newlines
See merge request larswirzenius/riki!37
Diffstat (limited to 'src/directive/mod.rs')
-rw-r--r-- | src/directive/mod.rs | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/src/directive/mod.rs b/src/directive/mod.rs index 38fb0d3..ee96bfc 100644 --- a/src/directive/mod.rs +++ b/src/directive/mod.rs @@ -12,9 +12,14 @@ pub enum Directive { QuotedArg, MultilineArg, - Meta(Meta), + BrokenLinks(BrokenLinks), Img(Img), + Inline(Inline), + Meta(Meta), + PageStats(PageStats), + Shortcut(Shortcut), Tag(Tag), + Toc(Toc), } impl TryFrom<ParsedDirective> for Directive { @@ -42,18 +47,49 @@ impl TryFrom<ParsedDirective> for Directive { Self::check_args(&p, &["yo"], &["then", "else"], false)?; Directive::MultilineArg } + + "brokenlinks" => { + Self::check_args(&p, BrokenLinks::REQUIRED, BrokenLinks::ALLOWED, BrokenLinks::ALLOW_ANY_UNNAMED)?; + Directive::BrokenLinks(BrokenLinks::from(p)) + } "img" => { Self::check_args(&p, Img::REQUIRED, Img::ALLOWED, Img::ALLOW_ANY_UNNAMED)?; Directive::Img(Img::from(p)) } + "inline" => { + Self::check_args( + &p, + Inline::REQUIRED, + Inline::ALLOWED, + Inline::ALLOW_ANY_UNNAMED, + )?; + Directive::Inline(Inline::from(p)) + } "meta" => { Self::check_args(&p, Meta::REQUIRED, Meta::ALLOWED, Meta::ALLOW_ANY_UNNAMED)?; Directive::Meta(Meta::from(p)) } + "pagestats" => { + Self::check_args( + &p, + PageStats::REQUIRED, + PageStats::ALLOWED, + PageStats::ALLOW_ANY_UNNAMED, + )?; + Directive::PageStats(PageStats::from(p)) + } + "shortcut" => { + Self::check_args(&p, Shortcut::REQUIRED, Shortcut::ALLOWED, Shortcut::ALLOW_ANY_UNNAMED)?; + Directive::Shortcut(Shortcut::from(p)) + } "tag" => { Self::check_args(&p, Tag::REQUIRED, Tag::ALLOWED, Tag::ALLOW_ANY_UNNAMED)?; Directive::Tag(Tag::from(p)) } + "toc" => { + Self::check_args(&p, Toc::REQUIRED, Toc::ALLOWED, Toc::ALLOW_ANY_UNNAMED)?; + Directive::Toc(Toc::from(p)) + } _ => return Err(SiteError::UnknownDirective(p.name().into())), }; Ok(d) @@ -100,18 +136,38 @@ impl Directive { | Self::MultilineArg => { panic!("directive {:?} may only be used in parsing tests", self) } + Self::BrokenLinks(x) => x.process(site, meta), Self::Img(x) => x.process(site, meta), + Self::Inline(x) => x.process(site, meta), Self::Meta(x) => x.process(site, meta), + Self::PageStats(x) => x.process(site, meta), + Self::Shortcut(x) => x.process(site, meta), Self::Tag(x) => x.process(site, meta), + Self::Toc(x) => x.process(site, meta), } } } +mod brokenlinks; +use brokenlinks::BrokenLinks; + mod meta; use meta::Meta; mod img; pub use img::Img; +mod inline; +pub use inline::Inline; + +mod pagestats; +pub use pagestats::PageStats; + +mod shortcut; +pub use shortcut::Shortcut; + mod tag; use tag::Tag; + +mod toc; +use toc::Toc; |