vnote/src/vmarkdownconverter.cpp
Le Tan a983026552 add Hoedown for markdown convertion
Signed-off-by: Le Tan <tamlokveer@gmail.com>
2016-10-23 10:35:31 +08:00

53 lines
1.7 KiB
C++

#include "vmarkdownconverter.h"
VMarkdownConverter::VMarkdownConverter()
{
hoedownHtmlFlags = (hoedown_html_flags)0;
nestingLevel = 16;
htmlRenderer = hoedown_html_renderer_new(hoedownHtmlFlags, nestingLevel);
tocRenderer = hoedown_html_toc_renderer_new(nestingLevel);
}
VMarkdownConverter::~VMarkdownConverter()
{
if (htmlRenderer) {
hoedown_html_renderer_free(htmlRenderer);
}
if (tocRenderer) {
hoedown_html_renderer_free(tocRenderer);
}
}
QString VMarkdownConverter::generateHtml(const QString &markdown, hoedown_extensions options)
{
if (markdown.isEmpty()) {
return QString();
}
hoedown_document *document = hoedown_document_new(htmlRenderer, options,
nestingLevel);
QByteArray data = markdown.toUtf8();
hoedown_buffer *outBuf = hoedown_buffer_new(data.size());
hoedown_document_render(document, outBuf, (const uint8_t *)data.constData(), data.size());
hoedown_document_free(document);
QString html = QString::fromUtf8(hoedown_buffer_cstr(outBuf));
hoedown_buffer_free(outBuf);
return html;
}
QString VMarkdownConverter::generateToc(const QString &markdown, hoedown_extensions options)
{
if (markdown.isEmpty()) {
return QString();
}
hoedown_document *document = hoedown_document_new(tocRenderer, options, nestingLevel);
QByteArray data = markdown.toUtf8();
hoedown_buffer *outBuf = hoedown_buffer_new(16);
hoedown_document_render(document, outBuf, (const uint8_t *)data.constData(), data.size());
hoedown_document_free(document);
QString toc = QString::fromUtf8(hoedown_buffer_cstr(outBuf));
hoedown_buffer_free(outBuf);
return toc;
}