diff --git a/default_environment/stylesheet/main.css b/default_environment/stylesheet/main.css index b962497..5c5ef00 100644 --- a/default_environment/stylesheet/main.css +++ b/default_environment/stylesheet/main.css @@ -9,8 +9,9 @@ --blog-post-background-color: #0a0a0a; - --src-font-family: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, - Consolas, "DejaVu Sans Mono", monospace; + --src-font-family: + ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, + "DejaVu Sans Mono", monospace; --src-block-background-color: #141414; --src-block-border-color: #84828f; @@ -55,8 +56,9 @@ body { color: var(--site-text-color); background-color: var(--site-background-color); - font-family: source-sans-pro, Seravek, "Gill Sans Nova", Ubuntu, Calibri, - "DejaVu Sans", sans-serif; + font-family: + source-sans-pro, Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", + sans-serif; a:link, a:visited { @@ -146,6 +148,10 @@ body { p { margin: 1rem 0; + + &.image { + text-align: center; + } } .src_block { diff --git a/default_environment/templates/html/paragraph.dust b/default_environment/templates/html/paragraph.dust index c7818fe..13871a1 100644 --- a/default_environment/templates/html/paragraph.dust +++ b/default_environment/templates/html/paragraph.dust @@ -1,3 +1,3 @@ -

{#.children} +

{#.children} {>object/} {/.children}

diff --git a/src/context/paragraph.rs b/src/context/paragraph.rs index 9b69ee3..b88240d 100644 --- a/src/context/paragraph.rs +++ b/src/context/paragraph.rs @@ -12,6 +12,7 @@ use super::RenderObject; #[serde(rename = "paragraph")] pub(crate) struct RenderParagraph { children: Vec, + is_single_image: bool, post_blank: organic::types::PostBlank, } @@ -26,6 +27,7 @@ render!(RenderParagraph, IParagraph, original, render_context, { Ok(RenderParagraph { children, + is_single_image: original.is_single_image(), post_blank: original.post_blank, }) }); diff --git a/src/intermediate/paragraph.rs b/src/intermediate/paragraph.rs index 8254c2d..b9e134c 100644 --- a/src/intermediate/paragraph.rs +++ b/src/intermediate/paragraph.rs @@ -1,3 +1,5 @@ +use std::any::Any; + use super::macros::intermediate; use super::IObject; use crate::error::CustomError; @@ -41,4 +43,32 @@ impl IParagraph { post_blank, }) } + + /// Checks if the paragraph contains nothing but a single image. + /// + /// When this happens, we want to center the image. + pub(crate) fn is_single_image(&self) -> bool { + let num_images = self + .children + .iter() + .filter(|c| match c { + IObject::RegularLink(iregular_link) => match &iregular_link.target { + super::LinkTarget::Image { src, alt } => true, + _ => false, + }, + _ => false, + }) + .count(); + num_images == 1 + && self.children.iter().all(|c| match c { + IObject::RegularLink(iregular_link) => match &iregular_link.target { + super::LinkTarget::Image { src, alt } => true, + _ => false, + }, + IObject::PlainText(iplain_text) => { + iplain_text.source.chars().all(|c| c.is_ascii_whitespace()) + } + _ => false, + }) + } }