summaryrefslogtreecommitdiff
path: root/format.c
diff options
context:
space:
mode:
authorGravatar Louis Brauer2024-05-27 12:25:38 +0200
committerGravatar Louis Brauer2024-05-27 12:25:38 +0200
commit4621a25ba476b8222b7fca8b545ad2489469f310 (patch)
treef6a406c42e5e8faae255d988505d654a29c188dc /format.c
parentImplement Mastodon PATCH endpoint for account profile updates (diff)
parentMinor tweak to markdown-like links. (diff)
downloadsnac2-4621a25ba476b8222b7fca8b545ad2489469f310.tar.gz
snac2-4621a25ba476b8222b7fca8b545ad2489469f310.tar.xz
snac2-4621a25ba476b8222b7fca8b545ad2489469f310.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'format.c')
-rw-r--r--format.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/format.c b/format.c
index b021f55..1020ddd 100644
--- a/format.c
+++ b/format.c
@@ -87,7 +87,12 @@ static xs_str *format_line(const char *line, xs_list **attach)
87 87
88 /* split by markup */ 88 /* split by markup */
89 xs *sm = xs_regex_split(line, 89 xs *sm = xs_regex_split(line,
90 "(`[^`]+`|\\*\\*?[^\\*]+\\*?\\*|https?:/" "/[^[:space:]]+)"); 90 "("
91 "`[^`]+`" "|"
92 "\\*\\*?[^\\*]+\\*?\\*" "|"
93 "\\[[^]]+\\]\\([^\\)]+\\)" "|"
94 "https?:/" "/[^[:space:]]+"
95 ")");
91 int n = 0; 96 int n = 0;
92 97
93 p = sm; 98 p = sm;
@@ -136,6 +141,21 @@ static xs_str *format_line(const char *line, xs_list **attach)
136 } 141 }
137 } 142 }
138 else 143 else
144 if (*v == '[') {
145 /* markdown-like links [label](url) */
146 xs *w = xs_strip_chars_i(xs_dup(v), "[)");
147 xs *l = xs_split_n(w, "](", 1);
148
149 if (xs_list_len(l) == 2) {
150 xs *link = xs_fmt("<a href=\"%s\">%s</a>",
151 xs_list_get(l, 1), xs_list_get(l, 0));
152
153 s = xs_str_cat(s, link);
154 }
155 else
156 s = xs_str_cat(s, v);
157 }
158 else
139 s = xs_str_cat(s, v); 159 s = xs_str_cat(s, v);
140 } 160 }
141 else 161 else