- Add client for atlas module - Add unit tests to test the workflow - Remove println statements from file_or_image_exists - Remove println statements from link processing loop
56 lines
1.5 KiB
V
56 lines
1.5 KiB
V
module atlas_client
|
|
|
|
import os
|
|
|
|
// extract_image_links extracts image file names from markdown content
|
|
// If exclude_http is true, it will skip images with http:// or https:// URLs
|
|
pub fn extract_image_links(s string, exclude_http bool) ![]string {
|
|
mut result := []string{}
|
|
mut current_pos := 0
|
|
for {
|
|
if current_pos >= s.len {
|
|
break
|
|
}
|
|
|
|
// Find the start of an image markdown link
|
|
start_index := s.index_after('![', current_pos) or { -1 }
|
|
if start_index == -1 {
|
|
break // No more image links found
|
|
}
|
|
|
|
// Find the closing bracket for alt text
|
|
alt_end_index := s.index_after(']', start_index) or { -1 }
|
|
if alt_end_index == -1 {
|
|
break
|
|
}
|
|
|
|
// Check for opening parenthesis for URL
|
|
if alt_end_index + 1 >= s.len || s[alt_end_index + 1] != `(` {
|
|
current_pos = alt_end_index + 1 // Move past this invalid sequence
|
|
continue
|
|
}
|
|
|
|
// Find the closing parenthesis for URL
|
|
url_start_index := alt_end_index + 2
|
|
url_end_index := s.index_after(')', url_start_index) or { -1 }
|
|
if url_end_index == -1 {
|
|
break
|
|
}
|
|
|
|
// Extract the URL
|
|
url := s[url_start_index..url_end_index]
|
|
if exclude_http && (url.starts_with('http://') || url.starts_with('https://')) {
|
|
current_pos = url_end_index + 1
|
|
continue
|
|
}
|
|
|
|
// Extract only the base name of the image from the URL
|
|
image_base_name := os.base(url)
|
|
result << image_base_name
|
|
|
|
// Move current_pos past the found link to continue searching
|
|
current_pos = url_end_index + 1
|
|
}
|
|
return result
|
|
}
|