pub fn is_blockquote_style(style: &str) -> bool {
let style_lower = style.to_lowercase();
matches!(
style_lower.as_str(),
"quote" | "intensequote" | "intense quote" | "blocktext" | "block text"
)
}
pub fn is_code_style(style: &str) -> bool {
let s = style.to_lowercase();
matches!(
s.as_str(),
"code"
| "sourcecode"
| "source code"
| "htmlpreformatted"
| "html preformatted"
| "plaintext"
| "plain text"
| "macro"
| "macrotext"
| "macro text"
)
}
pub fn is_monospace_font_name(name: &str) -> bool {
let lower = name.to_lowercase();
lower.contains("courier")
|| lower.contains("consolas")
|| lower.contains("mono")
|| lower.contains("source code")
|| lower.contains("fira code")
|| lower.contains("menlo")
|| lower.contains("dejavu sans mono")
|| lower.contains("liberation mono")
|| lower.contains("andale mono")
|| lower.contains("lucida console")
}
pub fn parse_heading_style(style: &str) -> Option<usize> {
let style_lower = style.to_lowercase();
if let Some(rest) = style_lower.strip_prefix("heading") {
return rest.trim().parse().ok();
}
match style_lower.as_str() {
"title" => Some(1),
"subtitle" => Some(2),
_ => None,
}
}