1#ifndef _MKDIO_D 2#define _MKDIO_D 3 4#include <stdio.h> 5 6@SCALAR_HEADER_INCLUDE@ 7 8typedef void MMIOT; 9 10typedef @DWORD@ mkd_flag_t; 11 12/* line builder for markdown() 13 */ 14MMIOT *mkd_in(FILE*,mkd_flag_t); /* assemble input from a file */ 15MMIOT *mkd_string(const char*,int,mkd_flag_t); /* assemble input from a buffer */ 16 17/* line builder for github flavoured markdown 18 */ 19MMIOT *gfm_in(FILE*,mkd_flag_t); /* assemble input from a file */ 20MMIOT *gfm_string(const char*,int,mkd_flag_t); /* assemble input from a buffer */ 21 22void mkd_basename(MMIOT*,char*); 23 24void mkd_initialize(); 25void mkd_with_html5_tags(); 26void mkd_shlib_destructor(); 27 28/* compilation, debugging, cleanup 29 */ 30int mkd_compile(MMIOT*, mkd_flag_t); 31void mkd_cleanup(MMIOT*); 32 33/* markup functions 34 */ 35int mkd_dump(MMIOT*, FILE*, mkd_flag_t, char*); 36int markdown(MMIOT*, FILE*, mkd_flag_t); 37int mkd_line(char *, int, char **, mkd_flag_t); 38int mkd_xhtmlpage(MMIOT*,mkd_flag_t,FILE*); 39 40/* header block access 41 */ 42char* mkd_doc_title(MMIOT*); 43char* mkd_doc_author(MMIOT*); 44char* mkd_doc_date(MMIOT*); 45 46/* compiled data access 47 */ 48int mkd_document(MMIOT*, char**); 49int mkd_toc(MMIOT*, char**); 50int mkd_css(MMIOT*, char **); 51int mkd_xml(char *, int, char **); 52int mkd_latextext(MMIOT*, char **); 53 54/* write-to-file functions 55 */ 56int mkd_generatehtml(MMIOT*,FILE*); 57int mkd_generatetoc(MMIOT*,FILE*); 58int mkd_generatexml(char *, int,FILE*); 59int mkd_generatecss(MMIOT*,FILE*); 60#define mkd_style mkd_generatecss 61int mkd_generateline(char *, int, FILE*, mkd_flag_t); 62#define mkd_text mkd_generateline 63 64/* url generator callbacks 65 */ 66typedef char * (*mkd_callback_t)(const char*, const int, void*); 67typedef void (*mkd_free_t)(char*, void*); 68 69void mkd_e_url(void *, mkd_callback_t); 70void mkd_e_flags(void *, mkd_callback_t); 71void mkd_e_anchor(void *, mkd_callback_t); 72void mkd_e_code_format(void*, mkd_callback_t); 73void mkd_e_free(void *, mkd_free_t ); 74void mkd_e_data(void *, void *); 75 76/* version#. 77 */ 78extern char markdown_version[]; 79void mkd_mmiot_flags(FILE *, MMIOT *, int); 80void mkd_flags_are(FILE*, mkd_flag_t, int); 81 82void mkd_ref_prefix(MMIOT*, char*); 83 84 85/* special flags for markdown() and mkd_text() 86 */ 87#define MKD_NOLINKS 0x00000001 /* don't do link processing, block <a> tags */ 88#define MKD_NOIMAGE 0x00000002 /* don't do image processing, block <img> */ 89#define MKD_NOPANTS 0x00000004 /* don't run smartypants() */ 90#define MKD_NOHTML 0x00000008 /* don't allow raw html through AT ALL */ 91#define MKD_STRICT 0x00000010 /* disable SUPERSCRIPT, RELAXED_EMPHASIS */ 92#define MKD_TAGTEXT 0x00000020 /* process text inside an html tag; no 93 * <em>, no <bold>, no html or [] expansion */ 94#define MKD_NO_EXT 0x00000040 /* don't allow pseudo-protocols */ 95#define MKD_NOEXT MKD_NO_EXT /* ^^^ (aliased for user convenience) */ 96#define MKD_CDATA 0x00000080 /* generate code for xml ![CDATA[...]] */ 97#define MKD_NOSUPERSCRIPT 0x00000100 /* no A^B */ 98#define MKD_NORELAXED 0x00000200 /* emphasis happens /everywhere/ */ 99#define MKD_NOTABLES 0x00000400 /* disallow tables */ 100#define MKD_NOSTRIKETHROUGH 0x00000800 /* forbid ~~strikethrough~~ */ 101#define MKD_TOC 0x00001000 /* do table-of-contents processing */ 102#define MKD_1_COMPAT 0x00002000 /* compatibility with MarkdownTest_1.0 */ 103#define MKD_AUTOLINK 0x00004000 /* make http://foo.com link even without <>s */ 104#define MKD_SAFELINK 0x00008000 /* paranoid check for link protocol */ 105#define MKD_NOHEADER 0x00010000 /* don't process header blocks */ 106#define MKD_TABSTOP 0x00020000 /* expand tabs to 4 spaces */ 107#define MKD_NODIVQUOTE 0x00040000 /* forbid >%class% blocks */ 108#define MKD_NOALPHALIST 0x00080000 /* forbid alphabetic lists */ 109#define MKD_NODLIST 0x00100000 /* forbid definition lists */ 110#define MKD_EXTRA_FOOTNOTE 0x00200000 /* enable markdown extra-style footnotes */ 111#define MKD_NOSTYLE 0x00400000 /* don't extract <style> blocks */ 112#define MKD_NODLDISCOUNT 0x00800000 /* disable discount-style definition lists */ 113#define MKD_DLEXTRA 0x01000000 /* enable extra-style definition lists */ 114#define MKD_FENCEDCODE 0x02000000 /* enabled fenced code blocks */ 115#define MKD_IDANCHOR 0x04000000 /* use id= anchors for TOC links */ 116#define MKD_GITHUBTAGS 0x08000000 /* allow dash and underscore in element names */ 117#define MKD_URLENCODEDANCHOR 0x10000000 /* urlencode non-identifier chars instead of replacing with dots */ 118#define MKD_LATEX 0x40000000 /* handle embedded LaTeX escapes */ 119#define MKD_EXPLICITLIST 0x80000000 /* don't combine numbered/bulletted lists */ 120 121#define MKD_EMBED MKD_NOLINKS|MKD_NOIMAGE|MKD_TAGTEXT 122 123/* special flags for mkd_in() and mkd_string() 124 */ 125 126 127#endif/*_MKDIO_D*/ 128