commonmarker 0.17.7 → 0.17.7.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of commonmarker might be problematic. Click here for more details.

Files changed (337) hide show
  1. checksums.yaml +4 -4
  2. data/commonmarker.gemspec +1 -1
  3. data/lib/commonmarker/version.rb +1 -1
  4. metadata +2 -335
  5. data/ext/commonmarker/cmark-upstream/CMakeLists.txt +0 -44
  6. data/ext/commonmarker/cmark-upstream/COPYING +0 -170
  7. data/ext/commonmarker/cmark-upstream/FindAsan.cmake +0 -74
  8. data/ext/commonmarker/cmark-upstream/Makefile +0 -226
  9. data/ext/commonmarker/cmark-upstream/Makefile.nmake +0 -36
  10. data/ext/commonmarker/cmark-upstream/README.md +0 -206
  11. data/ext/commonmarker/cmark-upstream/api_test/CMakeLists.txt +0 -26
  12. data/ext/commonmarker/cmark-upstream/api_test/cplusplus.cpp +0 -15
  13. data/ext/commonmarker/cmark-upstream/api_test/cplusplus.h +0 -16
  14. data/ext/commonmarker/cmark-upstream/api_test/harness.c +0 -110
  15. data/ext/commonmarker/cmark-upstream/api_test/harness.h +0 -35
  16. data/ext/commonmarker/cmark-upstream/api_test/main.c +0 -1116
  17. data/ext/commonmarker/cmark-upstream/appveyor.yml +0 -17
  18. data/ext/commonmarker/cmark-upstream/bench/samples/block-bq-flat.md +0 -16
  19. data/ext/commonmarker/cmark-upstream/bench/samples/block-bq-nested.md +0 -13
  20. data/ext/commonmarker/cmark-upstream/bench/samples/block-code.md +0 -11
  21. data/ext/commonmarker/cmark-upstream/bench/samples/block-fences.md +0 -14
  22. data/ext/commonmarker/cmark-upstream/bench/samples/block-heading.md +0 -9
  23. data/ext/commonmarker/cmark-upstream/bench/samples/block-hr.md +0 -10
  24. data/ext/commonmarker/cmark-upstream/bench/samples/block-html.md +0 -32
  25. data/ext/commonmarker/cmark-upstream/bench/samples/block-lheading.md +0 -8
  26. data/ext/commonmarker/cmark-upstream/bench/samples/block-list-flat.md +0 -67
  27. data/ext/commonmarker/cmark-upstream/bench/samples/block-list-nested.md +0 -36
  28. data/ext/commonmarker/cmark-upstream/bench/samples/block-ref-flat.md +0 -15
  29. data/ext/commonmarker/cmark-upstream/bench/samples/block-ref-nested.md +0 -17
  30. data/ext/commonmarker/cmark-upstream/bench/samples/inline-autolink.md +0 -14
  31. data/ext/commonmarker/cmark-upstream/bench/samples/inline-backticks.md +0 -3
  32. data/ext/commonmarker/cmark-upstream/bench/samples/inline-em-flat.md +0 -5
  33. data/ext/commonmarker/cmark-upstream/bench/samples/inline-em-nested.md +0 -5
  34. data/ext/commonmarker/cmark-upstream/bench/samples/inline-em-worst.md +0 -5
  35. data/ext/commonmarker/cmark-upstream/bench/samples/inline-entity.md +0 -11
  36. data/ext/commonmarker/cmark-upstream/bench/samples/inline-escape.md +0 -15
  37. data/ext/commonmarker/cmark-upstream/bench/samples/inline-html.md +0 -44
  38. data/ext/commonmarker/cmark-upstream/bench/samples/inline-links-flat.md +0 -23
  39. data/ext/commonmarker/cmark-upstream/bench/samples/inline-links-nested.md +0 -13
  40. data/ext/commonmarker/cmark-upstream/bench/samples/inline-newlines.md +0 -24
  41. data/ext/commonmarker/cmark-upstream/bench/samples/lorem1.md +0 -13
  42. data/ext/commonmarker/cmark-upstream/bench/samples/rawtabs.md +0 -18
  43. data/ext/commonmarker/cmark-upstream/bench/statistics.py +0 -595
  44. data/ext/commonmarker/cmark-upstream/bench/stats.py +0 -19
  45. data/ext/commonmarker/cmark-upstream/benchmarks.md +0 -33
  46. data/ext/commonmarker/cmark-upstream/build/CMakeCache.txt +0 -478
  47. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CMakeCCompiler.cmake +0 -71
  48. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CMakeCXXCompiler.cmake +0 -73
  49. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_C.bin +0 -0
  50. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_CXX.bin +0 -0
  51. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CMakeSystem.cmake +0 -15
  52. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CompilerIdC/CMakeCCompilerId.c +0 -567
  53. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CompilerIdC/a.out +0 -0
  54. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -539
  55. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/3.9.6/CompilerIdCXX/a.out +0 -0
  56. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  57. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/CMakeError.log +0 -18
  58. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/CMakeOutput.log +0 -709
  59. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/Makefile.cmake +0 -157
  60. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/Makefile2 +0 -391
  61. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/TargetDirectories.txt +0 -48
  62. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/cmake.check_cache +0 -1
  63. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/feature_tests.bin +0 -0
  64. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/feature_tests.c +0 -34
  65. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/feature_tests.cxx +0 -405
  66. data/ext/commonmarker/cmark-upstream/build/CMakeFiles/progress.marks +0 -1
  67. data/ext/commonmarker/cmark-upstream/build/CTestTestfile.cmake +0 -11
  68. data/ext/commonmarker/cmark-upstream/build/Makefile +0 -280
  69. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  70. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/C.includecache +0 -134
  71. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/CXX.includecache +0 -38
  72. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/DependInfo.cmake +0 -38
  73. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/build.make +0 -169
  74. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/cmake_clean.cmake +0 -12
  75. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/cplusplus.cpp.o +0 -0
  76. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/depend.internal +0 -28
  77. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/depend.make +0 -28
  78. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/flags.make +0 -17
  79. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/harness.c.o +0 -0
  80. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/link.txt +0 -1
  81. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/main.c.o +0 -0
  82. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/api_test.dir/progress.make +0 -5
  83. data/ext/commonmarker/cmark-upstream/build/api_test/CMakeFiles/progress.marks +0 -1
  84. data/ext/commonmarker/cmark-upstream/build/api_test/Makefile +0 -302
  85. data/ext/commonmarker/cmark-upstream/build/api_test/api_test +0 -0
  86. data/ext/commonmarker/cmark-upstream/build/api_test/cmake_install.cmake +0 -29
  87. data/ext/commonmarker/cmark-upstream/build/cmake_install.cmake +0 -49
  88. data/ext/commonmarker/cmark-upstream/build/compile_commands.json +0 -352
  89. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  90. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/Export/lib/cmake-gfmextensions/cmark-gfmextensions-release.cmake +0 -30
  91. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/Export/lib/cmake-gfmextensions/cmark-gfmextensions.cmake +0 -108
  92. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/C.includecache +0 -246
  93. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/DependInfo.cmake +0 -36
  94. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/autolink.c.o +0 -0
  95. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/build.make +0 -253
  96. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/cmake_clean.cmake +0 -16
  97. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/core-extensions.c.o +0 -0
  98. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/depend.internal +0 -96
  99. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/depend.make +0 -96
  100. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/ext_scanners.c.o +0 -0
  101. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/flags.make +0 -10
  102. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/link.txt +0 -1
  103. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/progress.make +0 -8
  104. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/strikethrough.c.o +0 -0
  105. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/table.c.o +0 -0
  106. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions.dir/tagfilter.c.o +0 -0
  107. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/C.includecache +0 -246
  108. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/DependInfo.cmake +0 -29
  109. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/autolink.c.o +0 -0
  110. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/build.make +0 -249
  111. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/cmake_clean.cmake +0 -15
  112. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/cmake_clean_target.cmake +0 -3
  113. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/core-extensions.c.o +0 -0
  114. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/depend.internal +0 -96
  115. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/depend.make +0 -96
  116. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/ext_scanners.c.o +0 -0
  117. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/flags.make +0 -10
  118. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/link.txt +0 -2
  119. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/progress.make +0 -8
  120. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/strikethrough.c.o +0 -0
  121. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/table.c.o +0 -0
  122. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/libcmark-gfmextensions_static.dir/tagfilter.c.o +0 -0
  123. data/ext/commonmarker/cmark-upstream/build/extensions/CMakeFiles/progress.marks +0 -1
  124. data/ext/commonmarker/cmark-upstream/build/extensions/Makefile +0 -426
  125. data/ext/commonmarker/cmark-upstream/build/extensions/cmake_install.cmake +0 -84
  126. data/ext/commonmarker/cmark-upstream/build/extensions/cmarkextensions_export.h +0 -42
  127. data/ext/commonmarker/cmark-upstream/build/extensions/libcmark-gfmextensions.0.28.3.gfm.11.dylib +0 -0
  128. data/ext/commonmarker/cmark-upstream/build/extensions/libcmark-gfmextensions.a +0 -0
  129. data/ext/commonmarker/cmark-upstream/build/extensions/libcmark-gfmextensions.dylib +0 -1
  130. data/ext/commonmarker/cmark-upstream/build/man/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  131. data/ext/commonmarker/cmark-upstream/build/man/CMakeFiles/progress.marks +0 -1
  132. data/ext/commonmarker/cmark-upstream/build/man/Makefile +0 -196
  133. data/ext/commonmarker/cmark-upstream/build/man/cmake_install.cmake +0 -37
  134. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  135. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/Export/lib/cmake/cmark-gfm-release.cmake +0 -38
  136. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/Export/lib/cmake/cmark-gfm.cmake +0 -95
  137. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/C.includecache +0 -156
  138. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/DependInfo.cmake +0 -30
  139. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/build.make +0 -115
  140. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/cmake_clean.cmake +0 -10
  141. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/depend.internal +0 -20
  142. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/depend.make +0 -20
  143. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/flags.make +0 -10
  144. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/link.txt +0 -1
  145. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/main.c.o +0 -0
  146. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/cmark-gfm.dir/progress.make +0 -3
  147. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/C.includecache +0 -612
  148. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/DependInfo.cmake +0 -60
  149. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/arena.c.o +0 -0
  150. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/blocks.c.o +0 -0
  151. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/buffer.c.o +0 -0
  152. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/build.make +0 -819
  153. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/cmake_clean.cmake +0 -37
  154. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/cmark.c.o +0 -0
  155. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/cmark_ctype.c.o +0 -0
  156. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/commonmark.c.o +0 -0
  157. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/depend.internal +0 -319
  158. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/depend.make +0 -319
  159. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/flags.make +0 -10
  160. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/footnotes.c.o +0 -0
  161. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/houdini_href_e.c.o +0 -0
  162. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/houdini_html_e.c.o +0 -0
  163. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/houdini_html_u.c.o +0 -0
  164. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/html.c.o +0 -0
  165. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/inlines.c.o +0 -0
  166. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/iterator.c.o +0 -0
  167. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/latex.c.o +0 -0
  168. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/link.txt +0 -1
  169. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/linked_list.c.o +0 -0
  170. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/man.c.o +0 -0
  171. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/map.c.o +0 -0
  172. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/node.c.o +0 -0
  173. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/plaintext.c.o +0 -0
  174. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/plugin.c.o +0 -0
  175. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/progress.make +0 -29
  176. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/references.c.o +0 -0
  177. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/registry.c.o +0 -0
  178. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/render.c.o +0 -0
  179. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/scanners.c.o +0 -0
  180. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/syntax_extension.c.o +0 -0
  181. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/utf8.c.o +0 -0
  182. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm.dir/xml.c.o +0 -0
  183. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/C.includecache +0 -612
  184. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/DependInfo.cmake +0 -54
  185. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/arena.c.o +0 -0
  186. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/blocks.c.o +0 -0
  187. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/buffer.c.o +0 -0
  188. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/build.make +0 -816
  189. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/cmake_clean.cmake +0 -36
  190. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/cmake_clean_target.cmake +0 -3
  191. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/cmark.c.o +0 -0
  192. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/cmark_ctype.c.o +0 -0
  193. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/commonmark.c.o +0 -0
  194. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/depend.internal +0 -319
  195. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/depend.make +0 -319
  196. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/flags.make +0 -10
  197. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/footnotes.c.o +0 -0
  198. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/houdini_href_e.c.o +0 -0
  199. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/houdini_html_e.c.o +0 -0
  200. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/houdini_html_u.c.o +0 -0
  201. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/html.c.o +0 -0
  202. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/inlines.c.o +0 -0
  203. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/iterator.c.o +0 -0
  204. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/latex.c.o +0 -0
  205. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/link.txt +0 -2
  206. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/linked_list.c.o +0 -0
  207. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/man.c.o +0 -0
  208. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/map.c.o +0 -0
  209. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/node.c.o +0 -0
  210. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/plaintext.c.o +0 -0
  211. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/plugin.c.o +0 -0
  212. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/progress.make +0 -29
  213. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/references.c.o +0 -0
  214. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/registry.c.o +0 -0
  215. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/render.c.o +0 -0
  216. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/scanners.c.o +0 -0
  217. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/syntax_extension.c.o +0 -0
  218. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/utf8.c.o +0 -0
  219. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/libcmark-gfm_static.dir/xml.c.o +0 -0
  220. data/ext/commonmarker/cmark-upstream/build/src/CMakeFiles/progress.marks +0 -1
  221. data/ext/commonmarker/cmark-upstream/build/src/Makefile +0 -1165
  222. data/ext/commonmarker/cmark-upstream/build/src/cmake_install.cmake +0 -97
  223. data/ext/commonmarker/cmark-upstream/build/src/cmark-gfm +0 -0
  224. data/ext/commonmarker/cmark-upstream/build/src/cmark_export.h +0 -42
  225. data/ext/commonmarker/cmark-upstream/build/src/cmark_version.h +0 -8
  226. data/ext/commonmarker/cmark-upstream/build/src/config.h +0 -76
  227. data/ext/commonmarker/cmark-upstream/build/src/libcmark-gfm.0.28.3.gfm.11.dylib +0 -0
  228. data/ext/commonmarker/cmark-upstream/build/src/libcmark-gfm.a +0 -0
  229. data/ext/commonmarker/cmark-upstream/build/src/libcmark-gfm.dylib +0 -1
  230. data/ext/commonmarker/cmark-upstream/build/src/libcmark-gfm.pc +0 -10
  231. data/ext/commonmarker/cmark-upstream/build/testdir/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  232. data/ext/commonmarker/cmark-upstream/build/testdir/CMakeFiles/progress.marks +0 -1
  233. data/ext/commonmarker/cmark-upstream/build/testdir/CTestTestfile.cmake +0 -17
  234. data/ext/commonmarker/cmark-upstream/build/testdir/Makefile +0 -196
  235. data/ext/commonmarker/cmark-upstream/build/testdir/cmake_install.cmake +0 -29
  236. data/ext/commonmarker/cmark-upstream/changelog.txt +0 -964
  237. data/ext/commonmarker/cmark-upstream/data/CaseFolding.txt +0 -1495
  238. data/ext/commonmarker/cmark-upstream/extensions/CMakeLists.txt +0 -124
  239. data/ext/commonmarker/cmark-upstream/extensions/autolink.c +0 -421
  240. data/ext/commonmarker/cmark-upstream/extensions/autolink.h +0 -8
  241. data/ext/commonmarker/cmark-upstream/extensions/core-extensions.c +0 -25
  242. data/ext/commonmarker/cmark-upstream/extensions/core-extensions.h +0 -25
  243. data/ext/commonmarker/cmark-upstream/extensions/ext_scanners.c +0 -941
  244. data/ext/commonmarker/cmark-upstream/extensions/ext_scanners.h +0 -22
  245. data/ext/commonmarker/cmark-upstream/extensions/ext_scanners.re +0 -74
  246. data/ext/commonmarker/cmark-upstream/extensions/strikethrough.c +0 -157
  247. data/ext/commonmarker/cmark-upstream/extensions/strikethrough.h +0 -9
  248. data/ext/commonmarker/cmark-upstream/extensions/table.c +0 -683
  249. data/ext/commonmarker/cmark-upstream/extensions/table.h +0 -8
  250. data/ext/commonmarker/cmark-upstream/extensions/tagfilter.c +0 -60
  251. data/ext/commonmarker/cmark-upstream/extensions/tagfilter.h +0 -8
  252. data/ext/commonmarker/cmark-upstream/man/CMakeLists.txt +0 -10
  253. data/ext/commonmarker/cmark-upstream/man/make_man_page.py +0 -133
  254. data/ext/commonmarker/cmark-upstream/man/man1/cmark-gfm.1 +0 -78
  255. data/ext/commonmarker/cmark-upstream/man/man3/cmark-gfm.3 +0 -989
  256. data/ext/commonmarker/cmark-upstream/nmake.bat +0 -1
  257. data/ext/commonmarker/cmark-upstream/src/CMakeLists.txt +0 -224
  258. data/ext/commonmarker/cmark-upstream/src/arena.c +0 -103
  259. data/ext/commonmarker/cmark-upstream/src/blocks.c +0 -1519
  260. data/ext/commonmarker/cmark-upstream/src/buffer.c +0 -279
  261. data/ext/commonmarker/cmark-upstream/src/buffer.h +0 -116
  262. data/ext/commonmarker/cmark-upstream/src/case_fold_switch.inc +0 -4327
  263. data/ext/commonmarker/cmark-upstream/src/chunk.h +0 -136
  264. data/ext/commonmarker/cmark-upstream/src/cmark.c +0 -55
  265. data/ext/commonmarker/cmark-upstream/src/cmark.h +0 -789
  266. data/ext/commonmarker/cmark-upstream/src/cmark_ctype.c +0 -44
  267. data/ext/commonmarker/cmark-upstream/src/cmark_ctype.h +0 -33
  268. data/ext/commonmarker/cmark-upstream/src/cmark_extension_api.h +0 -719
  269. data/ext/commonmarker/cmark-upstream/src/cmark_version.h.in +0 -8
  270. data/ext/commonmarker/cmark-upstream/src/commonmark.c +0 -508
  271. data/ext/commonmarker/cmark-upstream/src/config.h.in +0 -76
  272. data/ext/commonmarker/cmark-upstream/src/entities.inc +0 -2138
  273. data/ext/commonmarker/cmark-upstream/src/footnotes.c +0 -40
  274. data/ext/commonmarker/cmark-upstream/src/footnotes.h +0 -25
  275. data/ext/commonmarker/cmark-upstream/src/houdini.h +0 -57
  276. data/ext/commonmarker/cmark-upstream/src/houdini_href_e.c +0 -100
  277. data/ext/commonmarker/cmark-upstream/src/houdini_html_e.c +0 -66
  278. data/ext/commonmarker/cmark-upstream/src/houdini_html_u.c +0 -149
  279. data/ext/commonmarker/cmark-upstream/src/html.c +0 -457
  280. data/ext/commonmarker/cmark-upstream/src/html.h +0 -27
  281. data/ext/commonmarker/cmark-upstream/src/inlines.c +0 -1594
  282. data/ext/commonmarker/cmark-upstream/src/inlines.h +0 -29
  283. data/ext/commonmarker/cmark-upstream/src/iterator.c +0 -159
  284. data/ext/commonmarker/cmark-upstream/src/iterator.h +0 -27
  285. data/ext/commonmarker/cmark-upstream/src/latex.c +0 -466
  286. data/ext/commonmarker/cmark-upstream/src/libcmark-gfm.pc.in +0 -10
  287. data/ext/commonmarker/cmark-upstream/src/linked_list.c +0 -37
  288. data/ext/commonmarker/cmark-upstream/src/main.c +0 -276
  289. data/ext/commonmarker/cmark-upstream/src/man.c +0 -278
  290. data/ext/commonmarker/cmark-upstream/src/map.c +0 -122
  291. data/ext/commonmarker/cmark-upstream/src/map.h +0 -42
  292. data/ext/commonmarker/cmark-upstream/src/node.c +0 -965
  293. data/ext/commonmarker/cmark-upstream/src/node.h +0 -116
  294. data/ext/commonmarker/cmark-upstream/src/parser.h +0 -57
  295. data/ext/commonmarker/cmark-upstream/src/plaintext.c +0 -213
  296. data/ext/commonmarker/cmark-upstream/src/plugin.c +0 -36
  297. data/ext/commonmarker/cmark-upstream/src/plugin.h +0 -34
  298. data/ext/commonmarker/cmark-upstream/src/references.c +0 -42
  299. data/ext/commonmarker/cmark-upstream/src/references.h +0 -26
  300. data/ext/commonmarker/cmark-upstream/src/registry.c +0 -63
  301. data/ext/commonmarker/cmark-upstream/src/registry.h +0 -24
  302. data/ext/commonmarker/cmark-upstream/src/render.c +0 -202
  303. data/ext/commonmarker/cmark-upstream/src/render.h +0 -63
  304. data/ext/commonmarker/cmark-upstream/src/scanners.c +0 -18195
  305. data/ext/commonmarker/cmark-upstream/src/scanners.h +0 -64
  306. data/ext/commonmarker/cmark-upstream/src/scanners.re +0 -341
  307. data/ext/commonmarker/cmark-upstream/src/syntax_extension.c +0 -139
  308. data/ext/commonmarker/cmark-upstream/src/syntax_extension.h +0 -32
  309. data/ext/commonmarker/cmark-upstream/src/utf8.c +0 -317
  310. data/ext/commonmarker/cmark-upstream/src/utf8.h +0 -35
  311. data/ext/commonmarker/cmark-upstream/src/xml.c +0 -174
  312. data/ext/commonmarker/cmark-upstream/suppressions +0 -10
  313. data/ext/commonmarker/cmark-upstream/test/CMakeLists.txt +0 -98
  314. data/ext/commonmarker/cmark-upstream/test/afl_test_cases/test.md +0 -49
  315. data/ext/commonmarker/cmark-upstream/test/cmark-fuzz.c +0 -28
  316. data/ext/commonmarker/cmark-upstream/test/cmark.py +0 -103
  317. data/ext/commonmarker/cmark-upstream/test/entity_tests.py +0 -67
  318. data/ext/commonmarker/cmark-upstream/test/extensions.txt +0 -674
  319. data/ext/commonmarker/cmark-upstream/test/fuzzing_dictionary +0 -49
  320. data/ext/commonmarker/cmark-upstream/test/normalize.py +0 -194
  321. data/ext/commonmarker/cmark-upstream/test/pathological_tests.py +0 -145
  322. data/ext/commonmarker/cmark-upstream/test/regression.txt +0 -128
  323. data/ext/commonmarker/cmark-upstream/test/roundtrip_tests.py +0 -50
  324. data/ext/commonmarker/cmark-upstream/test/run-cmark-fuzz +0 -4
  325. data/ext/commonmarker/cmark-upstream/test/smart_punct.txt +0 -177
  326. data/ext/commonmarker/cmark-upstream/test/spec.txt +0 -9919
  327. data/ext/commonmarker/cmark-upstream/test/spec_tests.py +0 -152
  328. data/ext/commonmarker/cmark-upstream/toolchain-mingw32.cmake +0 -17
  329. data/ext/commonmarker/cmark-upstream/tools/Dockerfile +0 -41
  330. data/ext/commonmarker/cmark-upstream/tools/appveyor-build.bat +0 -13
  331. data/ext/commonmarker/cmark-upstream/tools/make_entities_inc.py +0 -32
  332. data/ext/commonmarker/cmark-upstream/tools/mkcasefold.pl +0 -22
  333. data/ext/commonmarker/cmark-upstream/why-cmark-and-not-x.md +0 -104
  334. data/ext/commonmarker/cmark-upstream/wrappers/wrapper.js +0 -6
  335. data/ext/commonmarker/cmark-upstream/wrappers/wrapper.py +0 -37
  336. data/ext/commonmarker/cmark-upstream/wrappers/wrapper.rb +0 -15
  337. data/ext/commonmarker/cmark-upstream/wrappers/wrapper.rkt +0 -190
@@ -1,22 +0,0 @@
1
- #include "chunk.h"
2
- #include "cmark.h"
3
-
4
- #ifdef __cplusplus
5
- extern "C" {
6
- #endif
7
-
8
- bufsize_t _ext_scan_at(bufsize_t (*scanner)(const unsigned char *),
9
- unsigned char *ptr, int len, bufsize_t offset);
10
- bufsize_t _scan_table_start(const unsigned char *p);
11
- bufsize_t _scan_table_cell(const unsigned char *p);
12
- bufsize_t _scan_table_cell_end(const unsigned char *p);
13
- bufsize_t _scan_table_row_end(const unsigned char *p);
14
-
15
- #define scan_table_start(c, l, n) _ext_scan_at(&_scan_table_start, c, l, n)
16
- #define scan_table_cell(c, l, n) _ext_scan_at(&_scan_table_cell, c, l, n)
17
- #define scan_table_cell_end(c, l, n) _ext_scan_at(&_scan_table_cell_end, c, l, n)
18
- #define scan_table_row_end(c, l, n) _ext_scan_at(&_scan_table_row_end, c, l, n)
19
-
20
- #ifdef __cplusplus
21
- }
22
- #endif
@@ -1,74 +0,0 @@
1
- #include <stdlib.h>
2
- #include "ext_scanners.h"
3
-
4
- bufsize_t _ext_scan_at(bufsize_t (*scanner)(const unsigned char *), unsigned char *ptr, int len, bufsize_t offset)
5
- {
6
- bufsize_t res;
7
-
8
- if (ptr == NULL || offset > len) {
9
- return 0;
10
- } else {
11
- unsigned char lim = ptr[len];
12
-
13
- ptr[len] = '\0';
14
- res = scanner(ptr + offset);
15
- ptr[len] = lim;
16
- }
17
-
18
- return res;
19
- }
20
-
21
- /*!re2c
22
- re2c:define:YYCTYPE = "unsigned char";
23
- re2c:define:YYCURSOR = p;
24
- re2c:define:YYMARKER = marker;
25
- re2c:define:YYCTXMARKER = marker;
26
- re2c:yyfill:enable = 0;
27
-
28
- spacechar = [ \t\v\f];
29
- newline = [\r]?[\n];
30
- escaped_char = [\\][|!"#$%&'()*+,./:;<=>?@[\\\]^_`{}~-];
31
-
32
- table_marker = (spacechar*[:]?[-]+[:]?spacechar*);
33
- table_cell = (escaped_char|[^|\r\n])*;
34
- */
35
-
36
- bufsize_t _scan_table_start(const unsigned char *p)
37
- {
38
- const unsigned char *marker = NULL;
39
- const unsigned char *start = p;
40
- /*!re2c
41
- [|]? table_marker ([|] table_marker)* [|]? spacechar* newline { return (bufsize_t)(p - start); }
42
- .? { return 0; }
43
- */
44
- }
45
-
46
- bufsize_t _scan_table_cell(const unsigned char *p)
47
- {
48
- const unsigned char *marker = NULL;
49
- const unsigned char *start = p;
50
- /*!re2c
51
- table_cell { return (bufsize_t)(p - start); }
52
- .? { return 0; }
53
- */
54
- }
55
-
56
- bufsize_t _scan_table_cell_end(const unsigned char *p)
57
- {
58
- const unsigned char *marker = NULL;
59
- const unsigned char *start = p;
60
- /*!re2c
61
- [|] spacechar* newline? { return (bufsize_t)(p - start); }
62
- .? { return 0; }
63
- */
64
- }
65
-
66
- bufsize_t _scan_table_row_end(const unsigned char *p)
67
- {
68
- const unsigned char *marker = NULL;
69
- const unsigned char *start = p;
70
- /*!re2c
71
- spacechar* newline { return (bufsize_t)(p - start); }
72
- .? { return 0; }
73
- */
74
- }
@@ -1,157 +0,0 @@
1
- #include "strikethrough.h"
2
- #include <parser.h>
3
- #include <render.h>
4
-
5
- cmark_node_type CMARK_NODE_STRIKETHROUGH;
6
-
7
- static cmark_node *match(cmark_syntax_extension *self, cmark_parser *parser,
8
- cmark_node *parent, unsigned char character,
9
- cmark_inline_parser *inline_parser) {
10
- cmark_node *res = NULL;
11
- int left_flanking, right_flanking, punct_before, punct_after, delims;
12
- char buffer[101];
13
-
14
- if (character != '~')
15
- return NULL;
16
-
17
- delims = cmark_inline_parser_scan_delimiters(
18
- inline_parser, sizeof(buffer) - 1, '~',
19
- &left_flanking,
20
- &right_flanking, &punct_before, &punct_after);
21
-
22
- memset(buffer, '~', delims);
23
- buffer[delims] = 0;
24
-
25
- res = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);
26
- cmark_node_set_literal(res, buffer);
27
- res->start_line = res->end_line = cmark_inline_parser_get_line(inline_parser);
28
- res->start_column = cmark_inline_parser_get_column(inline_parser) - delims;
29
-
30
- if (left_flanking || right_flanking) {
31
- cmark_inline_parser_push_delimiter(inline_parser, character, left_flanking,
32
- right_flanking, res);
33
- }
34
-
35
- return res;
36
- }
37
-
38
- static delimiter *insert(cmark_syntax_extension *self, cmark_parser *parser,
39
- cmark_inline_parser *inline_parser, delimiter *opener,
40
- delimiter *closer) {
41
- cmark_node *strikethrough;
42
- cmark_node *tmp, *next;
43
- delimiter *delim, *tmp_delim;
44
- delimiter *res = closer->next;
45
-
46
- strikethrough = opener->inl_text;
47
-
48
- if (!cmark_node_set_type(strikethrough, CMARK_NODE_STRIKETHROUGH))
49
- goto done;
50
-
51
- cmark_node_set_syntax_extension(strikethrough, self);
52
-
53
- cmark_node_set_string_content(strikethrough, "~");
54
- tmp = cmark_node_next(opener->inl_text);
55
-
56
- while (tmp) {
57
- if (tmp == closer->inl_text)
58
- break;
59
- next = cmark_node_next(tmp);
60
- cmark_node_append_child(strikethrough, tmp);
61
- tmp = next;
62
- }
63
-
64
- strikethrough->end_column = closer->inl_text->start_column + closer->inl_text->as.literal.len - 1;
65
- cmark_node_free(closer->inl_text);
66
-
67
- delim = closer;
68
- while (delim != NULL && delim != opener) {
69
- tmp_delim = delim->previous;
70
- cmark_inline_parser_remove_delimiter(inline_parser, delim);
71
- delim = tmp_delim;
72
- }
73
-
74
- cmark_inline_parser_remove_delimiter(inline_parser, opener);
75
-
76
- done:
77
- return res;
78
- }
79
-
80
- static const char *get_type_string(cmark_syntax_extension *extension,
81
- cmark_node *node) {
82
- return node->type == CMARK_NODE_STRIKETHROUGH ? "strikethrough" : "<unknown>";
83
- }
84
-
85
- static int can_contain(cmark_syntax_extension *extension, cmark_node *node,
86
- cmark_node_type child_type) {
87
- if (node->type != CMARK_NODE_STRIKETHROUGH)
88
- return false;
89
-
90
- return CMARK_NODE_TYPE_INLINE_P(child_type);
91
- }
92
-
93
- static void commonmark_render(cmark_syntax_extension *extension,
94
- cmark_renderer *renderer, cmark_node *node,
95
- cmark_event_type ev_type, int options) {
96
- renderer->out(renderer, node, cmark_node_get_string_content(node), false, LITERAL);
97
- }
98
-
99
- static void latex_render(cmark_syntax_extension *extension,
100
- cmark_renderer *renderer, cmark_node *node,
101
- cmark_event_type ev_type, int options) {
102
- // requires \usepackage{ulem}
103
- bool entering = (ev_type == CMARK_EVENT_ENTER);
104
- if (entering) {
105
- renderer->out(renderer, node, "\\sout{", false, LITERAL);
106
- } else {
107
- renderer->out(renderer, node, "}", false, LITERAL);
108
- }
109
- }
110
-
111
- static void man_render(cmark_syntax_extension *extension,
112
- cmark_renderer *renderer, cmark_node *node,
113
- cmark_event_type ev_type, int options) {
114
- bool entering = (ev_type == CMARK_EVENT_ENTER);
115
- if (entering) {
116
- renderer->cr(renderer);
117
- renderer->out(renderer, node, ".ST \"", false, LITERAL);
118
- } else {
119
- renderer->out(renderer, node, "\"", false, LITERAL);
120
- renderer->cr(renderer);
121
- }
122
- }
123
-
124
- static void html_render(cmark_syntax_extension *extension,
125
- cmark_html_renderer *renderer, cmark_node *node,
126
- cmark_event_type ev_type, int options) {
127
- bool entering = (ev_type == CMARK_EVENT_ENTER);
128
- if (entering) {
129
- cmark_strbuf_puts(renderer->html, "<del>");
130
- } else {
131
- cmark_strbuf_puts(renderer->html, "</del>");
132
- }
133
- }
134
-
135
- cmark_syntax_extension *create_strikethrough_extension(void) {
136
- cmark_syntax_extension *ext = cmark_syntax_extension_new("strikethrough");
137
- cmark_llist *special_chars = NULL;
138
-
139
- cmark_syntax_extension_set_get_type_string_func(ext, get_type_string);
140
- cmark_syntax_extension_set_can_contain_func(ext, can_contain);
141
- cmark_syntax_extension_set_commonmark_render_func(ext, commonmark_render);
142
- cmark_syntax_extension_set_latex_render_func(ext, latex_render);
143
- cmark_syntax_extension_set_man_render_func(ext, man_render);
144
- cmark_syntax_extension_set_html_render_func(ext, html_render);
145
- CMARK_NODE_STRIKETHROUGH = cmark_syntax_extension_add_node(1);
146
-
147
- cmark_syntax_extension_set_match_inline_func(ext, match);
148
- cmark_syntax_extension_set_inline_from_delim_func(ext, insert);
149
-
150
- cmark_mem *mem = cmark_get_default_mem_allocator();
151
- special_chars = cmark_llist_append(mem, special_chars, (void *)'~');
152
- cmark_syntax_extension_set_special_inline_chars(ext, special_chars);
153
-
154
- cmark_syntax_extension_set_emphasis(ext, 1);
155
-
156
- return ext;
157
- }
@@ -1,9 +0,0 @@
1
- #ifndef STRIKETHROUGH_H
2
- #define STRIKETHROUGH_H
3
-
4
- #include "core-extensions.h"
5
-
6
- extern cmark_node_type CMARK_NODE_STRIKETHROUGH;
7
- cmark_syntax_extension *create_strikethrough_extension(void);
8
-
9
- #endif
@@ -1,683 +0,0 @@
1
- #include <cmark_extension_api.h>
2
- #include <html.h>
3
- #include <inlines.h>
4
- #include <parser.h>
5
- #include <references.h>
6
- #include <string.h>
7
- #include <render.h>
8
-
9
- #include "ext_scanners.h"
10
- #include "strikethrough.h"
11
- #include "table.h"
12
-
13
- cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW,
14
- CMARK_NODE_TABLE_CELL;
15
-
16
- typedef struct {
17
- uint16_t n_columns;
18
- cmark_llist *cells;
19
- } table_row;
20
-
21
- typedef struct {
22
- uint16_t n_columns;
23
- uint8_t *alignments;
24
- } node_table;
25
-
26
- typedef struct {
27
- bool is_header;
28
- } node_table_row;
29
-
30
- typedef struct {
31
- cmark_strbuf *buf;
32
- int start_offset, end_offset, internal_offset;
33
- } node_cell;
34
-
35
- static void free_table_cell(cmark_mem *mem, void *data) {
36
- node_cell *cell = (node_cell *)data;
37
- cmark_strbuf_free((cmark_strbuf *)cell->buf);
38
- mem->free(cell->buf);
39
- mem->free(cell);
40
- }
41
-
42
- static void free_table_row(cmark_mem *mem, table_row *row) {
43
- if (!row)
44
- return;
45
-
46
- cmark_llist_free_full(mem, row->cells, (cmark_free_func)free_table_cell);
47
-
48
- mem->free(row);
49
- }
50
-
51
- static void free_node_table(cmark_mem *mem, void *ptr) {
52
- node_table *t = (node_table *)ptr;
53
- mem->free(t->alignments);
54
- mem->free(t);
55
- }
56
-
57
- static void free_node_table_row(cmark_mem *mem, void *ptr) {
58
- mem->free(ptr);
59
- }
60
-
61
- static int get_n_table_columns(cmark_node *node) {
62
- if (!node || node->type != CMARK_NODE_TABLE)
63
- return -1;
64
-
65
- return (int)((node_table *)node->as.opaque)->n_columns;
66
- }
67
-
68
- static int set_n_table_columns(cmark_node *node, uint16_t n_columns) {
69
- if (!node || node->type != CMARK_NODE_TABLE)
70
- return 0;
71
-
72
- ((node_table *)node->as.opaque)->n_columns = n_columns;
73
- return 1;
74
- }
75
-
76
- static uint8_t *get_table_alignments(cmark_node *node) {
77
- if (!node || node->type != CMARK_NODE_TABLE)
78
- return 0;
79
-
80
- return ((node_table *)node->as.opaque)->alignments;
81
- }
82
-
83
- static int set_table_alignments(cmark_node *node, uint8_t *alignments) {
84
- if (!node || node->type != CMARK_NODE_TABLE)
85
- return 0;
86
-
87
- ((node_table *)node->as.opaque)->alignments = alignments;
88
- return 1;
89
- }
90
-
91
- static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsize_t len)
92
- {
93
- cmark_strbuf *res = (cmark_strbuf *)mem->calloc(1, sizeof(cmark_strbuf));
94
- bufsize_t r, w;
95
-
96
- cmark_strbuf_init(mem, res, len + 1);
97
- cmark_strbuf_put(res, string, len);
98
- cmark_strbuf_putc(res, '\0');
99
-
100
- for (r = 0, w = 0; r < len; ++r) {
101
- if (res->ptr[r] == '\\' && res->ptr[r + 1] == '|')
102
- r++;
103
-
104
- res->ptr[w++] = res->ptr[r];
105
- }
106
-
107
- cmark_strbuf_truncate(res, w);
108
-
109
- return res;
110
- }
111
-
112
- static table_row *row_from_string(cmark_syntax_extension *self,
113
- cmark_parser *parser, unsigned char *string,
114
- int len) {
115
- table_row *row = NULL;
116
- bufsize_t cell_matched, pipe_matched, offset;
117
-
118
- row = (table_row *)parser->mem->calloc(1, sizeof(table_row));
119
- row->n_columns = 0;
120
- row->cells = NULL;
121
-
122
- offset = scan_table_cell_end(string, len, 0);
123
-
124
- do {
125
- cell_matched = scan_table_cell(string, len, offset);
126
- pipe_matched = scan_table_cell_end(string, len, offset + cell_matched);
127
-
128
- if (cell_matched || pipe_matched) {
129
- cmark_strbuf *cell_buf = unescape_pipes(parser->mem, string + offset,
130
- cell_matched);
131
- cmark_strbuf_trim(cell_buf);
132
-
133
- node_cell *cell = (node_cell *)parser->mem->calloc(1, sizeof(*cell));
134
- cell->buf = cell_buf;
135
- cell->start_offset = offset;
136
- cell->end_offset = offset + cell_matched - 1;
137
- while (cell->start_offset > 0 && string[cell->start_offset - 1] != '|') {
138
- --cell->start_offset;
139
- ++cell->internal_offset;
140
- }
141
- row->n_columns += 1;
142
- row->cells = cmark_llist_append(parser->mem, row->cells, cell);
143
- }
144
-
145
- offset += cell_matched + pipe_matched;
146
-
147
- if (!pipe_matched) {
148
- pipe_matched = scan_table_row_end(string, len, offset);
149
- offset += pipe_matched;
150
- }
151
- } while ((cell_matched || pipe_matched) && offset < len);
152
-
153
- if (offset != len || !row->n_columns) {
154
- free_table_row(parser->mem, row);
155
- row = NULL;
156
- }
157
-
158
- return row;
159
- }
160
-
161
- static cmark_node *try_opening_table_header(cmark_syntax_extension *self,
162
- cmark_parser *parser,
163
- cmark_node *parent_container,
164
- unsigned char *input, int len) {
165
- bufsize_t matched =
166
- scan_table_start(input, len, cmark_parser_get_first_nonspace(parser));
167
- cmark_node *table_header;
168
- table_row *header_row = NULL;
169
- table_row *marker_row = NULL;
170
- node_table_row *ntr;
171
- const char *parent_string;
172
- uint16_t i;
173
-
174
- if (!matched)
175
- return parent_container;
176
-
177
- parent_string = cmark_node_get_string_content(parent_container);
178
-
179
- cmark_arena_push();
180
-
181
- header_row = row_from_string(self, parser, (unsigned char *)parent_string,
182
- (int)strlen(parent_string));
183
-
184
- if (!header_row) {
185
- free_table_row(parser->mem, header_row);
186
- cmark_arena_pop();
187
- return parent_container;
188
- }
189
-
190
- marker_row = row_from_string(self, parser,
191
- input + cmark_parser_get_first_nonspace(parser),
192
- len - cmark_parser_get_first_nonspace(parser));
193
-
194
- assert(marker_row);
195
-
196
- if (header_row->n_columns != marker_row->n_columns) {
197
- free_table_row(parser->mem, header_row);
198
- free_table_row(parser->mem, marker_row);
199
- cmark_arena_pop();
200
- return parent_container;
201
- }
202
-
203
- if (cmark_arena_pop()) {
204
- header_row = row_from_string(self, parser, (unsigned char *)parent_string,
205
- (int)strlen(parent_string));
206
- marker_row = row_from_string(self, parser,
207
- input + cmark_parser_get_first_nonspace(parser),
208
- len - cmark_parser_get_first_nonspace(parser));
209
- }
210
-
211
- if (!cmark_node_set_type(parent_container, CMARK_NODE_TABLE)) {
212
- free_table_row(parser->mem, header_row);
213
- free_table_row(parser->mem, marker_row);
214
- return parent_container;
215
- }
216
-
217
- cmark_node_set_syntax_extension(parent_container, self);
218
-
219
- parent_container->as.opaque = parser->mem->calloc(1, sizeof(node_table));
220
-
221
- set_n_table_columns(parent_container, header_row->n_columns);
222
-
223
- uint8_t *alignments =
224
- (uint8_t *)parser->mem->calloc(header_row->n_columns, sizeof(uint8_t));
225
- cmark_llist *it = marker_row->cells;
226
- for (i = 0; it; it = it->next, ++i) {
227
- node_cell *node = (node_cell *)it->data;
228
- bool left = node->buf->ptr[0] == ':', right = node->buf->ptr[node->buf->size - 1] == ':';
229
-
230
- if (left && right)
231
- alignments[i] = 'c';
232
- else if (left)
233
- alignments[i] = 'l';
234
- else if (right)
235
- alignments[i] = 'r';
236
- }
237
- set_table_alignments(parent_container, alignments);
238
-
239
- table_header =
240
- cmark_parser_add_child(parser, parent_container, CMARK_NODE_TABLE_ROW,
241
- parent_container->start_column);
242
- cmark_node_set_syntax_extension(table_header, self);
243
- table_header->end_column = parent_container->start_column + (int)strlen(parent_string) - 2;
244
- table_header->start_line = table_header->end_line = parent_container->start_line;
245
-
246
- table_header->as.opaque = ntr = (node_table_row *)parser->mem->calloc(1, sizeof(node_table_row));
247
- ntr->is_header = true;
248
-
249
- {
250
- cmark_llist *tmp;
251
-
252
- for (tmp = header_row->cells; tmp; tmp = tmp->next) {
253
- node_cell *cell = (node_cell *) tmp->data;
254
- cmark_node *header_cell = cmark_parser_add_child(parser, table_header,
255
- CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);
256
- header_cell->start_line = header_cell->end_line = parent_container->start_line;
257
- header_cell->internal_offset = cell->internal_offset;
258
- header_cell->end_column = parent_container->start_column + cell->end_offset;
259
- cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);
260
- cmark_node_set_syntax_extension(header_cell, self);
261
- }
262
- }
263
-
264
- cmark_parser_advance_offset(
265
- parser, (char *)input,
266
- (int)strlen((char *)input) - 1 - cmark_parser_get_offset(parser), false);
267
-
268
- free_table_row(parser->mem, header_row);
269
- free_table_row(parser->mem, marker_row);
270
- return parent_container;
271
- }
272
-
273
- static cmark_node *try_opening_table_row(cmark_syntax_extension *self,
274
- cmark_parser *parser,
275
- cmark_node *parent_container,
276
- unsigned char *input, int len) {
277
- cmark_node *table_row_block;
278
- table_row *row;
279
-
280
- if (cmark_parser_is_blank(parser))
281
- return NULL;
282
-
283
- table_row_block =
284
- cmark_parser_add_child(parser, parent_container, CMARK_NODE_TABLE_ROW,
285
- parent_container->start_column);
286
- cmark_node_set_syntax_extension(table_row_block, self);
287
- table_row_block->end_column = parent_container->end_column;
288
- table_row_block->as.opaque = parser->mem->calloc(1, sizeof(node_table_row));
289
-
290
- row = row_from_string(self, parser, input + cmark_parser_get_first_nonspace(parser),
291
- len - cmark_parser_get_first_nonspace(parser));
292
-
293
- {
294
- cmark_llist *tmp;
295
- int i, table_columns = get_n_table_columns(parent_container);
296
-
297
- for (tmp = row->cells, i = 0; tmp && i < table_columns; tmp = tmp->next, ++i) {
298
- node_cell *cell = (node_cell *) tmp->data;
299
- cmark_node *node = cmark_parser_add_child(parser, table_row_block,
300
- CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);
301
- node->internal_offset = cell->internal_offset;
302
- node->end_column = parent_container->start_column + cell->end_offset;
303
- cmark_node_set_string_content(node, (char *) cell->buf->ptr);
304
- cmark_node_set_syntax_extension(node, self);
305
- }
306
-
307
- for (; i < table_columns; ++i) {
308
- cmark_node *node = cmark_parser_add_child(
309
- parser, table_row_block, CMARK_NODE_TABLE_CELL, 0);
310
- cmark_node_set_syntax_extension(node, self);
311
- }
312
- }
313
-
314
- free_table_row(parser->mem, row);
315
-
316
- cmark_parser_advance_offset(parser, (char *)input,
317
- len - 1 - cmark_parser_get_offset(parser), false);
318
-
319
- return table_row_block;
320
- }
321
-
322
- static cmark_node *try_opening_table_block(cmark_syntax_extension *self,
323
- int indented, cmark_parser *parser,
324
- cmark_node *parent_container,
325
- unsigned char *input, int len) {
326
- cmark_node_type parent_type = cmark_node_get_type(parent_container);
327
-
328
- if (!indented && parent_type == CMARK_NODE_PARAGRAPH) {
329
- return try_opening_table_header(self, parser, parent_container, input, len);
330
- } else if (!indented && parent_type == CMARK_NODE_TABLE) {
331
- return try_opening_table_row(self, parser, parent_container, input, len);
332
- }
333
-
334
- return NULL;
335
- }
336
-
337
- static int matches(cmark_syntax_extension *self, cmark_parser *parser,
338
- unsigned char *input, int len,
339
- cmark_node *parent_container) {
340
- int res = 0;
341
-
342
- if (cmark_node_get_type(parent_container) == CMARK_NODE_TABLE) {
343
- cmark_arena_push();
344
- table_row *new_row = row_from_string(
345
- self, parser, input + cmark_parser_get_first_nonspace(parser),
346
- len - cmark_parser_get_first_nonspace(parser));
347
- if (new_row && new_row->n_columns)
348
- res = 1;
349
- free_table_row(parser->mem, new_row);
350
- cmark_arena_pop();
351
- }
352
-
353
- return res;
354
- }
355
-
356
- static const char *get_type_string(cmark_syntax_extension *self,
357
- cmark_node *node) {
358
- if (node->type == CMARK_NODE_TABLE) {
359
- return "table";
360
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
361
- if (((node_table_row *)node->as.opaque)->is_header)
362
- return "table_header";
363
- else
364
- return "table_row";
365
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
366
- return "table_cell";
367
- }
368
-
369
- return "<unknown>";
370
- }
371
-
372
- static int can_contain(cmark_syntax_extension *extension, cmark_node *node,
373
- cmark_node_type child_type) {
374
- if (node->type == CMARK_NODE_TABLE) {
375
- return child_type == CMARK_NODE_TABLE_ROW;
376
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
377
- return child_type == CMARK_NODE_TABLE_CELL;
378
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
379
- return child_type == CMARK_NODE_TEXT || child_type == CMARK_NODE_CODE ||
380
- child_type == CMARK_NODE_EMPH || child_type == CMARK_NODE_STRONG ||
381
- child_type == CMARK_NODE_LINK || child_type == CMARK_NODE_IMAGE ||
382
- child_type == CMARK_NODE_STRIKETHROUGH ||
383
- child_type == CMARK_NODE_HTML_INLINE;
384
- }
385
- return false;
386
- }
387
-
388
- static int contains_inlines(cmark_syntax_extension *extension,
389
- cmark_node *node) {
390
- return node->type == CMARK_NODE_TABLE_CELL;
391
- }
392
-
393
- static void commonmark_render(cmark_syntax_extension *extension,
394
- cmark_renderer *renderer, cmark_node *node,
395
- cmark_event_type ev_type, int options) {
396
- bool entering = (ev_type == CMARK_EVENT_ENTER);
397
-
398
- if (node->type == CMARK_NODE_TABLE) {
399
- renderer->blankline(renderer);
400
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
401
- if (entering) {
402
- renderer->cr(renderer);
403
- renderer->out(renderer, node, "|", false, LITERAL);
404
- }
405
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
406
- if (entering) {
407
- renderer->out(renderer, node, " ", false, LITERAL);
408
- } else {
409
- renderer->out(renderer, node, " |", false, LITERAL);
410
- if (((node_table_row *)node->parent->as.opaque)->is_header &&
411
- !node->next) {
412
- int i;
413
- uint8_t *alignments = get_table_alignments(node->parent->parent);
414
- uint16_t n_cols =
415
- ((node_table *)node->parent->parent->as.opaque)->n_columns;
416
- renderer->cr(renderer);
417
- renderer->out(renderer, node, "|", false, LITERAL);
418
- for (i = 0; i < n_cols; i++) {
419
- switch (alignments[i]) {
420
- case 0: renderer->out(renderer, node, " --- |", false, LITERAL); break;
421
- case 'l': renderer->out(renderer, node, " :-- |", false, LITERAL); break;
422
- case 'c': renderer->out(renderer, node, " :-: |", false, LITERAL); break;
423
- case 'r': renderer->out(renderer, node, " --: |", false, LITERAL); break;
424
- }
425
- }
426
- renderer->cr(renderer);
427
- }
428
- }
429
- } else {
430
- assert(false);
431
- }
432
- }
433
-
434
- static void latex_render(cmark_syntax_extension *extension,
435
- cmark_renderer *renderer, cmark_node *node,
436
- cmark_event_type ev_type, int options) {
437
- bool entering = (ev_type == CMARK_EVENT_ENTER);
438
-
439
- if (node->type == CMARK_NODE_TABLE) {
440
- if (entering) {
441
- int i;
442
- uint16_t n_cols;
443
- uint8_t *alignments = get_table_alignments(node);
444
-
445
- renderer->cr(renderer);
446
- renderer->out(renderer, node, "\\begin{table}", false, LITERAL);
447
- renderer->cr(renderer);
448
- renderer->out(renderer, node, "\\begin{tabular}{", false, LITERAL);
449
-
450
- n_cols = ((node_table *)node->as.opaque)->n_columns;
451
- for (i = 0; i < n_cols; i++) {
452
- switch(alignments[i]) {
453
- case 0:
454
- case 'l':
455
- renderer->out(renderer, node, "l", false, LITERAL);
456
- break;
457
- case 'c':
458
- renderer->out(renderer, node, "c", false, LITERAL);
459
- break;
460
- case 'r':
461
- renderer->out(renderer, node, "r", false, LITERAL);
462
- break;
463
- }
464
- }
465
- renderer->out(renderer, node, "}", false, LITERAL);
466
- renderer->cr(renderer);
467
- } else {
468
- renderer->out(renderer, node, "\\end{tabular}", false, LITERAL);
469
- renderer->cr(renderer);
470
- renderer->out(renderer, node, "\\end{table}", false, LITERAL);
471
- renderer->cr(renderer);
472
- }
473
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
474
- if (!entering) {
475
- renderer->cr(renderer);
476
- }
477
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
478
- if (!entering) {
479
- if (node->next) {
480
- renderer->out(renderer, node, " & ", false, LITERAL);
481
- } else {
482
- renderer->out(renderer, node, " \\\\", false, LITERAL);
483
- }
484
- }
485
- } else {
486
- assert(false);
487
- }
488
- }
489
-
490
- static void man_render(cmark_syntax_extension *extension,
491
- cmark_renderer *renderer, cmark_node *node,
492
- cmark_event_type ev_type, int options) {
493
- bool entering = (ev_type == CMARK_EVENT_ENTER);
494
-
495
- if (node->type == CMARK_NODE_TABLE) {
496
- if (entering) {
497
- int i;
498
- uint16_t n_cols;
499
- uint8_t *alignments = get_table_alignments(node);
500
-
501
- renderer->cr(renderer);
502
- renderer->out(renderer, node, ".TS", false, LITERAL);
503
- renderer->cr(renderer);
504
- renderer->out(renderer, node, "tab(@);", false, LITERAL);
505
- renderer->cr(renderer);
506
-
507
- n_cols = ((node_table *)node->as.opaque)->n_columns;
508
-
509
- for (i = 0; i < n_cols; i++) {
510
- switch (alignments[i]) {
511
- case 'l':
512
- renderer->out(renderer, node, "l", false, LITERAL);
513
- break;
514
- case 0:
515
- case 'c':
516
- renderer->out(renderer, node, "c", false, LITERAL);
517
- break;
518
- case 'r':
519
- renderer->out(renderer, node, "r", false, LITERAL);
520
- break;
521
- }
522
- }
523
-
524
- if (n_cols) {
525
- renderer->out(renderer, node, ".", false, LITERAL);
526
- renderer->cr(renderer);
527
- }
528
- } else {
529
- renderer->out(renderer, node, ".TE", false, LITERAL);
530
- renderer->cr(renderer);
531
- }
532
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
533
- if (!entering) {
534
- renderer->cr(renderer);
535
- }
536
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
537
- if (!entering && node->next) {
538
- renderer->out(renderer, node, "@", false, LITERAL);
539
- }
540
- } else {
541
- assert(false);
542
- }
543
- }
544
-
545
- struct html_table_state {
546
- unsigned need_closing_table_body : 1;
547
- unsigned in_table_header : 1;
548
- };
549
-
550
- static void html_render(cmark_syntax_extension *extension,
551
- cmark_html_renderer *renderer, cmark_node *node,
552
- cmark_event_type ev_type, int options) {
553
- bool entering = (ev_type == CMARK_EVENT_ENTER);
554
- cmark_strbuf *html = renderer->html;
555
- cmark_node *n;
556
-
557
- // XXX: we just monopolise renderer->opaque.
558
- struct html_table_state *table_state =
559
- (struct html_table_state *)&renderer->opaque;
560
-
561
- if (node->type == CMARK_NODE_TABLE) {
562
- if (entering) {
563
- cmark_html_render_cr(html);
564
- cmark_strbuf_puts(html, "<table");
565
- cmark_html_render_sourcepos(node, html, options);
566
- cmark_strbuf_putc(html, '>');
567
- table_state->need_closing_table_body = false;
568
- } else {
569
- if (table_state->need_closing_table_body)
570
- cmark_strbuf_puts(html, "</tbody>");
571
- table_state->need_closing_table_body = false;
572
- cmark_strbuf_puts(html, "</table>\n");
573
- }
574
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
575
- if (entering) {
576
- cmark_html_render_cr(html);
577
- if (((node_table_row *)node->as.opaque)->is_header) {
578
- table_state->in_table_header = 1;
579
- cmark_strbuf_puts(html, "<thead>");
580
- cmark_html_render_cr(html);
581
- } else if (!table_state->need_closing_table_body) {
582
- cmark_strbuf_puts(html, "<tbody>");
583
- cmark_html_render_cr(html);
584
- table_state->need_closing_table_body = 1;
585
- }
586
- cmark_strbuf_puts(html, "<tr");
587
- cmark_html_render_sourcepos(node, html, options);
588
- cmark_strbuf_putc(html, '>');
589
- } else {
590
- cmark_html_render_cr(html);
591
- cmark_strbuf_puts(html, "</tr>");
592
- if (((node_table_row *)node->as.opaque)->is_header) {
593
- cmark_html_render_cr(html);
594
- cmark_strbuf_puts(html, "</thead>");
595
- table_state->in_table_header = false;
596
- }
597
- }
598
- } else if (node->type == CMARK_NODE_TABLE_CELL) {
599
- uint8_t *alignments = get_table_alignments(node->parent->parent);
600
- if (entering) {
601
- cmark_html_render_cr(html);
602
- if (table_state->in_table_header) {
603
- cmark_strbuf_puts(html, "<th");
604
- } else {
605
- cmark_strbuf_puts(html, "<td");
606
- }
607
-
608
- int i = 0;
609
- for (n = node->parent->first_child; n; n = n->next, ++i)
610
- if (n == node)
611
- break;
612
-
613
- switch (alignments[i]) {
614
- case 'l': cmark_strbuf_puts(html, " align=\"left\""); break;
615
- case 'c': cmark_strbuf_puts(html, " align=\"center\""); break;
616
- case 'r': cmark_strbuf_puts(html, " align=\"right\""); break;
617
- }
618
-
619
- cmark_html_render_sourcepos(node, html, options);
620
- cmark_strbuf_putc(html, '>');
621
- } else {
622
- if (table_state->in_table_header) {
623
- cmark_strbuf_puts(html, "</th>");
624
- } else {
625
- cmark_strbuf_puts(html, "</td>");
626
- }
627
- }
628
- } else {
629
- assert(false);
630
- }
631
- }
632
-
633
- static void opaque_free(cmark_syntax_extension *self, cmark_mem *mem, cmark_node *node) {
634
- if (node->type == CMARK_NODE_TABLE) {
635
- free_node_table(mem, node->as.opaque);
636
- } else if (node->type == CMARK_NODE_TABLE_ROW) {
637
- free_node_table_row(mem, node->as.opaque);
638
- }
639
- }
640
-
641
- static int escape(cmark_syntax_extension *self, cmark_node *node, int c) {
642
- return
643
- node->type != CMARK_NODE_TABLE &&
644
- node->type != CMARK_NODE_TABLE_ROW &&
645
- node->type != CMARK_NODE_TABLE_CELL &&
646
- c == '|';
647
- }
648
-
649
- cmark_syntax_extension *create_table_extension(void) {
650
- cmark_syntax_extension *self = cmark_syntax_extension_new("table");
651
-
652
- cmark_syntax_extension_set_match_block_func(self, matches);
653
- cmark_syntax_extension_set_open_block_func(self, try_opening_table_block);
654
- cmark_syntax_extension_set_get_type_string_func(self, get_type_string);
655
- cmark_syntax_extension_set_can_contain_func(self, can_contain);
656
- cmark_syntax_extension_set_contains_inlines_func(self, contains_inlines);
657
- cmark_syntax_extension_set_commonmark_render_func(self, commonmark_render);
658
- cmark_syntax_extension_set_plaintext_render_func(self, commonmark_render);
659
- cmark_syntax_extension_set_latex_render_func(self, latex_render);
660
- cmark_syntax_extension_set_man_render_func(self, man_render);
661
- cmark_syntax_extension_set_html_render_func(self, html_render);
662
- cmark_syntax_extension_set_opaque_free_func(self, opaque_free);
663
- cmark_syntax_extension_set_commonmark_escape_func(self, escape);
664
- CMARK_NODE_TABLE = cmark_syntax_extension_add_node(0);
665
- CMARK_NODE_TABLE_ROW = cmark_syntax_extension_add_node(0);
666
- CMARK_NODE_TABLE_CELL = cmark_syntax_extension_add_node(0);
667
-
668
- return self;
669
- }
670
-
671
- uint16_t cmarkextensions_get_table_columns(cmark_node *node) {
672
- if (node->type != CMARK_NODE_TABLE)
673
- return 0;
674
-
675
- return ((node_table *)node->as.opaque)->n_columns;
676
- }
677
-
678
- uint8_t *cmarkextensions_get_table_alignments(cmark_node *node) {
679
- if (node->type != CMARK_NODE_TABLE)
680
- return 0;
681
-
682
- return ((node_table *)node->as.opaque)->alignments;
683
- }