diff options
author | default <nobody@localhost> | 2022-09-27 10:51:50 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2022-09-27 10:51:57 +0200 |
commit | 4f3b70d9979b22cfc1a789b14602a12ee5c896c7 (patch) | |
tree | 289541acdb3fa7b38783a2e3ce9f10047ea05e05 | |
parent | 25258ed379a16a72778ed45cca2a297483d002e6 (diff) |
More work in not_really_markdown().
-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" |