Accept any URL schema (not just http) in format_line().

This commit is contained in:
default 2024-10-25 07:13:28 +02:00
parent 8de46e30fd
commit 560db69d14

View file

@ -93,7 +93,7 @@ static xs_str *format_line(const char *line, xs_list **attach)
"\\*\\*?\\*?[^\\*]+\\*?\\*?\\*" "|"
"!\\[[^]]+\\]\\([^\\)]+\\)" "|"
"\\[[^]]+\\]\\([^\\)]+\\)" "|"
"https?:/" "/[^[:space:]]+"
"[a-z]+?:/" "/[^[:space:]]+"
")");
int n = 0;
@ -133,29 +133,6 @@ static xs_str *format_line(const char *line, xs_list **attach)
s = xs_str_cat(s, s2);
}
else
if (xs_startswith(v, "http")) {
xs *u = xs_replace(v, "#", "#");
xs *v2 = xs_strip_chars_i(xs_dup(u), ".,)");
const char *mime = xs_mime_by_ext(v2);
if (attach != NULL && xs_startswith(mime, "image/")) {
/* if it's a link to an image, insert it as an attachment */
xs *d = xs_dict_new();
d = xs_dict_append(d, "mediaType", mime);
d = xs_dict_append(d, "url", v2);
d = xs_dict_append(d, "name", "");
d = xs_dict_append(d, "type", "Image");
*attach = xs_list_append(*attach, d);
}
else {
xs *s1 = xs_fmt("<a href=\"%s\" target=\"_blank\">%s</a>", v2, u);
s = xs_str_cat(s, s1);
}
}
else
if (*v == '[') {
/* markdown-like links [label](url) */
xs *w = xs_strip_chars_i(xs_replace(v, "#", "&#35;"), "[)");
@ -200,6 +177,29 @@ static xs_str *format_line(const char *line, xs_list **attach)
else
s = xs_str_cat(s, v);
}
else
if (xs_str_in(v, ":/" "/") != -1) {
xs *u = xs_replace(v, "#", "&#35;");
xs *v2 = xs_strip_chars_i(xs_dup(u), ".,)");
const char *mime = xs_mime_by_ext(v2);
if (attach != NULL && xs_startswith(mime, "image/")) {
/* if it's a link to an image, insert it as an attachment */
xs *d = xs_dict_new();
d = xs_dict_append(d, "mediaType", mime);
d = xs_dict_append(d, "url", v2);
d = xs_dict_append(d, "name", "");
d = xs_dict_append(d, "type", "Image");
*attach = xs_list_append(*attach, d);
}
else {
xs *s1 = xs_fmt("<a href=\"%s\" target=\"_blank\">%s</a>", v2, u);
s = xs_str_cat(s, s1);
}
}
else
s = xs_str_cat(s, v);
}