From 27b5bcc274675eab956e70bc59ba3e137e5aa676 Mon Sep 17 00:00:00 2001 From: Vika Date: Tue, 8 Aug 2023 14:57:28 +0300 Subject: templates-neo: add a test CLI that renders entries This allows interactively testing the markup. --- templates-neo/src/main.rs | 16 ++++++++++++++++ templates-neo/src/mf2.rs | 12 ++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 templates-neo/src/main.rs (limited to 'templates-neo') diff --git a/templates-neo/src/main.rs b/templates-neo/src/main.rs new file mode 100644 index 0000000..54afbb8 --- /dev/null +++ b/templates-neo/src/main.rs @@ -0,0 +1,16 @@ +use std::io::Write; + +use kittybox_html::mf2::Entry; + + +fn main() { + let mf2 = serde_json::from_reader::<_, microformats::types::Item>(std::io::stdin()).unwrap(); + let entry = Entry::try_from(mf2).unwrap(); + + let mut article = html::content::Article::builder(); + entry.build(&mut article); + + let mut stdout = std::io::stdout().lock(); + stdout.write_all(article.build().to_string().as_bytes()).unwrap(); + stdout.write_all(b"\n").unwrap(); +} \ No newline at end of file diff --git a/templates-neo/src/mf2.rs b/templates-neo/src/mf2.rs index c4d49a2..e59b51c 100644 --- a/templates-neo/src/mf2.rs +++ b/templates-neo/src/mf2.rs @@ -18,7 +18,7 @@ pub enum Error { got: PropertyValue }, #[error("missing property: {0}")] - MissingProperty(&'static str) + MissingProperty(&'static str), } pub enum Image { @@ -30,7 +30,7 @@ pub enum Image { } impl Image { - fn build(self, img: &mut html::media::builders::ImageBuilder) -> &mut html::media::builders::ImageBuilder { + pub fn build(self, img: &mut html::media::builders::ImageBuilder) -> &mut html::media::builders::ImageBuilder { match self { Image::Plain(url) => img.src(String::from(url)), Image::Accessible { src, alt } => img.src(String::from(src)).alt(alt) @@ -132,7 +132,7 @@ impl TryFrom for Card { } impl Card { - fn build_section(self, section: &mut html::content::builders::SectionBuilder) -> &mut html::content::builders::SectionBuilder { + pub fn build_section(self, section: &mut html::content::builders::SectionBuilder) -> &mut html::content::builders::SectionBuilder { section .class("mini-h-card") .anchor(|a| a @@ -143,7 +143,7 @@ impl Card { ) } - fn build(self, article: &mut html::content::builders::ArticleBuilder) -> &mut html::content::builders::ArticleBuilder { + pub fn build(self, article: &mut html::content::builders::ArticleBuilder) -> &mut html::content::builders::ArticleBuilder { let urls: Vec<_> = self.urls.into_iter().filter(|u| *u != self.uid).collect(); article @@ -373,7 +373,7 @@ impl TryFrom for Entry { } impl Entry { - fn build(self, article: &mut ArticleBuilder) -> &mut ArticleBuilder { + pub fn build(self, article: &mut ArticleBuilder) -> &mut ArticleBuilder { article .class("h-entry") .header(|header| header @@ -406,7 +406,7 @@ impl Entry { }) ) }) - ) + ) .main(|main| { if let Some(lang) = self.content.0.lang { main.lang(lang); -- cgit 1.4.1