diff options
| author | default <nobody@localhost> | 2024-10-25 07:13:28 +0200 |
|---|---|---|
| committer | default <nobody@localhost> | 2024-10-25 07:13:28 +0200 |
| commit | 560db69d1467bc333c4aca3c43a8174fff0a901d (patch) | |
| tree | 5b37582d952e7de9f74e600f3beb5d99c5c4db6a /format.c | |
| parent | 8de46e30fd17699006b5fae184fa4b0b3a35f118 (diff) | |
Accept any URL schema (not just http) in format_line().
Diffstat (limited to 'format.c')
| -rw-r--r-- | format.c | 48 |
1 files changed, 24 insertions, 24 deletions
@@ -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, "#", "#"), "[)"); @@ -201,6 +178,29 @@ static xs_str *format_line(const char *line, xs_list **attach) s = xs_str_cat(s, v); } else + if (xs_str_in(v, ":/" "/") != -1) { + 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 s = xs_str_cat(s, v); } else |