Text::Markdown::Discount
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.9 KiB

  1. #include <stdio.h>
  2. #include "markdown.h"
  3. struct flagnames {
  4. DWORD flag;
  5. char *name;
  6. };
  7. static struct flagnames flagnames[] = {
  8. { MKD_NOLINKS, "!LINKS" },
  9. { MKD_NOIMAGE, "!IMAGE" },
  10. { MKD_NOPANTS, "!PANTS" },
  11. { MKD_NOHTML, "!HTML" },
  12. { MKD_STRICT, "STRICT" },
  13. { MKD_TAGTEXT, "TAGTEXT" },
  14. { MKD_NO_EXT, "!EXT" },
  15. { MKD_CDATA, "CDATA" },
  16. { MKD_NOSUPERSCRIPT, "!SUPERSCRIPT" },
  17. { MKD_NORELAXED, "!RELAXED" },
  18. { MKD_NOTABLES, "!TABLES" },
  19. { MKD_NOSTRIKETHROUGH,"!STRIKETHROUGH" },
  20. { MKD_TOC, "TOC" },
  21. { MKD_1_COMPAT, "MKD_1_COMPAT" },
  22. { MKD_AUTOLINK, "AUTOLINK" },
  23. { MKD_SAFELINK, "SAFELINK" },
  24. { MKD_NOHEADER, "!HEADER" },
  25. { MKD_TABSTOP, "TABSTOP" },
  26. { MKD_NODIVQUOTE, "!DIVQUOTE" },
  27. { MKD_NOALPHALIST, "!ALPHALIST" },
  28. { MKD_NODLIST, "!DLIST" },
  29. { MKD_EXTRA_FOOTNOTE, "FOOTNOTE" },
  30. };
  31. #define NR(x) (sizeof x/sizeof x[0])
  32. void
  33. mkd_flags_are(FILE *f, DWORD flags, int htmlplease)
  34. {
  35. int i;
  36. int not, set, even=1;
  37. char *name;
  38. if ( htmlplease )
  39. fprintf(f, "<table class=\"mkd_flags_are\">\n");
  40. for (i=0; i < NR(flagnames); i++) {
  41. set = flags & flagnames[i].flag;
  42. name = flagnames[i].name;
  43. if ( not = (*name == '!') ) {
  44. ++name;
  45. set = !set;
  46. }
  47. if ( htmlplease ) {
  48. if ( even ) fprintf(f, " <tr>");
  49. fprintf(f, "<td>");
  50. }
  51. else
  52. fputc(' ', f);
  53. if ( !set )
  54. fprintf(f, htmlplease ? "<s>" : "!");
  55. fprintf(f, "%s", name);
  56. if ( htmlplease ) {
  57. if ( !set )
  58. fprintf(f, "</s>");
  59. fprintf(f, "</td>");
  60. if ( !even ) fprintf(f, "</tr>\n");
  61. }
  62. even = !even;
  63. }
  64. if ( htmlplease ) {
  65. if ( even ) fprintf(f, "</tr>\n");
  66. fprintf(f, "</table>\n");
  67. }
  68. }
  69. void
  70. mkd_mmiot_flags(FILE *f, MMIOT *m, int htmlplease)
  71. {
  72. if ( m )
  73. mkd_flags_are(f, m->flags, htmlplease);
  74. }