///|
fn linkify_href_for(candidate : StringView) -> (String, String) {
let text = candidate.to_owned()
if @syn.starts_with_case_insensitive(candidate, 0, "mailto:") {
return (text, "email")
}
if string_view_contains(candidate, "@") &&
!linkify_is_scheme_url(candidate) &&
!@syn.starts_with_case_insensitive(candidate, 0, "//") &&
!@syn.starts_with_case_insensitive(candidate, 0, "www.") {
return ("mailto:" + text, "email")
}
if linkify_is_scheme_url(candidate) ||
@syn.starts_with_case_insensitive(candidate, 0, "//") {
return (linkify_punycode_href(text), "url")
}
(linkify_punycode_href("http://" + text), "url")
}
///|
fn linkify_is_scheme(candidate : StringView) -> Bool {
@syn.starts_with_case_insensitive(candidate, 0, "http://") ||
@syn.starts_with_case_insensitive(candidate, 0, "https://") ||
@syn.starts_with_case_insensitive(candidate, 0, "ftp://") ||
@syn.starts_with_case_insensitive(candidate, 0, "mailto:")
}
///|
fn linkify_is_scheme_url(candidate : StringView) -> Bool {
@syn.starts_with_case_insensitive(candidate, 0, "http://") ||
@syn.starts_with_case_insensitive(candidate, 0, "https://") ||
@syn.starts_with_case_insensitive(candidate, 0, "ftp://")
}