Center images when they are the only contents in a paragraph.
Some checks failed
format Build format has succeeded
clippy Build clippy has failed
rust-test Build rust-test has succeeded
build Build build has succeeded

This commit is contained in:
Tom Alexander
2025-02-22 13:15:58 -05:00
parent c371b999d5
commit ae6f18d19c
4 changed files with 43 additions and 5 deletions

View File

@@ -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,
})
}
}