pub fn mentions(source: &str, rust: bool) -> Result<usize, crate::Error> {
let read = if rust {
crate::text::rust(source, false)
} else {
crate::text::markdown_file(source)
}
.map_err(|_| crate::Error::Markdown {
path: "<fuzz input>".to_owned(),
})?;
let starts = crate::text::line_starts(source);
for marker in &read.markers {
let end = marker.start + marker.name.len();
assert_eq!(&source[marker.start..end], marker.name);
let _ = crate::text::line_column(&starts, source, marker.start);
}
for mention in &read.mentions {
assert!(mention.start <= mention.end, "{mention:?}");
let _ = &source[mention.start..mention.end];
let _ = crate::text::line_column(&starts, source, mention.start);
}
Ok(read.mentions.len())
}
#[must_use]
pub fn declarations(source: &str) -> bool {
crate::parse::parse(source).is_ok()
}