commit 22f326e
grunfink
·
2025-06-04 04:57:13 +0000 UTC
parent f0509f8
Fixed markdown links with parenthesis.
1 files changed,
+16,
-13
M
format.c
M
format.c
+16,
-13
1@@ -96,8 +96,8 @@ static xs_str *format_line(const char *line, xs_list **attach)
2 "~~[^~]+~~" "|"
3 "\\*\\*?\\*?[^\\*]+\\*?\\*?\\*" "|"
4 "__[^_]+__" "|" //anzu
5- "!\\[[^]]+\\]\\([^\\)]+\\)" "|"
6- "\\[[^]]+\\]\\([^\\)]+\\)" "|"
7+ "!\\[[^]]+\\]\\([^\\)]+\\)\\)?" "|"
8+ "\\[[^]]+\\]\\([^\\)]+\\)\\)?" "|"
9 "[a-z]+:/" "/" NOSPACE "|"
10 "(mailto|xmpp):[^@[:space:]]+@" NOSPACE
11 ")");
12@@ -149,14 +149,15 @@ static xs_str *format_line(const char *line, xs_list **attach)
13 else
14 if (*v == '[') {
15 /* markdown-like links [label](url) */
16- xs *w = xs_strip_chars_i(
17- xs_replace_i(xs_replace(v, "#", "#"), "@", "@"),
18- ";
21
22 if (xs_list_len(l) == 2) {
23- const char *name = xs_list_get(l, 0);
24- const char *url = xs_list_get(l, 1);
25+ xs *name = xs_dup(xs_list_get(l, 0));
26+ xs *url = xs_dup(xs_list_get(l, 1));
27+
28+ name = xs_crop_i(name, 1, 0);
29+ url = xs_crop_i(url, 0, -1);
30
31 xs *link = xs_fmt("<a href=\"%s\">%s</a>", url, name);
32
33@@ -168,15 +169,17 @@ static xs_str *format_line(const char *line, xs_list **attach)
34 else
35 if (*v == '!') {
36 /* markdown-like images  */
37- xs *w = xs_strip_chars_i(
38- xs_replace_i(xs_replace(v, "#", "#"), "@", "@"),
39- ";
42
43 if (xs_list_len(l) == 2) {
44- const char *alt_text = xs_list_get(l, 0);
45- const char *img_url = xs_list_get(l, 1);
46- const char *mime = xs_mime_by_ext(img_url);
47+ xs *alt_text = xs_dup(xs_list_get(l, 0));
48+ xs *img_url = xs_dup(xs_list_get(l, 1));
49+
50+ alt_text = xs_crop_i(alt_text, 2, 0);
51+ img_url = xs_crop_i(img_url, 0, -1);
52+
53+ const char *mime = xs_mime_by_ext(img_url);
54
55 if (attach != NULL && xs_startswith(mime, "image/")) {
56 const xs_dict *ad;