File indexing completed on 2024-04-28 11:21:07
0001 #include <stdio.h> 0002 #include "markdown.h" 0003 0004 struct flagnames { 0005 mkd_flag_t flag; 0006 char *name; 0007 }; 0008 0009 static struct flagnames flagnames[] = { 0010 { MKD_NOLINKS, "!LINKS" }, 0011 { MKD_NOIMAGE, "!IMAGE" }, 0012 { MKD_NOPANTS, "!PANTS" }, 0013 { MKD_NOHTML, "!HTML" }, 0014 { MKD_STRICT, "STRICT" }, 0015 { MKD_TAGTEXT, "TAGTEXT" }, 0016 { MKD_NO_EXT, "!EXT" }, 0017 { MKD_CDATA, "CDATA" }, 0018 { MKD_NOSUPERSCRIPT, "!SUPERSCRIPT" }, 0019 { MKD_NORELAXED, "!RELAXED" }, 0020 { MKD_NOTABLES, "!TABLES" }, 0021 { MKD_NOSTRIKETHROUGH,"!STRIKETHROUGH" }, 0022 { MKD_TOC, "TOC" }, 0023 { MKD_1_COMPAT, "MKD_1_COMPAT" }, 0024 { MKD_AUTOLINK, "AUTOLINK" }, 0025 { MKD_SAFELINK, "SAFELINK" }, 0026 { MKD_NOHEADER, "!HEADER" }, 0027 { MKD_TABSTOP, "TABSTOP" }, 0028 { MKD_NODIVQUOTE, "!DIVQUOTE" }, 0029 { MKD_NOALPHALIST, "!ALPHALIST" }, 0030 { MKD_NODLIST, "!DLIST" }, 0031 { MKD_EXTRA_FOOTNOTE, "FOOTNOTE" }, 0032 { MKD_NOSTYLE, "!STYLE" }, 0033 { MKD_NODLDISCOUNT, "!DLDISCOUNT" }, 0034 { MKD_DLEXTRA, "DLEXTRA" }, 0035 { MKD_FENCEDCODE, "FENCEDCODE" }, 0036 { MKD_IDANCHOR, "IDANCHOR" }, 0037 { MKD_GITHUBTAGS, "GITHUBTAGS" }, 0038 { MKD_URLENCODEDANCHOR, "URLENCODEDANCHOR" }, 0039 { MKD_LATEX, "LATEX" }, 0040 { MKD_EXPLICITLIST, "EXPLICITLIST" }, 0041 }; 0042 #define NR(x) (sizeof x/sizeof x[0]) 0043 0044 0045 void 0046 mkd_flags_are(FILE *f, mkd_flag_t flags, int htmlplease) 0047 { 0048 int i; 0049 int not, set, even=1; 0050 char *name; 0051 0052 if ( htmlplease ) 0053 fprintf(f, "<table class=\"mkd_flags_are\">\n"); 0054 for (i=0; i < NR(flagnames); i++) { 0055 set = flags & flagnames[i].flag; 0056 name = flagnames[i].name; 0057 if ( not = (*name == '!') ) { 0058 ++name; 0059 set = !set; 0060 } 0061 0062 if ( htmlplease ) { 0063 if ( even ) fprintf(f, " <tr>"); 0064 fprintf(f, "<td>"); 0065 } 0066 else 0067 fputc(' ', f); 0068 0069 if ( !set ) 0070 fprintf(f, htmlplease ? "<s>" : "!"); 0071 0072 fprintf(f, "%s", name); 0073 0074 if ( htmlplease ) { 0075 if ( !set ) 0076 fprintf(f, "</s>"); 0077 fprintf(f, "</td>"); 0078 if ( !even ) fprintf(f, "</tr>\n"); 0079 } 0080 even = !even; 0081 } 0082 if ( htmlplease ) { 0083 if ( even ) fprintf(f, "</tr>\n"); 0084 fprintf(f, "</table>\n"); 0085 } 0086 } 0087 0088 void 0089 mkd_mmiot_flags(FILE *f, MMIOT *m, int htmlplease) 0090 { 0091 if ( m ) 0092 mkd_flags_are(f, m->flags, htmlplease); 0093 }