Linkify URLs missing schema

This commit is contained in:
Bill Thiede 2024-02-07 19:41:34 -08:00
parent 0f1a60a348
commit 81ed3a8ca2

View File

@ -18,7 +18,8 @@ pub enum SanitizeError {
}
pub fn linkify_html(text: &str) -> String {
let finder = LinkFinder::new();
let mut finder = LinkFinder::new();
finder.url_must_have_scheme(false);
let mut parts = Vec::new();
for span in finder.spans(text) {
// TODO(wathiede): use Cow<str>?
@ -26,7 +27,17 @@ pub fn linkify_html(text: &str) -> String {
// Text as-is
None => parts.push(span.as_str().to_string()),
// Wrap in anchor tag
Some(LinkKind::Url) => parts.push(format!(r#"<a href="{0}">{0}</a>"#, span.as_str())),
Some(LinkKind::Url) => {
let text = span.as_str();
let schema = if text.starts_with("http") {
""
} else {
"http://"
};
let a = format!(r#"<a href="{schema}{0}">{0}</a>"#, text);
log::info!("link {} {a}", span.as_str());
parts.push(a);
}
_ => todo!("unhandled kind: {:?}", span.kind().unwrap()),
}
}