diff options
| author | 2024-05-26 09:27:36 +0200 | |
|---|---|---|
| committer | 2024-05-26 09:27:36 +0200 | |
| commit | 8e0ccc6d76af26c83e5adebfaa18aef364e59975 (patch) | |
| tree | d1c4e33cc6454e1119bb88e4b3f682082edafb9a /format.c | |
| parent | Minor code reformatting. (diff) | |
| download | penes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.tar.gz penes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.tar.xz penes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.zip | |
Added markdown-like links.
Diffstat (limited to '')
| -rw-r--r-- | format.c | 17 |
1 files changed, 16 insertions, 1 deletions
| @@ -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,16 @@ 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(w, "]("); | ||
| 148 | xs *link = xs_fmt("<a href=\"%s\">%s</a>", | ||
| 149 | xs_list_get(l, 1), xs_list_get(l, 0)); | ||
| 150 | |||
| 151 | s = xs_str_cat(s, link); | ||
| 152 | } | ||
| 153 | else | ||
| 139 | s = xs_str_cat(s, v); | 154 | s = xs_str_cat(s, v); |
| 140 | } | 155 | } |
| 141 | else | 156 | else |