From 8e0ccc6d76af26c83e5adebfaa18aef364e59975 Mon Sep 17 00:00:00 2001 From: default Date: Sun, 26 May 2024 09:27:36 +0200 Subject: Added markdown-like links. --- format.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'format.c') diff --git a/format.c b/format.c index b021f55..0a8b72c 100644 --- a/format.c +++ b/format.c @@ -87,7 +87,12 @@ static xs_str *format_line(const char *line, xs_list **attach) /* split by markup */ xs *sm = xs_regex_split(line, - "(`[^`]+`|\\*\\*?[^\\*]+\\*?\\*|https?:/" "/[^[:space:]]+)"); + "(" + "`[^`]+`" "|" + "\\*\\*?[^\\*]+\\*?\\*" "|" + "\\[[^]]+\\]\\([^\\)]+\\)" "|" + "https?:/" "/[^[:space:]]+" + ")"); int n = 0; p = sm; @@ -135,6 +140,16 @@ static xs_str *format_line(const char *line, xs_list **attach) s = xs_str_cat(s, s1); } } + else + if (*v == '[') { + /* markdown-like links [label](url) */ + xs *w = xs_strip_chars_i(xs_dup(v), "[)"); + xs *l = xs_split(w, "]("); + xs *link = xs_fmt("%s", + xs_list_get(l, 1), xs_list_get(l, 0)); + + s = xs_str_cat(s, link); + } else s = xs_str_cat(s, v); } -- cgit v1.2.3 From 36764b8ade5ee4686b04acb251f586eec4dacfad Mon Sep 17 00:00:00 2001 From: default Date: Mon, 27 May 2024 05:49:29 +0200 Subject: Minor tweak to markdown-like links. --- format.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'format.c') diff --git a/format.c b/format.c index 0a8b72c..1020ddd 100644 --- a/format.c +++ b/format.c @@ -144,11 +144,16 @@ static xs_str *format_line(const char *line, xs_list **attach) if (*v == '[') { /* markdown-like links [label](url) */ xs *w = xs_strip_chars_i(xs_dup(v), "[)"); - xs *l = xs_split(w, "]("); - xs *link = xs_fmt("%s", + xs *l = xs_split_n(w, "](", 1); + + if (xs_list_len(l) == 2) { + xs *link = xs_fmt("%s", xs_list_get(l, 1), xs_list_get(l, 0)); - s = xs_str_cat(s, link); + s = xs_str_cat(s, link); + } + else + s = xs_str_cat(s, v); } else s = xs_str_cat(s, v); -- cgit v1.2.3