Looks like something is working!

master
Melroy van den Berg 2020-11-13 04:31:05 +01:00
parent dc33ebcd2f
commit c7505d83ac
4 changed files with 37 additions and 4 deletions

View File

@ -56,6 +56,8 @@ set(LIBRARY_SOURCES
${HEADERS}
)
set_property(GLOBAL PROPERTY COMMONMARKER_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
include_directories(. ${CMAKE_CURRENT_BINARY_DIR})
include_directories(
${PROJECT_BINARY_DIR}/extensions

View File

@ -42,5 +42,11 @@ else()
)
endif()
# Get the cmark binary dir for config.h
get_property(cmark_binary_dir GLOBAL PROPERTY COMMONMARKER_BINARY_DIR)
include_directories(${cmark_binary_dir})
include_directories(lib/commonmarker/src)
target_link_libraries (browser LINK_PUBLIC CommonMarker CommonMarkerExtensions)
target_link_libraries (browser PRIVATE Qt5::Widgets)

View File

@ -1,7 +1,6 @@
#include "markdown-render.h"
#include <cmark-gfm-core-extensions.h>
#include <string.h>
#include <QCoreApplication>
#include <QDebug>
@ -9,6 +8,15 @@
#include <QDir>
#include <QTextStream>
#include "node.h"
#include "syntax_extension.h"
static inline void outc(cmark_renderer *renderer, cmark_node *node,
cmark_escaping escape,
int32_t c, unsigned char nextc) {
cmark_render_code_point(renderer, c);
}
MarkdownRender::MarkdownRender()
{
QString exePath = QCoreApplication::applicationDirPath();
@ -25,7 +33,7 @@ MarkdownRender::MarkdownRender()
const char *LineCStr = line.toStdString().c_str();
file.close();
char *html = to_html(LineCStr);
char *html = toHTML(LineCStr);
printf("%s", html);
free(html);
@ -41,7 +49,7 @@ void MarkdownRender::addMarkdownExtension(cmark_parser *parser, char *extName) {
}
// A function to convert HTML to markdown
char * MarkdownRender::to_html(const char *markdown_string)
char * MarkdownRender::toHTML(const char *markdown_string)
{
int options = CMARK_OPT_DEFAULT; // You can also use CMARK_OPT_STRIKETHROUGH_DOUBLE_TILDE to enforce double tilde.
@ -61,13 +69,26 @@ char * MarkdownRender::to_html(const char *markdown_string)
cmark_parser_free(parser);
// no cmake_node_dump() ?
cmark_node_mem(doc);
// qDebug() << "AST" << doc->content.mem << endl;
// Render
char *html = cmark_render_html(doc, options, NULL);
char *something = renderWithMem(doc, options, 0, cmark_node_mem(doc));
cmark_node_free(doc);
return html;
}
int MarkdownRender::S_render_node(cmark_renderer *renderer, cmark_node *node,
cmark_event_type ev_type, int options)
{
qDebug() << "Type:" << node->type << endl;
}
char * MarkdownRender::renderWithMem(cmark_node *root, int options, int width, cmark_mem *mem)
{
return cmark_render(mem, root, options, width, outc, S_render_node);
}

View File

@ -2,6 +2,7 @@
#define MARKDOWN_RENDER_H
#include <cmark-gfm.h>
#include "render.h"
class MarkdownRender
{
@ -10,6 +11,9 @@ public:
private:
void addMarkdownExtension(cmark_parser *parser, char *extName);
char * to_html(const char *markdown_string);
char * toHTML(const char *markdown_string);
static int S_render_node(cmark_renderer *renderer, cmark_node *node,
cmark_event_type ev_type, int options);
char * renderWithMem(cmark_node *root, int options, int width, cmark_mem *mem);
};
#endif // MARKDOWN_RENDER_H