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); }