static void rndr_hrule(struct hoedown_buffer *ob, void *opaque) { struct hoedown_html_renderopt *options = opaque; if (ob->size) hoedown_buffer_putc(ob, '\n'); hoedown_buffer_puts(ob, USE_XHTML(options) ? "<hr/>\n" : "<hr>\n"); }
JNIEXPORT jstring JNICALL Java_com_commonsware_cwac_anddown_AndDown_markdownToHtml (JNIEnv *env, jobject o, jstring raw) { struct hoedown_buffer *ib, *ob; jstring result; hoedown_renderer *renderer; hoedown_markdown *markdown; const char* str; str = (*env)->GetStringUTFChars(env, raw, NULL); ib = hoedown_buffer_new(INPUT_UNIT); hoedown_buffer_puts(ib, str); ob = hoedown_buffer_new(OUTPUT_UNIT); (*env)->ReleaseStringUTFChars(env, raw, str); renderer = hoedown_html_renderer_new(0, 0); markdown = hoedown_markdown_new(0, 16, renderer); hoedown_markdown_render(ob, ib->data, ib->size, markdown); hoedown_markdown_free(markdown); result=(*env)->NewStringUTF(env, hoedown_buffer_cstr(ob)); /* cleanup */ hoedown_buffer_free(ib); hoedown_buffer_free(ob); return(result); }
static void rndr_hrule(hoedown_buffer *ob, const hoedown_renderer_data *data) { hoedown_html_renderer_state *state = data->opaque; if (ob->size) hoedown_buffer_putc(ob, '\n'); hoedown_buffer_puts(ob, USE_XHTML(state) ? "<hr/>\n" : "<hr>\n"); }
void mdRenderer::render(const QString markdownText) { if(markdownText.isEmpty()) { html =""; return; } QByteArray utf8Data = markdownText.toUtf8(); hoedown_buffer *doc = hoedown_buffer_new(utf8Data.length()); hoedown_buffer_puts(doc, utf8Data.data()); hoedown_buffer *out = hoedown_buffer_new(64); hoedown_renderer *renderer = hoedown_html_renderer_new(0, 16); hoedown_markdown *markdown = hoedown_markdown_new(0, 16, renderer); hoedown_markdown_render(out, doc->data, doc->size, markdown); hoedown_markdown_free(markdown); hoedown_html_renderer_free(renderer); html = QString::fromUtf8(hoedown_buffer_cstr(out)); hoedown_buffer_free(out); html="<!DOCTYPE html> <html> <head> <style type=\"text/css\">"+ style+ "</style>"+ "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"+ "</head> <body>"+ html+ "</body> </html>"; }
static int rndr_linebreak(struct hoedown_buffer *ob, void *opaque) { struct hoedown_html_renderopt *options = opaque; hoedown_buffer_puts(ob, USE_XHTML(options) ? "<br/>\n" : "<br>\n"); return 1; }
static int rndr_linebreak(hoedown_buffer *ob, void *opaque) { hoedown_html_renderer_state *state = opaque; hoedown_buffer_puts(ob, USE_XHTML(state) ? "<br/>\n" : "<br>\n"); return 1; }
void hoedown_escape_html(hoedown_buffer *ob, const uint8_t *data, size_t size, int secure) { size_t i = 0, mark; while (1) { mark = i; while (i < size && HTML_ESCAPE_TABLE[data[i]] == 0) i++; /* Optimization for cases where there's nothing to escape */ if (mark == 0 && i >= size) { hoedown_buffer_put(ob, data, size); return; } if (likely(i > mark)) hoedown_buffer_put(ob, data + mark, i - mark); if (i >= size) break; /* The forward slash is only escaped in secure mode */ if (!secure && data[i] == '/') { hoedown_buffer_putc(ob, '/'); } else { hoedown_buffer_puts(ob, HTML_ESCAPES[HTML_ESCAPE_TABLE[data[i]]]); } i++; } }
static void rndr_hrule(hoedown_buffer *ob, void *opaque) { hoedown_html_renderer_state *state = opaque; if (ob->size) hoedown_buffer_putc(ob, '\n'); hoedown_buffer_puts(ob, USE_XHTML(state) ? "<hr/>\n" : "<hr>\n"); }
static void rndr_header(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *attr, int level, const hoedown_renderer_data *data) { hoedown_header_type header_type = hoedown_document_header_type(((hoedown_context_test_renderer_state*) data->opaque)->doc); switch (header_type) { case HOEDOWN_HEADER_ATX: hoedown_buffer_puts(ob, "HOEDOWN_HEADER_ATX"); break; case HOEDOWN_HEADER_SETEXT: hoedown_buffer_puts(ob, "HOEDOWN_HEADER_SETEXT"); break; default: break; } hoedown_buffer_putc(ob, ' '); }
static int rndr_linebreak(hoedown_buffer *ob, const hoedown_renderer_data *data) { hoedown_html_renderer_state *state = data->opaque; hoedown_buffer_puts(ob, USE_XHTML(state) ? "<br/>\n" : "<br>\n"); return 1; }
static void rndr_test_link_attributes(hoedown_buffer *ob, const hoedown_buffer *url, const hoedown_renderer_data *data) { hoedown_buffer_puts(ob, " data-url=\""); hoedown_buffer_put(ob, url->data, url->size); hoedown_buffer_putc(ob, '\"'); }
static void rndr_blockcode(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_buffer *lang, const hoedown_buffer *attr, const hoedown_renderer_data *data) { uint8_t c = hoedown_document_fencedcode_char(((hoedown_context_test_renderer_state*) data->opaque)->doc); if (c) hoedown_buffer_putc(ob, c); else hoedown_buffer_puts(ob, "unfenced blockcode"); hoedown_buffer_putc(ob, ' '); }
static int rndr_link(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *attr, const hoedown_renderer_data *data) { const hoedown_buffer *id; hoedown_link_type link_type; id = hoedown_document_link_id(((hoedown_context_test_renderer_state*) data->opaque)->doc); hoedown_buffer_puts(ob, "id: "); if (id) hoedown_buffer_put(ob, id->data, id->size); else hoedown_buffer_puts(ob, "no id"); hoedown_buffer_putc(ob, ' '); link_type = hoedown_document_link_type(((hoedown_context_test_renderer_state*) data->opaque)->doc); switch (link_type) { case HOEDOWN_LINK_INLINE: hoedown_buffer_puts(ob, "HOEDOWN_LINK_INLINE"); break; case HOEDOWN_LINK_REFERENCE: hoedown_buffer_puts(ob, "HOEDOWN_LINK_REFERENCE"); break; case HOEDOWN_LINK_EMPTY_REFERENCE: hoedown_buffer_puts(ob, "HOEDOWN_LINK_EMPTY_REFERENCE"); break; case HOEDOWN_LINK_SHORTCUT: hoedown_buffer_puts(ob, "HOEDOWN_LINK_SHORTCUT"); break; default: break; } return 1; }
static int rndr_footnote_ref(hoedown_buffer *ob, unsigned int num, const hoedown_renderer_data *data) { const hoedown_buffer *id; id = hoedown_document_link_id(((hoedown_context_test_renderer_state*) data->opaque)->doc); if (id) { hoedown_buffer_puts(ob, "id: "); hoedown_buffer_put(ob, id->data, id->size); } hoedown_buffer_putc(ob, ' '); return 1; }
static void rndr_footnote_def(hoedown_buffer *ob, const hoedown_buffer *content, unsigned int num, const hoedown_renderer_data *data) { const hoedown_buffer *id; id = hoedown_document_footnote_id(((hoedown_context_test_renderer_state*) data->opaque)->doc); if (id) { hoedown_buffer_puts(ob, "id: "); hoedown_buffer_put(ob, id->data, id->size); } hoedown_buffer_putc(ob, ' '); if (content) hoedown_buffer_put(ob, content->data, content->size); }
static void rndr_paragraph(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data) { int list_depth, blockquote_depth; list_depth = hoedown_document_list_depth(((hoedown_context_test_renderer_state*) data->opaque)->doc); blockquote_depth = hoedown_document_blockquote_depth(((hoedown_context_test_renderer_state*) data->opaque)->doc); hoedown_buffer_printf(ob, "list depth: %d blockquote depth: %d ", list_depth, blockquote_depth); if (content) { hoedown_buffer_puts(ob, "paragraph: "); hoedown_buffer_put(ob, content->data, content->size); } hoedown_buffer_putc(ob, '\n'); }
MarkdownDocument *HoedownMarkdownConverter::createDocument(const QString &text, ConverterOptions options) { hoedown_buffer *doc = 0; if (text.length() > 0) { QString markdownText(text); QByteArray utf8Data = markdownText.toUtf8(); doc = hoedown_buffer_new(utf8Data.length()); hoedown_buffer_puts(doc, utf8Data.data()); } return new HoedownMarkdownDocument(doc, translateConverterOptions(options)); }
static void rndr_footnotes(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data) { hoedown_html_renderer_state *state = data->opaque; if (ob->size) hoedown_buffer_putc(ob, '\n'); HOEDOWN_BUFPUTSL(ob, "<div class=\"footnotes\">\n"); hoedown_buffer_puts(ob, USE_XHTML(state) ? "<hr/>\n" : "<hr>\n"); HOEDOWN_BUFPUTSL(ob, "<ol>\n"); if (content) hoedown_buffer_put(ob, content->data, content->size); HOEDOWN_BUFPUTSL(ob, "\n</ol>\n</div>\n"); }
static void rndr_footnotes(struct hoedown_buffer *ob, const struct hoedown_buffer *text, void *opaque) { struct hoedown_html_renderopt *options = opaque; if (ob->size) hoedown_buffer_putc(ob, '\n'); BUFPUTSL(ob, "<div class=\"footnotes\">\n"); hoedown_buffer_puts(ob, USE_XHTML(options) ? "<hr/>\n" : "<hr>\n"); BUFPUTSL(ob, "<ol>\n"); if (text) hoedown_buffer_put(ob, text->data, text->size); BUFPUTSL(ob, "\n</ol>\n</div>\n"); }
static int rndr_image(struct hoedown_buffer *ob, const struct hoedown_buffer *link, const struct hoedown_buffer *title, const struct hoedown_buffer *alt, void *opaque) { struct hoedown_html_renderopt *options = opaque; if (!link || !link->size) return 0; BUFPUTSL(ob, "<img src=\""); escape_href(ob, link->data, link->size); BUFPUTSL(ob, "\" alt=\""); if (alt && alt->size) escape_html(ob, alt->data, alt->size); if (title && title->size) { BUFPUTSL(ob, "\" title=\""); escape_html(ob, title->data, title->size); } hoedown_buffer_puts(ob, USE_XHTML(options) ? "\"/>" : "\">"); return 1; }
static int rndr_image(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *alt, void *opaque) { hoedown_html_renderer_state *state = opaque; if (!link || !link->size) return 0; HOEDOWN_BUFPUTSL(ob, "<img src=\""); escape_href(ob, link->data, link->size); HOEDOWN_BUFPUTSL(ob, "\" alt=\""); if (alt && alt->size) escape_html(ob, alt->data, alt->size); if (title && title->size) { HOEDOWN_BUFPUTSL(ob, "\" title=\""); escape_html(ob, title->data, title->size); } hoedown_buffer_puts(ob, USE_XHTML(state) ? "\"/>" : "\">"); return 1; }
void hoedown_escape_html(struct hoedown_buffer *ob, const uint8_t *src, size_t size, int secure) { size_t i = 0, org, esc = 0; while (i < size) { org = i; while (i < size && (esc = HTML_ESCAPE_TABLE[src[i]]) == 0) i++; if (i > org) { if (org == 0) { if (i >= size) { hoedown_buffer_put(ob, src, size); return; } hoedown_buffer_grow(ob, ESCAPE_GROW_FACTOR(size)); } hoedown_buffer_put(ob, src + org, i - org); } /* escaping */ if (i >= size) break; /* The forward slash is only escaped in secure mode */ if (src[i] == '/' && !secure) { hoedown_buffer_putc(ob, '/'); } else { hoedown_buffer_puts(ob, HTML_ESCAPES[esc]); } i++; } }