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