|
@@ -12,116 +12,6 @@
|
|
|
|
|
|
#include "snac.h"
|
|
|
|
|
|
-d_char *not_really_markdown(char *content, d_char **f_content)
|
|
|
-
|
|
|
-{
|
|
|
- d_char *s = NULL;
|
|
|
- int in_pre = 0;
|
|
|
- int in_blq = 0;
|
|
|
- xs *list;
|
|
|
- char *p, *v;
|
|
|
- xs *wrk = xs_str_new(NULL);
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- xs *sm = xs_regex_split(content,
|
|
|
- "(`[^`]+`|\\*\\*?[^\\*]+\\*?\\*|https?:/" "/[^[:space:]]+)");
|
|
|
- int n = 0;
|
|
|
-
|
|
|
- p = sm;
|
|
|
- while (xs_list_iter(&p, &v)) {
|
|
|
- if ((n & 0x1)) {
|
|
|
-
|
|
|
- if (xs_startswith(v, "`")) {
|
|
|
- xs *s1 = xs_crop(xs_dup(v), 1, -1);
|
|
|
- xs *s2 = xs_fmt("<code>%s</code>", s1);
|
|
|
- wrk = xs_str_cat(wrk, s2);
|
|
|
- }
|
|
|
- else
|
|
|
- if (xs_startswith(v, "**")) {
|
|
|
- xs *s1 = xs_crop(xs_dup(v), 2, -2);
|
|
|
- xs *s2 = xs_fmt("<b>%s</b>", s1);
|
|
|
- wrk = xs_str_cat(wrk, s2);
|
|
|
- }
|
|
|
- else
|
|
|
- if (xs_startswith(v, "*")) {
|
|
|
- xs *s1 = xs_crop(xs_dup(v), 1, -1);
|
|
|
- xs *s2 = xs_fmt("<i>%s</i>", s1);
|
|
|
- wrk = xs_str_cat(wrk, s2);
|
|
|
- }
|
|
|
- else
|
|
|
- if (xs_startswith(v, "http")) {
|
|
|
- xs *s1 = xs_fmt("<a href=\"%s\">%s</a>", v, v);
|
|
|
- wrk = xs_str_cat(wrk, s1);
|
|
|
- }
|
|
|
- else
|
|
|
-
|
|
|
- wrk = xs_str_cat(wrk, v);
|
|
|
- }
|
|
|
- else
|
|
|
-
|
|
|
- wrk = xs_str_cat(wrk, v);
|
|
|
-
|
|
|
- n++;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- p = list = xs_split(wrk, "\n");
|
|
|
-
|
|
|
- s = xs_str_new(NULL);
|
|
|
-
|
|
|
- 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, "<pre>");
|
|
|
- else
|
|
|
- s = xs_str_cat(s, "</pre>");
|
|
|
-
|
|
|
- in_pre = !in_pre;
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if (xs_startswith(ss, ">")) {
|
|
|
-
|
|
|
- ss = xs_strip(xs_crop(ss, 1, 0));
|
|
|
-
|
|
|
- if (!in_blq) {
|
|
|
- s = xs_str_cat(s, "<blockquote>");
|
|
|
- in_blq = 1;
|
|
|
- }
|
|
|
-
|
|
|
- s = xs_str_cat(s, ss);
|
|
|
- s = xs_str_cat(s, "<br>");
|
|
|
-
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if (in_blq) {
|
|
|
- s = xs_str_cat(s, "</blockquote>");
|
|
|
- in_blq = 0;
|
|
|
- }
|
|
|
-
|
|
|
- s = xs_str_cat(s, ss);
|
|
|
- s = xs_str_cat(s, "<br>");
|
|
|
- }
|
|
|
-
|
|
|
- if (in_blq)
|
|
|
- s = xs_str_cat(s, "</blockquote>");
|
|
|
- if (in_pre)
|
|
|
- s = xs_str_cat(s, "</pre>");
|
|
|
-
|
|
|
-
|
|
|
- s = xs_replace_i(s, "</blockquote><br>", "</blockquote>");
|
|
|
-
|
|
|
- *f_content = s;
|
|
|
-
|
|
|
- return *f_content;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
int login(snac *snac, char *headers)
|
|
|
|
|
|
{
|