Added markdown code tag support

This commit is contained in:
Dmitriy Shishkov 2023-09-13 08:43:33 +03:00
parent cbdfcae15b
commit d57a642d69
Signed by: dm1sh
GPG Key ID: 027994B0AA357688

View File

@ -7,10 +7,54 @@ int process_md(article_info article, char **out)
char *rest = strdup(article.content), *free_rest = rest;
char *buff;
int is_in_code = 0;
int is_in_list = 0;
while ((buff = strtok_r(rest, "\n", &rest)) != NULL)
{
if (strncmp(buff, "```", 3) == 0)
{
char *snippet;
if (is_in_code)
{
snippet = "</pre></code>\n";
is_in_code = 0;
}
else
{
snippet = "<pre><code>\n";
is_in_code = 1;
}
char *tmp_out = realloc(*out, strlen(*out) + strlen(snippet) + 1);
if (tmp_out == NULL)
{
perror("Couldn't allocate memory for new element");
continue;
}
*out = tmp_out;
strcat(*out, snippet);
continue;
}
if (is_in_code)
{
char *tmp_out = realloc(*out, strlen(*out) + strlen(buff) + strlen("<br/>") + 1);
if (tmp_out == NULL)
{
perror("Couldn't allocate memory for new element");
continue;
}
*out = tmp_out;
strcat(*out, buff);
strcat(*out, "<br/>");
continue;
}
if ((buff[0] == '*' && buff[1] == ' ') || (buff[0] == '-' && buff[1] == ' ') || (buff[0] == '+' && buff[1] == ' '))
{
char *begining = "";
@ -38,7 +82,7 @@ int process_md(article_info article, char **out)
free(append);
continue;
}
if (is_in_list)
{
char *tmp_out = realloc(*out, strlen(*out) + strlen("</ul>\n") + 1);