anvilsign in

collin/anvil

1//! Extract preview images from README files.
2
3use pulldown_cmark::{
4 Event,
5 Parser,
6 Tag,
7};
8
9/// Extract the first "real" image from markdown content.
10/// Returns the image URL (e.g., `![alt](url)` → `url`), or None if not found.
11pub fn extract_preview_url(markdown: &str) -> Option<String> {
12 let parser = Parser::new(markdown);
13
14 for event in parser {
15 if let Event::Start(Tag::Image { dest_url, .. }) = event {
16 let url_str = dest_url.to_string();
17
18 // Accept any image URL that's not data: or javascript:
19 if !url_str.is_empty()
20 && !url_str.starts_with("data:")
21 && !url_str.starts_with("javascript:")
22 {
23 return Some(url_str);
24 }
25 }
26 }
27 None
28}