summaryrefslogtreecommitdiff
path: root/format.c
diff options
context:
space:
mode:
authorGravatar default2024-05-26 09:27:36 +0200
committerGravatar default2024-05-26 09:27:36 +0200
commit8e0ccc6d76af26c83e5adebfaa18aef364e59975 (patch)
treed1c4e33cc6454e1119bb88e4b3f682082edafb9a /format.c
parentMinor code reformatting. (diff)
downloadpenes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.tar.gz
penes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.tar.xz
penes-snac2-8e0ccc6d76af26c83e5adebfaa18aef364e59975.zip
Added markdown-like links.
Diffstat (limited to 'format.c')
-rw-r--r--format.c17
1 files changed, 16 insertions, 1 deletions
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)
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