From 26a3b260d56cedf0ca56b331d8bec71d1a8b49f8 Mon Sep 17 00:00:00 2001 From: default Date: Tue, 27 Sep 2022 09:38:46 +0200 Subject: [PATCH] Started function not_really_markdown(). --- activitypub.c | 3 ++- html.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ main.c | 5 ++++ snac.h | 2 ++ 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/activitypub.c b/activitypub.c index 3a459bf..bd79041 100644 --- a/activitypub.c +++ b/activitypub.c @@ -32,7 +32,8 @@ int activitypub_request(snac *snac, char *url, d_char **data) /* ensure it's ActivityPub data */ ctype = xs_dict_get(response, "content-type"); - if (xs_str_in(ctype, "application/activity+json") != -1) + if (xs_str_in(ctype, "application/activity+json") != -1 || + xs_str_in(ctype, "application/ld+json") != -1) *data = xs_json_loads(payload); else status = 500; diff --git a/html.c b/html.c index 2646e7d..de9060c 100644 --- a/html.c +++ b/html.c @@ -7,3 +7,68 @@ #include "snac.h" +d_char *not_really_markdown(char *content, d_char **f_content) +/* formats a content using some Markdown rules */ +{ + d_char *s = NULL; + int in_pre = 0; + int in_blq = 0; + xs *list; + char *p, *v; + + s = xs_str_new(NULL); + + p = list = xs_split(content, "\n"); + + while (xs_list_iter(&p, &v)) { + xs *ss = xs_strip(xs_dup(v)); + + if (xs_startswith(ss, "```")) { + if (!in_pre) + s = xs_str_cat(s, "
");
+            else
+                s = xs_str_cat(s, "
"); + + in_pre = !in_pre; + continue; + } + + if (xs_startswith(ss, ">")) { + /* delete the > and subsequent spaces */ + ss = xs_strip(xs_crop(ss, 1, 0)); + + if (!in_blq) { + s = xs_str_cat(s, "
"); + in_blq = 1; + } + + s = xs_str_cat(s, ss); + s = xs_str_cat(s, "
"); + + continue; + } + + if (in_blq) { + s = xs_str_cat(s, "
"); + in_blq = 0; + } + + s = xs_str_cat(s, ss); + s = xs_str_cat(s, "
"); + } + + if (in_blq) + s = xs_str_cat(s, ""); + if (in_pre) + s = xs_str_cat(s, ""); + + /* some beauty fixes */ + if (xs_str_in(s, "
") != -1) { + xs *os = s; + s = xs_replace(os, "
", ""); + } + + *f_content = s; + + return *f_content; +} diff --git a/main.c b/main.c index eed5ea8..4fd0a87 100644 --- a/main.c +++ b/main.c @@ -153,6 +153,11 @@ int main(int argc, char *argv[]) printf("status: %d\n", status); + if (valid_status(status)) { + xs *j = xs_json_dumps_pp(data, 4); + printf("%s\n", j); + } + return 0; } diff --git a/snac.h b/snac.h index aef8d69..562a627 100644 --- a/snac.h +++ b/snac.h @@ -100,3 +100,5 @@ int activitypub_get_handler(d_char *req, char *q_path, int activitypub_post_handler(d_char *req, char *q_path, char *payload, int p_size, char **body, int *b_size, char **ctype); + +d_char *not_really_markdown(char *content, d_char **f_content);