diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | html.c | 60 | ||||
-rw-r--r-- | httpd.c | 3 | ||||
-rw-r--r-- | snac.c | 1 |
4 files changed, 64 insertions, 4 deletions
@@ -17,11 +17,11 @@ dep: activitypub.o: activitypub.c xs.h xs_encdec.h xs_json.h xs_curl.h \ xs_mime.h xs_openssl.h snac.h data.o: data.c xs.h xs_io.h xs_json.h xs_openssl.h snac.h -html.o: html.c xs.h xs_io.h xs_json.h snac.h +html.o: html.c xs.h xs_io.h xs_json.h xs_regex.h snac.h http.o: http.c xs.h xs_io.h xs_encdec.h xs_openssl.h xs_curl.h snac.h httpd.o: httpd.c xs.h xs_io.h xs_encdec.h xs_json.h xs_socket.h \ xs_httpd.h snac.h main.o: main.c xs.h xs_io.h xs_encdec.h xs_json.h snac.h snac.o: snac.c xs.h xs_io.h xs_encdec.h xs_json.h xs_curl.h xs_openssl.h \ - xs_socket.h xs_httpd.h xs_mime.h snac.h + xs_socket.h xs_httpd.h xs_mime.h xs_regex.h snac.h webfinger.o: webfinger.c xs.h xs_encdec.h xs_json.h xs_curl.h snac.h @@ -4,6 +4,7 @@ #include "xs.h" #include "xs_io.h" #include "xs_json.h" +#include "xs_regex.h" #include "snac.h" @@ -15,10 +16,65 @@ d_char *not_really_markdown(char *content, d_char **f_content) int in_blq = 0; xs *list; char *p, *v; + xs *wrk = xs_dup(content); - s = xs_str_new(NULL); + /* global changes */ + { + /* backticks */ + xs *ml = xs_regex_matchall(wrk, "`[^`]+`"); + p = ml; + + while (xs_list_iter(&p, &v)) { + xs *s1 = xs_crop(xs_dup(v), 1, -1); + xs *s2 = xs_fmt("<code>%s</code>", s1); + + wrk = xs_replace_i(wrk, v, s2); + } + } + + { + /* double asterisks */ + xs *ml = xs_regex_matchall(wrk, "\\*\\*[^\\*]+\\*\\*"); + p = ml; + + while (xs_list_iter(&p, &v)) { + xs *s1 = xs_crop(xs_dup(v), 2, -2); + xs *s2 = xs_fmt("<b>%s</b>", s1); + + wrk = xs_replace_i(wrk, v, s2); + } + } + + { + /* single asterisks */ + xs *ml = xs_regex_matchall(wrk, "\\*[^\\*]+\\*"); + p = ml; + + while (xs_list_iter(&p, &v)) { + xs *s1 = xs_crop(xs_dup(v), 1, -1); + xs *s2 = xs_fmt("<i>%s</i>", s1); - p = list = xs_split(content, "\n"); + wrk = xs_replace_i(wrk, v, s2); + } + } + + { + /* urls */ + xs *ml = xs_regex_matchall(wrk, "https?:/" "/[^ ]+"); + p = ml; + + while (xs_list_iter(&p, &v)) { + xs *s2 = xs_fmt("<a href=\"%s\">%s</a>", v, v); + + wrk = xs_replace_i(wrk, v, s2); + } + } + + /* now work on lines */ + + p = list = xs_split(wrk, "\n"); + + s = xs_str_new(NULL); while (xs_list_iter(&p, &v)) { xs *ss = xs_strip(xs_dup(v)); @@ -79,6 +79,9 @@ int server_get_handler(d_char *req, char *q_path, *ctype = "image/png"; } + if (status != 0) + srv_debug(1, xs_fmt("server_get_handler '%s' %d", q_path, status)); + return status; } @@ -12,6 +12,7 @@ #include "xs_socket.h" #include "xs_httpd.h" #include "xs_mime.h" +#include "xs_regex.h" #include "snac.h" |