From 4f3b70d9979b22cfc1a789b14602a12ee5c896c7 Mon Sep 17 00:00:00 2001 From: default Date: Tue, 27 Sep 2022 10:51:50 +0200 Subject: [PATCH] More work in not_really_markdown(). --- Makefile | 4 ++-- html.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- httpd.c | 3 +++ snac.c | 1 + 4 files changed, 64 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 52f30a6..d3a45c9 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/html.c b/html.c index 532c033..052656b 100644 --- a/html.c +++ b/html.c @@ -4,6 +4,7 @@ #include "xs.h" #include "xs_io.h" #include "xs_json.h" +#include "xs_regex.h" #include "snac.h" @@ -15,11 +16,66 @@ 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); + + /* 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("%s", 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("%s", 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("%s", s1); + + 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("%s", v, v); + + wrk = xs_replace_i(wrk, v, s2); + } + } + + /* now work on lines */ + + p = list = xs_split(wrk, "\n"); s = xs_str_new(NULL); - p = list = xs_split(content, "\n"); - while (xs_list_iter(&p, &v)) { xs *ss = xs_strip(xs_dup(v)); diff --git a/httpd.c b/httpd.c index 3746a7f..5b26122 100644 --- a/httpd.c +++ b/httpd.c @@ -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; } diff --git a/snac.c b/snac.c index 04c5944..d0ab4e9 100644 --- a/snac.c +++ b/snac.c @@ -12,6 +12,7 @@ #include "xs_socket.h" #include "xs_httpd.h" #include "xs_mime.h" +#include "xs_regex.h" #include "snac.h"