#include "markdown.h" #include #ifdef USE_MARKDOWN extern "C" { # include MARKDOWN_HEADER } # ifndef mkd_flags_are # ifndef MKD_DLEXTRA # define MKD_DLEXTRA 0x01000000 # endif # ifndef MKD_FENCEDCODE # define MKD_FENCEDCODE 0x02000000 # endif # endif #endif QString md2html(const QByteArray & src) { #ifdef USE_MARKDOWN static bool _is_mkd_init = false; if (src.isEmpty()) return QString(); if (!_is_mkd_init) { _is_mkd_init = true; mkd_initialize(); } # ifdef _MARKDOWN_D DWORD flagm = (MKD_DLEXTRA | MKD_FENCEDCODE); Document # endif # ifdef _MKDIO_D #ifdef mkd_flags_are mkd_flag_t * flagm = mkd_flags(); mkd_set_flag_num(flagm, MKD_DLEXTRA); mkd_set_flag_num(flagm, MKD_FENCEDCODE); #else mkd_flag_t flagm = (MKD_DLEXTRA | MKD_FENCEDCODE); #endif MMIOT # endif * doc = mkd_string(src.constData(), src.size(), 0); if (!doc) return QString(); mkd_compile(doc, flagm); char * html = 0; int len = mkd_document(doc, &html); if (!html) { mkd_cleanup(doc); return QString(); } QString ret = QString::fromUtf8(html, len); mkd_cleanup(doc); QString title = QTextStream(&ret, QIODevice::ReadOnly).readLine(); title = title.mid(title.indexOf(">")+1); title = title.left(title.indexOf("<")); QString header = "\n" "\n\n" "\n" "\n"; header.append("" + title + "\n"); header.append("\n\n"); ret.prepend(header); ret.append("\n\n"); return ret; #else return QString(); #endif }