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.

85 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. { MKD_NOSTYLE, "!STYLE" },
  31. };
  32. #define NR(x) (sizeof x/sizeof x[0])
  33. void
  34. mkd_flags_are(FILE *f, DWORD flags, int htmlplease)
  35. {
  36. int i;
  37. int not, set, even=1;
  38. char *name;
  39. if ( htmlplease )
  40. fprintf(f, "<table class=\"mkd_flags_are\">\n");
  41. for (i=0; i < NR(flagnames); i++) {
  42. set = flags & flagnames[i].flag;
  43. name = flagnames[i].name;
  44. if ( not = (*name == '!') ) {
  45. ++name;
  46. set = !set;
  47. }
  48. if ( htmlplease ) {
  49. if ( even ) fprintf(f, " <tr>");
  50. fprintf(f, "<td>");
  51. }
  52. else
  53. fputc(' ', f);
  54. if ( !set )
  55. fprintf(f, htmlplease ? "<s>" : "!");
  56. fprintf(f, "%s", name);
  57. if ( htmlplease ) {
  58. if ( !set )
  59. fprintf(f, "</s>");
  60. fprintf(f, "</td>");
  61. if ( !even ) fprintf(f, "</tr>\n");
  62. }
  63. even = !even;
  64. }
  65. if ( htmlplease ) {
  66. if ( even ) fprintf(f, "</tr>\n");
  67. fprintf(f, "</table>\n");
  68. }
  69. }
  70. void
  71. mkd_mmiot_flags(FILE *f, MMIOT *m, int htmlplease)
  72. {
  73. if ( m )
  74. mkd_flags_are(f, m->flags, htmlplease);
  75. }