diff options
author | default <nobody@localhost> | 2024-07-19 07:24:28 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2024-07-19 07:24:28 +0200 |
commit | 5f6a42453c168b2fa63fdf15cfd65a5af7fc4680 (patch) | |
tree | d149ac84f2d3d389d9ff4de2f0e550ef7b67993b /format.c | |
parent | 6e3b621f7b84844ce18eb953fc7fba806472bef8 (diff) |
Added support for markdown-like .
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -91,6 +91,7 @@ static xs_str *format_line(const char *line, xs_list **attach) "`[^`]+`" "|" "~~[^~]+~~" "|" "\\*\\*?\\*?[^\\*]+\\*?\\*?\\*" "|" + "!\\[[^]]+\\]\\([^\\)]+\\)" "|" "\\[[^]]+\\]\\([^\\)]+\\)" "|" "https?:/" "/[^[:space:]]+" ")"); @@ -170,6 +171,36 @@ static xs_str *format_line(const char *line, xs_list **attach) s = xs_str_cat(s, v); } else + if (*v == '!') { + /* markdown-like images  */ + xs *w = xs_strip_chars_i(xs_replace(v, "#", "#"), "; + + if (xs_list_len(l) == 2) { + const char *alt_text = xs_list_get(l, 0); + const char *img_url = xs_list_get(l, 1); + const char *mime = xs_mime_by_ext(img_url); + + if (attach != NULL && xs_startswith(mime, "image/")) { + xs *d = xs_dict_new(); + + d = xs_dict_append(d, "mediaType", mime); + d = xs_dict_append(d, "url", img_url); + d = xs_dict_append(d, "name", alt_text); + d = xs_dict_append(d, "type", "Image"); + + *attach = xs_list_append(*attach, d); + } + else { + xs *link = xs_fmt("<a href=\"%s\">%s</a>", img_url, alt_text); + + s = xs_str_cat(s, link); + } + } + else + s = xs_str_cat(s, v); + } + else s = xs_str_cat(s, v); } else |