apex-ruby 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +119 -0
  3. data/apex-ruby.gemspec +31 -0
  4. data/ext/apex_ext/apex_ext.c +215 -0
  5. data/ext/apex_ext/apex_src/BENCHMARK.md +32 -0
  6. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +67 -0
  7. data/ext/apex_ext/apex_src/CHANGELOG.md +2454 -0
  8. data/ext/apex_ext/apex_src/CMakeLists.txt +454 -0
  9. data/ext/apex_ext/apex_src/Dockerfile.linux-build +15 -0
  10. data/ext/apex_ext/apex_src/Formula/apex.rb +38 -0
  11. data/ext/apex_ext/apex_src/Info.plist.in +27 -0
  12. data/ext/apex_ext/apex_src/LICENSE +21 -0
  13. data/ext/apex_ext/apex_src/Package.swift +160 -0
  14. data/ext/apex_ext/apex_src/PackageSupport/README.md +17 -0
  15. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_export.h +20 -0
  16. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_version.h +14 -0
  17. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +4 -0
  18. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/config.h +41 -0
  19. data/ext/apex_ext/apex_src/README.md +452 -0
  20. data/ext/apex_ext/apex_src/VERSION +1 -0
  21. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  22. data/ext/apex_ext/apex_src/apex-plugins.json.example +20 -0
  23. data/ext/apex_ext/apex_src/apex.pc.in +11 -0
  24. data/ext/apex_ext/apex_src/cli/main.c +2720 -0
  25. data/ext/apex_ext/apex_src/debug_test.sh +22 -0
  26. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +451 -0
  27. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +166 -0
  28. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +220 -0
  29. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +501 -0
  30. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +73 -0
  31. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +391 -0
  32. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +237 -0
  33. data/ext/apex_ext/apex_src/docs/FUTURE_FEATURES.md +456 -0
  34. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +210 -0
  35. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +344 -0
  36. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +144 -0
  37. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +278 -0
  38. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +321 -0
  39. data/ext/apex_ext/apex_src/docs/PROGRESS.md +167 -0
  40. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +174 -0
  41. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +243 -0
  42. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +316 -0
  43. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +803 -0
  44. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +91 -0
  45. data/ext/apex_ext/apex_src/documentation/README.md +160 -0
  46. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +365 -0
  47. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +24 -0
  48. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +1737 -0
  49. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +1420 -0
  50. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3574 -0
  51. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +1603 -0
  52. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +910 -0
  53. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +1168 -0
  54. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +1003 -0
  55. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +1308 -0
  56. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +1078 -0
  57. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +1622 -0
  58. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +1168 -0
  59. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +1698 -0
  60. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +1531 -0
  61. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +1980 -0
  62. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +1368 -0
  63. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +1151 -0
  64. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +2861 -0
  65. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +3981 -0
  66. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +1454 -0
  67. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +1200 -0
  68. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +2066 -0
  69. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  70. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  71. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
  72. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +22 -0
  73. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  74. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  75. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  76. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  77. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  78. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  79. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  80. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  81. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +914 -0
  82. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +399 -0
  83. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  84. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  85. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +772 -0
  86. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +678 -0
  87. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +873 -0
  88. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +733 -0
  89. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +17073 -0
  90. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +64 -0
  91. data/ext/apex_ext/apex_src/documentation/shared_styles.css +646 -0
  92. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +260 -0
  93. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +119 -0
  94. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +11 -0
  95. data/ext/apex_ext/apex_src/examples/example.html +53 -0
  96. data/ext/apex_ext/apex_src/examples/example.md +85 -0
  97. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +158 -0
  98. data/ext/apex_ext/apex_src/examples/kbd.md +8 -0
  99. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +250 -0
  100. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +9 -0
  101. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  102. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  103. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  104. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  105. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  106. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  107. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  108. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  109. data/ext/apex_ext/apex_src/include/apex/apex.h +247 -0
  110. data/ext/apex_ext/apex_src/include/apex/buffer.h +93 -0
  111. data/ext/apex_ext/apex_src/include/apex/module.modulemap +16 -0
  112. data/ext/apex_ext/apex_src/include/apex/parser.h +150 -0
  113. data/ext/apex_ext/apex_src/include/apex/renderer.h +39 -0
  114. data/ext/apex_ext/apex_src/man/apex-config.5 +374 -0
  115. data/ext/apex_ext/apex_src/man/apex-config.5.md +260 -0
  116. data/ext/apex_ext/apex_src/man/apex-plugins.7 +456 -0
  117. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +365 -0
  118. data/ext/apex_ext/apex_src/man/apex.1 +828 -0
  119. data/ext/apex_ext/apex_src/man/apex.1.md +643 -0
  120. data/ext/apex_ext/apex_src/man/apex.1.new +338 -0
  121. data/ext/apex_ext/apex_src/objc/Apex.swift +237 -0
  122. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +117 -0
  123. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +332 -0
  124. data/ext/apex_ext/apex_src/src/_README.md +358 -0
  125. data/ext/apex_ext/apex_src/src/apex.c +6326 -0
  126. data/ext/apex_ext/apex_src/src/buffer.c +93 -0
  127. data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +362 -0
  128. data/ext/apex_ext/apex_src/src/extensions/abbreviations.h +45 -0
  129. data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.c +184 -0
  130. data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.h +50 -0
  131. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +1897 -0
  132. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.h +42 -0
  133. data/ext/apex_ext/apex_src/src/extensions/callouts.c +215 -0
  134. data/ext/apex_ext/apex_src/src/extensions/callouts.h +53 -0
  135. data/ext/apex_ext/apex_src/src/extensions/citations.c +2042 -0
  136. data/ext/apex_ext/apex_src/src/extensions/citations.h +163 -0
  137. data/ext/apex_ext/apex_src/src/extensions/critic.c +329 -0
  138. data/ext/apex_ext/apex_src/src/extensions/critic.h +48 -0
  139. data/ext/apex_ext/apex_src/src/extensions/definition_list.c +1670 -0
  140. data/ext/apex_ext/apex_src/src/extensions/definition_list.h +42 -0
  141. data/ext/apex_ext/apex_src/src/extensions/emoji.c +710 -0
  142. data/ext/apex_ext/apex_src/src/extensions/emoji.h +38 -0
  143. data/ext/apex_ext/apex_src/src/extensions/emoji_data.h +942 -0
  144. data/ext/apex_ext/apex_src/src/extensions/fenced_divs.c +925 -0
  145. data/ext/apex_ext/apex_src/src/extensions/fenced_divs.h +43 -0
  146. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +869 -0
  147. data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1121 -0
  148. data/ext/apex_ext/apex_src/src/extensions/grid_tables.h +33 -0
  149. data/ext/apex_ext/apex_src/src/extensions/header_ids.c +626 -0
  150. data/ext/apex_ext/apex_src/src/extensions/header_ids.h +60 -0
  151. data/ext/apex_ext/apex_src/src/extensions/highlight.c +135 -0
  152. data/ext/apex_ext/apex_src/src/extensions/highlight.h +16 -0
  153. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +408 -0
  154. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +42 -0
  155. data/ext/apex_ext/apex_src/src/extensions/ial.c +4084 -0
  156. data/ext/apex_ext/apex_src/src/extensions/ial.h +145 -0
  157. data/ext/apex_ext/apex_src/src/extensions/includes.c +1536 -0
  158. data/ext/apex_ext/apex_src/src/extensions/includes.h +54 -0
  159. data/ext/apex_ext/apex_src/src/extensions/index.c +967 -0
  160. data/ext/apex_ext/apex_src/src/extensions/index.h +90 -0
  161. data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.c +205 -0
  162. data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.h +34 -0
  163. data/ext/apex_ext/apex_src/src/extensions/inline_tables.c +332 -0
  164. data/ext/apex_ext/apex_src/src/extensions/inline_tables.h +13 -0
  165. data/ext/apex_ext/apex_src/src/extensions/insert.c +248 -0
  166. data/ext/apex_ext/apex_src/src/extensions/insert.h +18 -0
  167. data/ext/apex_ext/apex_src/src/extensions/math.c +279 -0
  168. data/ext/apex_ext/apex_src/src/extensions/math.h +32 -0
  169. data/ext/apex_ext/apex_src/src/extensions/metadata.c +3046 -0
  170. data/ext/apex_ext/apex_src/src/extensions/metadata.h +125 -0
  171. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +1297 -0
  172. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.h +39 -0
  173. data/ext/apex_ext/apex_src/src/extensions/special_markers.c +194 -0
  174. data/ext/apex_ext/apex_src/src/extensions/special_markers.h +29 -0
  175. data/ext/apex_ext/apex_src/src/extensions/sup_sub.c +405 -0
  176. data/ext/apex_ext/apex_src/src/extensions/sup_sub.h +16 -0
  177. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +468 -0
  178. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.h +44 -0
  179. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +2679 -0
  180. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.h +23 -0
  181. data/ext/apex_ext/apex_src/src/extensions/toc.c +255 -0
  182. data/ext/apex_ext/apex_src/src/extensions/toc.h +34 -0
  183. data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +624 -0
  184. data/ext/apex_ext/apex_src/src/extensions/wiki_links.h +58 -0
  185. data/ext/apex_ext/apex_src/src/html_renderer.c +2762 -0
  186. data/ext/apex_ext/apex_src/src/html_renderer.h +126 -0
  187. data/ext/apex_ext/apex_src/src/parser.c +227 -0
  188. data/ext/apex_ext/apex_src/src/plugins.c +895 -0
  189. data/ext/apex_ext/apex_src/src/plugins.h +39 -0
  190. data/ext/apex_ext/apex_src/src/plugins_env.c +187 -0
  191. data/ext/apex_ext/apex_src/src/plugins_remote.c +263 -0
  192. data/ext/apex_ext/apex_src/src/pretty_html.c +358 -0
  193. data/ext/apex_ext/apex_src/src/renderer.c +241 -0
  194. data/ext/apex_ext/apex_src/src/utf8.c +56 -0
  195. data/ext/apex_ext/apex_src/test-linux-build.sh +20 -0
  196. data/ext/apex_ext/apex_src/test.html +103 -0
  197. data/ext/apex_ext/apex_src/test_coverage.sh +121 -0
  198. data/ext/apex_ext/apex_src/test_ial_fenced.md +6 -0
  199. data/ext/apex_ext/apex_src/test_math_norm.py +79 -0
  200. data/ext/apex_ext/apex_src/test_pandoc_output.html +48 -0
  201. data/ext/apex_ext/apex_src/test_spm.sh +107 -0
  202. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +50 -0
  203. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +229 -0
  204. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +24 -0
  205. data/ext/apex_ext/apex_src/tests/README.md +146 -0
  206. data/ext/apex_ext/apex_src/tests/benchmark.sh +113 -0
  207. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +166 -0
  208. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +31 -0
  209. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +25 -0
  210. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +24 -0
  211. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +33 -0
  212. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +26 -0
  213. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +260 -0
  214. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +6 -0
  215. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +7 -0
  216. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +9 -0
  217. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +5 -0
  218. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +5 -0
  219. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +620 -0
  220. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +3 -0
  221. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +11 -0
  222. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +177 -0
  223. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +94 -0
  224. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +3 -0
  225. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +3 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +74 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +27 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +60 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +27 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +94 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +16 -0
  232. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +4 -0
  233. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +5 -0
  234. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +5 -0
  235. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +2 -0
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +11 -0
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +8 -0
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +4 -0
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +7 -0
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  241. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +1094 -0
  242. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +11 -0
  243. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +96 -0
  244. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +43 -0
  245. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +12 -0
  246. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +53 -0
  247. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +37 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +93 -0
  249. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +38 -0
  250. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +12 -0
  251. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +15 -0
  252. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +15 -0
  253. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +105 -0
  254. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +143 -0
  255. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +96 -0
  256. data/ext/apex_ext/apex_src/tests/gh_api_test.md +6 -0
  257. data/ext/apex_ext/apex_src/tests/ial_demo.html +186 -0
  258. data/ext/apex_ext/apex_src/tests/include_code.py +19 -0
  259. data/ext/apex_ext/apex_src/tests/include_snippet.md +15 -0
  260. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +64 -0
  261. data/ext/apex_ext/apex_src/tests/sample_data.csv +7 -0
  262. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +4 -0
  263. data/ext/apex_ext/apex_src/tests/test_basic.c +74 -0
  264. data/ext/apex_ext/apex_src/tests/test_extensions.c +2116 -0
  265. data/ext/apex_ext/apex_src/tests/test_helpers.c +183 -0
  266. data/ext/apex_ext/apex_src/tests/test_helpers.h +91 -0
  267. data/ext/apex_ext/apex_src/tests/test_ial.c +282 -0
  268. data/ext/apex_ext/apex_src/tests/test_links.c +418 -0
  269. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +265 -0
  270. data/ext/apex_ext/apex_src/tests/test_metadata.c +908 -0
  271. data/ext/apex_ext/apex_src/tests/test_output.c +1118 -0
  272. data/ext/apex_ext/apex_src/tests/test_plugins.c +219 -0
  273. data/ext/apex_ext/apex_src/tests/test_refs.bib +31 -0
  274. data/ext/apex_ext/apex_src/tests/test_runner.c +244 -0
  275. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +198 -0
  276. data/ext/apex_ext/apex_src/tests/test_tables.c +862 -0
  277. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +9 -0
  278. data/ext/apex_ext/apex_src/tests/yaml_test.md +13 -0
  279. data/ext/apex_ext/apex_src/tests.rb +39 -0
  280. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +48 -0
  281. data/ext/apex_ext/apex_src/vendor/cmark-gfm/COPYING +170 -0
  282. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +14 -0
  283. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +43 -0
  284. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +74 -0
  285. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +38 -0
  286. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +206 -0
  287. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +30 -0
  288. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +15 -0
  289. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +16 -0
  290. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +111 -0
  291. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +35 -0
  292. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +1169 -0
  293. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +21 -0
  294. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +16 -0
  295. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +13 -0
  296. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +11 -0
  297. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +14 -0
  298. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +9 -0
  299. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +10 -0
  300. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +32 -0
  301. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +8 -0
  302. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +67 -0
  303. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +36 -0
  304. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +15 -0
  305. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +17 -0
  306. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +14 -0
  307. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +3 -0
  308. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +5 -0
  309. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +5 -0
  310. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +5 -0
  311. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +11 -0
  312. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +15 -0
  313. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +44 -0
  314. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +23 -0
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +13 -0
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +24 -0
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +13 -0
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +18 -0
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +595 -0
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +19 -0
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +33 -0
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +1245 -0
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +1495 -0
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +119 -0
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +508 -0
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.h +8 -0
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/cmark-gfm-core-extensions.h +54 -0
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/core-extensions.c +27 -0
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.c +879 -0
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.h +24 -0
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +92 -0
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.c +167 -0
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.h +9 -0
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +917 -0
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.h +12 -0
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.c +60 -0
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.h +8 -0
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.c +156 -0
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.h +8 -0
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +22 -0
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +12 -0
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +91 -0
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +110 -0
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +28 -0
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +10 -0
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +133 -0
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +78 -0
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +1041 -0
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +1 -0
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +230 -0
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/arena.c +104 -0
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +1622 -0
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.c +278 -0
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.h +116 -0
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/case_fold_switch.inc +4327 -0
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/chunk.h +135 -0
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm-extension_api.h +737 -0
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm.h +833 -0
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +7 -0
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark.c +55 -0
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.c +44 -0
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.h +33 -0
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/commonmark.c +514 -0
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +76 -0
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/entities.inc +2138 -0
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.c +63 -0
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.h +27 -0
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini.h +57 -0
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_href_e.c +100 -0
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_e.c +66 -0
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_u.c +149 -0
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.c +502 -0
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.h +27 -0
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.c +1788 -0
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.h +29 -0
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.c +159 -0
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.h +26 -0
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/latex.c +468 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +10 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/linked_list.c +37 -0
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +328 -0
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/man.c +274 -0
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.c +129 -0
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.h +44 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.c +1045 -0
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.h +167 -0
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/parser.h +59 -0
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plaintext.c +218 -0
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.c +36 -0
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.h +34 -0
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.c +43 -0
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.h +26 -0
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.c +63 -0
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.h +24 -0
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.c +213 -0
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.h +62 -0
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.c +14056 -0
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.h +70 -0
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +365 -0
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.c +149 -0
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.h +34 -0
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.c +317 -0
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.h +35 -0
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/xml.c +182 -0
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +10 -0
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +114 -0
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +49 -0
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +58 -0
  409. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +105 -0
  410. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +67 -0
  411. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  412. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +38 -0
  413. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +920 -0
  414. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +67 -0
  415. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +194 -0
  416. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +160 -0
  417. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +375 -0
  418. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +50 -0
  419. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +4 -0
  420. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +177 -0
  421. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +10212 -0
  422. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +152 -0
  423. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +17 -0
  424. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +41 -0
  425. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +13 -0
  426. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +32 -0
  427. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +22 -0
  428. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +319 -0
  429. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +80 -0
  430. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +104 -0
  431. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +6 -0
  432. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +37 -0
  433. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +15 -0
  434. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +208 -0
  435. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +109 -0
  436. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +160 -0
  437. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +372 -0
  438. data/ext/apex_ext/apex_src/vendor/libyaml/License +20 -0
  439. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +51 -0
  440. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +46 -0
  441. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +89 -0
  442. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +3 -0
  443. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +4 -0
  444. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +73 -0
  445. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +222 -0
  446. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +17 -0
  447. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +26 -0
  448. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +26 -0
  449. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +29 -0
  450. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +24 -0
  451. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +10 -0
  452. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +2 -0
  453. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +14 -0
  454. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +1 -0
  455. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +2 -0
  456. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +1 -0
  457. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +7 -0
  458. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +7 -0
  459. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +3 -0
  460. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +17 -0
  461. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +1999 -0
  462. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +77 -0
  463. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +32 -0
  464. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +1 -0
  465. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +23 -0
  466. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +1 -0
  467. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +4 -0
  468. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +1393 -0
  469. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +394 -0
  470. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +2358 -0
  471. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +544 -0
  472. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +1416 -0
  473. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +469 -0
  474. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +3598 -0
  475. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +141 -0
  476. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +684 -0
  477. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +27 -0
  478. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +9 -0
  479. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +63 -0
  480. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +800 -0
  481. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +1127 -0
  482. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +217 -0
  483. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +202 -0
  484. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +29 -0
  485. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +314 -0
  486. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +290 -0
  487. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +327 -0
  488. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +63 -0
  489. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +196 -0
  490. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +88 -0
  491. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +63 -0
  492. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +354 -0
  493. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +29 -0
  494. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +10 -0
  495. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +16 -0
  496. data/ext/apex_ext/extconf.rb +103 -0
  497. data/lib/apex/configurable.rb +46 -0
  498. data/lib/apex/document.rb +66 -0
  499. data/lib/apex/version.rb +15 -0
  500. data/lib/apex.rb +28 -0
  501. metadata +544 -0
@@ -0,0 +1,1045 @@
1
+ #include <stdlib.h>
2
+ #include <string.h>
3
+
4
+ #include "config.h"
5
+ #include "node.h"
6
+ #include "syntax_extension.h"
7
+
8
+ /**
9
+ * Expensive safety checks are off by default, but can be enabled
10
+ * by calling cmark_enable_safety_checks().
11
+ */
12
+ static bool enable_safety_checks = false;
13
+
14
+ void cmark_enable_safety_checks(bool enable) {
15
+ enable_safety_checks = enable;
16
+ }
17
+
18
+ static void S_node_unlink(cmark_node *node);
19
+
20
+ #define NODE_MEM(node) cmark_node_mem(node)
21
+
22
+ void cmark_register_node_flag(cmark_node_internal_flags *flags) {
23
+ static cmark_node_internal_flags nextflag = CMARK_NODE__REGISTER_FIRST;
24
+
25
+ // flags should be a pointer to a global variable and this function
26
+ // should only be called once to initialize its value.
27
+ if (*flags) {
28
+ fprintf(stderr, "flag initialization error in cmark_register_node_flag\n");
29
+ abort();
30
+ }
31
+
32
+ // Check that we haven't run out of bits.
33
+ if (nextflag == 0) {
34
+ fprintf(stderr, "too many flags in cmark_register_node_flag\n");
35
+ abort();
36
+ }
37
+
38
+ *flags = nextflag;
39
+ nextflag <<= 1;
40
+ }
41
+
42
+ void cmark_init_standard_node_flags(void) {}
43
+
44
+ bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type) {
45
+ if (child_type == CMARK_NODE_DOCUMENT) {
46
+ return false;
47
+ }
48
+
49
+ if (node->extension && node->extension->can_contain_func) {
50
+ return node->extension->can_contain_func(node->extension, node, child_type) != 0;
51
+ }
52
+
53
+ switch (node->type) {
54
+ case CMARK_NODE_DOCUMENT:
55
+ case CMARK_NODE_BLOCK_QUOTE:
56
+ case CMARK_NODE_FOOTNOTE_DEFINITION:
57
+ case CMARK_NODE_ITEM:
58
+ return CMARK_NODE_TYPE_BLOCK_P(child_type) && child_type != CMARK_NODE_ITEM;
59
+
60
+ case CMARK_NODE_LIST:
61
+ return child_type == CMARK_NODE_ITEM;
62
+
63
+ case CMARK_NODE_CUSTOM_BLOCK:
64
+ return true;
65
+
66
+ case CMARK_NODE_PARAGRAPH:
67
+ case CMARK_NODE_HEADING:
68
+ case CMARK_NODE_EMPH:
69
+ case CMARK_NODE_STRONG:
70
+ case CMARK_NODE_LINK:
71
+ case CMARK_NODE_IMAGE:
72
+ case CMARK_NODE_CUSTOM_INLINE:
73
+ return CMARK_NODE_TYPE_INLINE_P(child_type);
74
+
75
+ default:
76
+ break;
77
+ }
78
+
79
+ return false;
80
+ }
81
+
82
+ static bool S_can_contain(cmark_node *node, cmark_node *child) {
83
+ if (node == NULL || child == NULL) {
84
+ return false;
85
+ }
86
+ if (NODE_MEM(node) != NODE_MEM(child)) {
87
+ return 0;
88
+ }
89
+
90
+ if (enable_safety_checks) {
91
+ // Verify that child is not an ancestor of node or equal to node.
92
+ cmark_node *cur = node;
93
+ do {
94
+ if (cur == child) {
95
+ return false;
96
+ }
97
+ cur = cur->parent;
98
+ } while (cur != NULL);
99
+ }
100
+
101
+ return cmark_node_can_contain_type(node, (cmark_node_type) child->type);
102
+ }
103
+
104
+ cmark_node *cmark_node_new_with_mem_and_ext(cmark_node_type type, cmark_mem *mem, cmark_syntax_extension *extension) {
105
+ cmark_node *node = (cmark_node *)mem->calloc(1, sizeof(*node));
106
+ cmark_strbuf_init(mem, &node->content, 0);
107
+ node->type = (uint16_t)type;
108
+ node->extension = extension;
109
+
110
+ switch (node->type) {
111
+ case CMARK_NODE_HEADING:
112
+ node->as.heading.level = 1;
113
+ break;
114
+
115
+ case CMARK_NODE_LIST: {
116
+ cmark_list *list = &node->as.list;
117
+ list->list_type = CMARK_BULLET_LIST;
118
+ list->start = 0;
119
+ list->tight = false;
120
+ break;
121
+ }
122
+
123
+ default:
124
+ break;
125
+ }
126
+
127
+ if (node->extension && node->extension->opaque_alloc_func) {
128
+ node->extension->opaque_alloc_func(node->extension, mem, node);
129
+ }
130
+
131
+ return node;
132
+ }
133
+
134
+ cmark_node *cmark_node_new_with_ext(cmark_node_type type, cmark_syntax_extension *extension) {
135
+ extern cmark_mem CMARK_DEFAULT_MEM_ALLOCATOR;
136
+ return cmark_node_new_with_mem_and_ext(type, &CMARK_DEFAULT_MEM_ALLOCATOR, extension);
137
+ }
138
+
139
+ cmark_node *cmark_node_new_with_mem(cmark_node_type type, cmark_mem *mem)
140
+ {
141
+ return cmark_node_new_with_mem_and_ext(type, mem, NULL);
142
+ }
143
+
144
+ cmark_node *cmark_node_new(cmark_node_type type) {
145
+ return cmark_node_new_with_ext(type, NULL);
146
+ }
147
+
148
+ static void free_node_as(cmark_node *node) {
149
+ switch (node->type) {
150
+ case CMARK_NODE_CODE_BLOCK:
151
+ cmark_chunk_free(NODE_MEM(node), &node->as.code.info);
152
+ cmark_chunk_free(NODE_MEM(node), &node->as.code.literal);
153
+ break;
154
+ case CMARK_NODE_TEXT:
155
+ case CMARK_NODE_HTML_INLINE:
156
+ case CMARK_NODE_CODE:
157
+ case CMARK_NODE_HTML_BLOCK:
158
+ case CMARK_NODE_FOOTNOTE_REFERENCE:
159
+ case CMARK_NODE_FOOTNOTE_DEFINITION:
160
+ cmark_chunk_free(NODE_MEM(node), &node->as.literal);
161
+ break;
162
+ case CMARK_NODE_LINK:
163
+ case CMARK_NODE_IMAGE:
164
+ cmark_chunk_free(NODE_MEM(node), &node->as.link.url);
165
+ cmark_chunk_free(NODE_MEM(node), &node->as.link.title);
166
+ break;
167
+ case CMARK_NODE_CUSTOM_BLOCK:
168
+ case CMARK_NODE_CUSTOM_INLINE:
169
+ cmark_chunk_free(NODE_MEM(node), &node->as.custom.on_enter);
170
+ cmark_chunk_free(NODE_MEM(node), &node->as.custom.on_exit);
171
+ break;
172
+ default:
173
+ break;
174
+ }
175
+ }
176
+
177
+ // Free a cmark_node list and any children.
178
+ static void S_free_nodes(cmark_node *e) {
179
+ cmark_node *next;
180
+ while (e != NULL) {
181
+ cmark_strbuf_free(&e->content);
182
+
183
+ if (e->user_data && e->user_data_free_func)
184
+ e->user_data_free_func(NODE_MEM(e), e->user_data);
185
+
186
+ if (e->as.opaque && e->extension && e->extension->opaque_free_func)
187
+ e->extension->opaque_free_func(e->extension, NODE_MEM(e), e);
188
+
189
+ free_node_as(e);
190
+
191
+ if (e->last_child) {
192
+ // Splice children into list
193
+ e->last_child->next = e->next;
194
+ e->next = e->first_child;
195
+ }
196
+ next = e->next;
197
+ NODE_MEM(e)->free(e);
198
+ e = next;
199
+ }
200
+ }
201
+
202
+ void cmark_node_free(cmark_node *node) {
203
+ S_node_unlink(node);
204
+ node->next = NULL;
205
+ S_free_nodes(node);
206
+ }
207
+
208
+ cmark_node_type cmark_node_get_type(cmark_node *node) {
209
+ if (node == NULL) {
210
+ return CMARK_NODE_NONE;
211
+ } else {
212
+ return (cmark_node_type)node->type;
213
+ }
214
+ }
215
+
216
+ int cmark_node_set_type(cmark_node * node, cmark_node_type type) {
217
+ cmark_node_type initial_type;
218
+
219
+ if (type == node->type)
220
+ return 1;
221
+
222
+ initial_type = (cmark_node_type) node->type;
223
+ node->type = (uint16_t)type;
224
+
225
+ if (!S_can_contain(node->parent, node)) {
226
+ node->type = (uint16_t)initial_type;
227
+ return 0;
228
+ }
229
+
230
+ /* We rollback the type to free the union members appropriately */
231
+ node->type = (uint16_t)initial_type;
232
+ free_node_as(node);
233
+
234
+ node->type = (uint16_t)type;
235
+
236
+ return 1;
237
+ }
238
+
239
+ const char *cmark_node_get_type_string(cmark_node *node) {
240
+ if (node == NULL) {
241
+ return "NONE";
242
+ }
243
+
244
+ if (node->extension && node->extension->get_type_string_func) {
245
+ return node->extension->get_type_string_func(node->extension, node);
246
+ }
247
+
248
+ switch (node->type) {
249
+ case CMARK_NODE_NONE:
250
+ return "none";
251
+ case CMARK_NODE_DOCUMENT:
252
+ return "document";
253
+ case CMARK_NODE_BLOCK_QUOTE:
254
+ return "block_quote";
255
+ case CMARK_NODE_LIST:
256
+ return "list";
257
+ case CMARK_NODE_ITEM:
258
+ return "item";
259
+ case CMARK_NODE_CODE_BLOCK:
260
+ return "code_block";
261
+ case CMARK_NODE_HTML_BLOCK:
262
+ return "html_block";
263
+ case CMARK_NODE_CUSTOM_BLOCK:
264
+ return "custom_block";
265
+ case CMARK_NODE_PARAGRAPH:
266
+ return "paragraph";
267
+ case CMARK_NODE_HEADING:
268
+ return "heading";
269
+ case CMARK_NODE_THEMATIC_BREAK:
270
+ return "thematic_break";
271
+ case CMARK_NODE_TEXT:
272
+ return "text";
273
+ case CMARK_NODE_SOFTBREAK:
274
+ return "softbreak";
275
+ case CMARK_NODE_LINEBREAK:
276
+ return "linebreak";
277
+ case CMARK_NODE_CODE:
278
+ return "code";
279
+ case CMARK_NODE_HTML_INLINE:
280
+ return "html_inline";
281
+ case CMARK_NODE_CUSTOM_INLINE:
282
+ return "custom_inline";
283
+ case CMARK_NODE_EMPH:
284
+ return "emph";
285
+ case CMARK_NODE_STRONG:
286
+ return "strong";
287
+ case CMARK_NODE_LINK:
288
+ return "link";
289
+ case CMARK_NODE_IMAGE:
290
+ return "image";
291
+ }
292
+
293
+ return "<unknown>";
294
+ }
295
+
296
+ cmark_node *cmark_node_next(cmark_node *node) {
297
+ if (node == NULL) {
298
+ return NULL;
299
+ } else {
300
+ return node->next;
301
+ }
302
+ }
303
+
304
+ cmark_node *cmark_node_previous(cmark_node *node) {
305
+ if (node == NULL) {
306
+ return NULL;
307
+ } else {
308
+ return node->prev;
309
+ }
310
+ }
311
+
312
+ cmark_node *cmark_node_parent(cmark_node *node) {
313
+ if (node == NULL) {
314
+ return NULL;
315
+ } else {
316
+ return node->parent;
317
+ }
318
+ }
319
+
320
+ cmark_node *cmark_node_first_child(cmark_node *node) {
321
+ if (node == NULL) {
322
+ return NULL;
323
+ } else {
324
+ return node->first_child;
325
+ }
326
+ }
327
+
328
+ cmark_node *cmark_node_last_child(cmark_node *node) {
329
+ if (node == NULL) {
330
+ return NULL;
331
+ } else {
332
+ return node->last_child;
333
+ }
334
+ }
335
+
336
+ cmark_node *cmark_node_parent_footnote_def(cmark_node *node) {
337
+ if (node == NULL) {
338
+ return NULL;
339
+ } else {
340
+ return node->parent_footnote_def;
341
+ }
342
+ }
343
+
344
+ void *cmark_node_get_user_data(cmark_node *node) {
345
+ if (node == NULL) {
346
+ return NULL;
347
+ } else {
348
+ return node->user_data;
349
+ }
350
+ }
351
+
352
+ int cmark_node_set_user_data(cmark_node *node, void *user_data) {
353
+ if (node == NULL) {
354
+ return 0;
355
+ }
356
+ node->user_data = user_data;
357
+ return 1;
358
+ }
359
+
360
+ int cmark_node_set_user_data_free_func(cmark_node *node,
361
+ cmark_free_func free_func) {
362
+ if (node == NULL) {
363
+ return 0;
364
+ }
365
+ node->user_data_free_func = free_func;
366
+ return 1;
367
+ }
368
+
369
+ const char *cmark_node_get_literal(cmark_node *node) {
370
+ if (node == NULL) {
371
+ return NULL;
372
+ }
373
+
374
+ switch (node->type) {
375
+ case CMARK_NODE_HTML_BLOCK:
376
+ case CMARK_NODE_TEXT:
377
+ case CMARK_NODE_HTML_INLINE:
378
+ case CMARK_NODE_CODE:
379
+ case CMARK_NODE_FOOTNOTE_REFERENCE:
380
+ case CMARK_NODE_FOOTNOTE_DEFINITION:
381
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal);
382
+
383
+ case CMARK_NODE_CODE_BLOCK:
384
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.literal);
385
+
386
+ default:
387
+ break;
388
+ }
389
+
390
+ return NULL;
391
+ }
392
+
393
+ int cmark_node_set_literal(cmark_node *node, const char *content) {
394
+ if (node == NULL) {
395
+ return 0;
396
+ }
397
+
398
+ switch (node->type) {
399
+ case CMARK_NODE_HTML_BLOCK:
400
+ case CMARK_NODE_TEXT:
401
+ case CMARK_NODE_HTML_INLINE:
402
+ case CMARK_NODE_CODE:
403
+ case CMARK_NODE_FOOTNOTE_REFERENCE:
404
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.literal, content);
405
+ return 1;
406
+
407
+ case CMARK_NODE_CODE_BLOCK:
408
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.literal, content);
409
+ return 1;
410
+
411
+ default:
412
+ break;
413
+ }
414
+
415
+ return 0;
416
+ }
417
+
418
+ const char *cmark_node_get_string_content(cmark_node *node) {
419
+ return (char *) node->content.ptr;
420
+ }
421
+
422
+ int cmark_node_set_string_content(cmark_node *node, const char *content) {
423
+ cmark_strbuf_sets(&node->content, content);
424
+ return true;
425
+ }
426
+
427
+ int cmark_node_get_heading_level(cmark_node *node) {
428
+ if (node == NULL) {
429
+ return 0;
430
+ }
431
+
432
+ switch (node->type) {
433
+ case CMARK_NODE_HEADING:
434
+ return node->as.heading.level;
435
+
436
+ default:
437
+ break;
438
+ }
439
+
440
+ return 0;
441
+ }
442
+
443
+ int cmark_node_set_heading_level(cmark_node *node, int level) {
444
+ if (node == NULL || level < 1 || level > 6) {
445
+ return 0;
446
+ }
447
+
448
+ switch (node->type) {
449
+ case CMARK_NODE_HEADING:
450
+ node->as.heading.level = level;
451
+ return 1;
452
+
453
+ default:
454
+ break;
455
+ }
456
+
457
+ return 0;
458
+ }
459
+
460
+ cmark_list_type cmark_node_get_list_type(cmark_node *node) {
461
+ if (node == NULL) {
462
+ return CMARK_NO_LIST;
463
+ }
464
+
465
+ if (node->type == CMARK_NODE_LIST) {
466
+ return node->as.list.list_type;
467
+ } else {
468
+ return CMARK_NO_LIST;
469
+ }
470
+ }
471
+
472
+ int cmark_node_set_list_type(cmark_node *node, cmark_list_type type) {
473
+ if (!(type == CMARK_BULLET_LIST || type == CMARK_ORDERED_LIST)) {
474
+ return 0;
475
+ }
476
+
477
+ if (node == NULL) {
478
+ return 0;
479
+ }
480
+
481
+ if (node->type == CMARK_NODE_LIST) {
482
+ node->as.list.list_type = type;
483
+ return 1;
484
+ } else {
485
+ return 0;
486
+ }
487
+ }
488
+
489
+ cmark_delim_type cmark_node_get_list_delim(cmark_node *node) {
490
+ if (node == NULL) {
491
+ return CMARK_NO_DELIM;
492
+ }
493
+
494
+ if (node->type == CMARK_NODE_LIST) {
495
+ return node->as.list.delimiter;
496
+ } else {
497
+ return CMARK_NO_DELIM;
498
+ }
499
+ }
500
+
501
+ int cmark_node_set_list_delim(cmark_node *node, cmark_delim_type delim) {
502
+ if (!(delim == CMARK_PERIOD_DELIM || delim == CMARK_PAREN_DELIM)) {
503
+ return 0;
504
+ }
505
+
506
+ if (node == NULL) {
507
+ return 0;
508
+ }
509
+
510
+ if (node->type == CMARK_NODE_LIST) {
511
+ node->as.list.delimiter = delim;
512
+ return 1;
513
+ } else {
514
+ return 0;
515
+ }
516
+ }
517
+
518
+ int cmark_node_get_list_start(cmark_node *node) {
519
+ if (node == NULL) {
520
+ return 0;
521
+ }
522
+
523
+ if (node->type == CMARK_NODE_LIST) {
524
+ return node->as.list.start;
525
+ } else {
526
+ return 0;
527
+ }
528
+ }
529
+
530
+ int cmark_node_set_list_start(cmark_node *node, int start) {
531
+ if (node == NULL || start < 0) {
532
+ return 0;
533
+ }
534
+
535
+ if (node->type == CMARK_NODE_LIST) {
536
+ node->as.list.start = start;
537
+ return 1;
538
+ } else {
539
+ return 0;
540
+ }
541
+ }
542
+
543
+ int cmark_node_get_list_tight(cmark_node *node) {
544
+ if (node == NULL) {
545
+ return 0;
546
+ }
547
+
548
+ if (node->type == CMARK_NODE_LIST) {
549
+ return node->as.list.tight;
550
+ } else {
551
+ return 0;
552
+ }
553
+ }
554
+
555
+ int cmark_node_set_list_tight(cmark_node *node, int tight) {
556
+ if (node == NULL) {
557
+ return 0;
558
+ }
559
+
560
+ if (node->type == CMARK_NODE_LIST) {
561
+ node->as.list.tight = tight == 1;
562
+ return 1;
563
+ } else {
564
+ return 0;
565
+ }
566
+ }
567
+
568
+ int cmark_node_get_item_index(cmark_node *node) {
569
+ if (node == NULL) {
570
+ return 0;
571
+ }
572
+
573
+ if (node->type == CMARK_NODE_ITEM) {
574
+ return node->as.list.start;
575
+ } else {
576
+ return 0;
577
+ }
578
+ }
579
+
580
+ int cmark_node_set_item_index(cmark_node *node, int idx) {
581
+ if (node == NULL || idx < 0) {
582
+ return 0;
583
+ }
584
+
585
+ if (node->type == CMARK_NODE_ITEM) {
586
+ node->as.list.start = idx;
587
+ return 1;
588
+ } else {
589
+ return 0;
590
+ }
591
+ }
592
+
593
+ const char *cmark_node_get_fence_info(cmark_node *node) {
594
+ if (node == NULL) {
595
+ return NULL;
596
+ }
597
+
598
+ if (node->type == CMARK_NODE_CODE_BLOCK) {
599
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.info);
600
+ } else {
601
+ return NULL;
602
+ }
603
+ }
604
+
605
+ int cmark_node_set_fence_info(cmark_node *node, const char *info) {
606
+ if (node == NULL) {
607
+ return 0;
608
+ }
609
+
610
+ if (node->type == CMARK_NODE_CODE_BLOCK) {
611
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.info, info);
612
+ return 1;
613
+ } else {
614
+ return 0;
615
+ }
616
+ }
617
+
618
+ int cmark_node_get_fenced(cmark_node *node, int *length, int *offset, char *character) {
619
+ if (node == NULL) {
620
+ return 0;
621
+ }
622
+
623
+ if (node->type == CMARK_NODE_CODE_BLOCK) {
624
+ *length = node->as.code.fence_length;
625
+ *offset = node->as.code.fence_offset;
626
+ *character = node->as.code.fence_char;
627
+ return node->as.code.fenced;
628
+ } else {
629
+ return 0;
630
+ }
631
+ }
632
+
633
+ int cmark_node_set_fenced(cmark_node * node, int fenced,
634
+ int length, int offset, char character) {
635
+ if (node == NULL) {
636
+ return 0;
637
+ }
638
+
639
+ if (node->type == CMARK_NODE_CODE_BLOCK) {
640
+ node->as.code.fenced = (int8_t)fenced;
641
+ node->as.code.fence_length = (uint8_t)length;
642
+ node->as.code.fence_offset = (uint8_t)offset;
643
+ node->as.code.fence_char = character;
644
+ return 1;
645
+ } else {
646
+ return 0;
647
+ }
648
+ }
649
+
650
+ const char *cmark_node_get_url(cmark_node *node) {
651
+ if (node == NULL) {
652
+ return NULL;
653
+ }
654
+
655
+ switch (node->type) {
656
+ case CMARK_NODE_LINK:
657
+ case CMARK_NODE_IMAGE:
658
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.url);
659
+ default:
660
+ break;
661
+ }
662
+
663
+ return NULL;
664
+ }
665
+
666
+ int cmark_node_set_url(cmark_node *node, const char *url) {
667
+ if (node == NULL) {
668
+ return 0;
669
+ }
670
+
671
+ switch (node->type) {
672
+ case CMARK_NODE_LINK:
673
+ case CMARK_NODE_IMAGE:
674
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.url, url);
675
+ return 1;
676
+ default:
677
+ break;
678
+ }
679
+
680
+ return 0;
681
+ }
682
+
683
+ const char *cmark_node_get_title(cmark_node *node) {
684
+ if (node == NULL) {
685
+ return NULL;
686
+ }
687
+
688
+ switch (node->type) {
689
+ case CMARK_NODE_LINK:
690
+ case CMARK_NODE_IMAGE:
691
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.title);
692
+ default:
693
+ break;
694
+ }
695
+
696
+ return NULL;
697
+ }
698
+
699
+ int cmark_node_set_title(cmark_node *node, const char *title) {
700
+ if (node == NULL) {
701
+ return 0;
702
+ }
703
+
704
+ switch (node->type) {
705
+ case CMARK_NODE_LINK:
706
+ case CMARK_NODE_IMAGE:
707
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.title, title);
708
+ return 1;
709
+ default:
710
+ break;
711
+ }
712
+
713
+ return 0;
714
+ }
715
+
716
+ const char *cmark_node_get_on_enter(cmark_node *node) {
717
+ if (node == NULL) {
718
+ return NULL;
719
+ }
720
+
721
+ switch (node->type) {
722
+ case CMARK_NODE_CUSTOM_INLINE:
723
+ case CMARK_NODE_CUSTOM_BLOCK:
724
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_enter);
725
+ default:
726
+ break;
727
+ }
728
+
729
+ return NULL;
730
+ }
731
+
732
+ int cmark_node_set_on_enter(cmark_node *node, const char *on_enter) {
733
+ if (node == NULL) {
734
+ return 0;
735
+ }
736
+
737
+ switch (node->type) {
738
+ case CMARK_NODE_CUSTOM_INLINE:
739
+ case CMARK_NODE_CUSTOM_BLOCK:
740
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_enter, on_enter);
741
+ return 1;
742
+ default:
743
+ break;
744
+ }
745
+
746
+ return 0;
747
+ }
748
+
749
+ const char *cmark_node_get_on_exit(cmark_node *node) {
750
+ if (node == NULL) {
751
+ return NULL;
752
+ }
753
+
754
+ switch (node->type) {
755
+ case CMARK_NODE_CUSTOM_INLINE:
756
+ case CMARK_NODE_CUSTOM_BLOCK:
757
+ return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_exit);
758
+ default:
759
+ break;
760
+ }
761
+
762
+ return NULL;
763
+ }
764
+
765
+ int cmark_node_set_on_exit(cmark_node *node, const char *on_exit) {
766
+ if (node == NULL) {
767
+ return 0;
768
+ }
769
+
770
+ switch (node->type) {
771
+ case CMARK_NODE_CUSTOM_INLINE:
772
+ case CMARK_NODE_CUSTOM_BLOCK:
773
+ cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_exit, on_exit);
774
+ return 1;
775
+ default:
776
+ break;
777
+ }
778
+
779
+ return 0;
780
+ }
781
+
782
+ cmark_syntax_extension *cmark_node_get_syntax_extension(cmark_node *node) {
783
+ if (node == NULL) {
784
+ return NULL;
785
+ }
786
+
787
+ return node->extension;
788
+ }
789
+
790
+ int cmark_node_set_syntax_extension(cmark_node *node, cmark_syntax_extension *extension) {
791
+ if (node == NULL) {
792
+ return 0;
793
+ }
794
+
795
+ node->extension = extension;
796
+ return 1;
797
+ }
798
+
799
+ int cmark_node_get_start_line(cmark_node *node) {
800
+ if (node == NULL) {
801
+ return 0;
802
+ }
803
+ return node->start_line;
804
+ }
805
+
806
+ int cmark_node_get_start_column(cmark_node *node) {
807
+ if (node == NULL) {
808
+ return 0;
809
+ }
810
+ return node->start_column;
811
+ }
812
+
813
+ int cmark_node_get_end_line(cmark_node *node) {
814
+ if (node == NULL) {
815
+ return 0;
816
+ }
817
+ return node->end_line;
818
+ }
819
+
820
+ int cmark_node_get_end_column(cmark_node *node) {
821
+ if (node == NULL) {
822
+ return 0;
823
+ }
824
+ return node->end_column;
825
+ }
826
+
827
+ // Unlink a node without adjusting its next, prev, and parent pointers.
828
+ static void S_node_unlink(cmark_node *node) {
829
+ if (node == NULL) {
830
+ return;
831
+ }
832
+
833
+ if (node->prev) {
834
+ node->prev->next = node->next;
835
+ }
836
+ if (node->next) {
837
+ node->next->prev = node->prev;
838
+ }
839
+
840
+ // Adjust first_child and last_child of parent.
841
+ cmark_node *parent = node->parent;
842
+ if (parent) {
843
+ if (parent->first_child == node) {
844
+ parent->first_child = node->next;
845
+ }
846
+ if (parent->last_child == node) {
847
+ parent->last_child = node->prev;
848
+ }
849
+ }
850
+ }
851
+
852
+ void cmark_node_unlink(cmark_node *node) {
853
+ S_node_unlink(node);
854
+
855
+ node->next = NULL;
856
+ node->prev = NULL;
857
+ node->parent = NULL;
858
+ }
859
+
860
+ int cmark_node_insert_before(cmark_node *node, cmark_node *sibling) {
861
+ if (node == NULL || sibling == NULL) {
862
+ return 0;
863
+ }
864
+
865
+ if (!node->parent || !S_can_contain(node->parent, sibling)) {
866
+ return 0;
867
+ }
868
+
869
+ S_node_unlink(sibling);
870
+
871
+ cmark_node *old_prev = node->prev;
872
+
873
+ // Insert 'sibling' between 'old_prev' and 'node'.
874
+ if (old_prev) {
875
+ old_prev->next = sibling;
876
+ }
877
+ sibling->prev = old_prev;
878
+ sibling->next = node;
879
+ node->prev = sibling;
880
+
881
+ // Set new parent.
882
+ cmark_node *parent = node->parent;
883
+ sibling->parent = parent;
884
+
885
+ // Adjust first_child of parent if inserted as first child.
886
+ if (parent && !old_prev) {
887
+ parent->first_child = sibling;
888
+ }
889
+
890
+ return 1;
891
+ }
892
+
893
+ int cmark_node_insert_after(cmark_node *node, cmark_node *sibling) {
894
+ if (node == NULL || sibling == NULL) {
895
+ return 0;
896
+ }
897
+
898
+ if (!node->parent || !S_can_contain(node->parent, sibling)) {
899
+ return 0;
900
+ }
901
+
902
+ S_node_unlink(sibling);
903
+
904
+ cmark_node *old_next = node->next;
905
+
906
+ // Insert 'sibling' between 'node' and 'old_next'.
907
+ if (old_next) {
908
+ old_next->prev = sibling;
909
+ }
910
+ sibling->next = old_next;
911
+ sibling->prev = node;
912
+ node->next = sibling;
913
+
914
+ // Set new parent.
915
+ cmark_node *parent = node->parent;
916
+ sibling->parent = parent;
917
+
918
+ // Adjust last_child of parent if inserted as last child.
919
+ if (parent && !old_next) {
920
+ parent->last_child = sibling;
921
+ }
922
+
923
+ return 1;
924
+ }
925
+
926
+ int cmark_node_replace(cmark_node *oldnode, cmark_node *newnode) {
927
+ if (!cmark_node_insert_before(oldnode, newnode)) {
928
+ return 0;
929
+ }
930
+ cmark_node_unlink(oldnode);
931
+ return 1;
932
+ }
933
+
934
+ int cmark_node_prepend_child(cmark_node *node, cmark_node *child) {
935
+ if (!S_can_contain(node, child)) {
936
+ return 0;
937
+ }
938
+
939
+ S_node_unlink(child);
940
+
941
+ cmark_node *old_first_child = node->first_child;
942
+
943
+ child->next = old_first_child;
944
+ child->prev = NULL;
945
+ child->parent = node;
946
+ node->first_child = child;
947
+
948
+ if (old_first_child) {
949
+ old_first_child->prev = child;
950
+ } else {
951
+ // Also set last_child if node previously had no children.
952
+ node->last_child = child;
953
+ }
954
+
955
+ return 1;
956
+ }
957
+
958
+ int cmark_node_append_child(cmark_node *node, cmark_node *child) {
959
+ if (!S_can_contain(node, child)) {
960
+ return 0;
961
+ }
962
+
963
+ S_node_unlink(child);
964
+
965
+ cmark_node *old_last_child = node->last_child;
966
+
967
+ child->next = NULL;
968
+ child->prev = old_last_child;
969
+ child->parent = node;
970
+ node->last_child = child;
971
+
972
+ if (old_last_child) {
973
+ old_last_child->next = child;
974
+ } else {
975
+ // Also set first_child if node previously had no children.
976
+ node->first_child = child;
977
+ }
978
+
979
+ return 1;
980
+ }
981
+
982
+ static void S_print_error(FILE *out, cmark_node *node, const char *elem) {
983
+ if (out == NULL) {
984
+ return;
985
+ }
986
+ fprintf(out, "Invalid '%s' in node type %s at %d:%d\n", elem,
987
+ cmark_node_get_type_string(node), node->start_line,
988
+ node->start_column);
989
+ }
990
+
991
+ int cmark_node_check(cmark_node *node, FILE *out) {
992
+ cmark_node *cur;
993
+ int errors = 0;
994
+
995
+ if (!node) {
996
+ return 0;
997
+ }
998
+
999
+ cur = node;
1000
+ for (;;) {
1001
+ if (cur->first_child) {
1002
+ if (cur->first_child->prev != NULL) {
1003
+ S_print_error(out, cur->first_child, "prev");
1004
+ cur->first_child->prev = NULL;
1005
+ ++errors;
1006
+ }
1007
+ if (cur->first_child->parent != cur) {
1008
+ S_print_error(out, cur->first_child, "parent");
1009
+ cur->first_child->parent = cur;
1010
+ ++errors;
1011
+ }
1012
+ cur = cur->first_child;
1013
+ continue;
1014
+ }
1015
+
1016
+ next_sibling:
1017
+ if (cur == node) {
1018
+ break;
1019
+ }
1020
+ if (cur->next) {
1021
+ if (cur->next->prev != cur) {
1022
+ S_print_error(out, cur->next, "prev");
1023
+ cur->next->prev = cur;
1024
+ ++errors;
1025
+ }
1026
+ if (cur->next->parent != cur->parent) {
1027
+ S_print_error(out, cur->next, "parent");
1028
+ cur->next->parent = cur->parent;
1029
+ ++errors;
1030
+ }
1031
+ cur = cur->next;
1032
+ continue;
1033
+ }
1034
+
1035
+ if (cur->parent->last_child != cur) {
1036
+ S_print_error(out, cur->parent, "last_child");
1037
+ cur->parent->last_child = cur;
1038
+ ++errors;
1039
+ }
1040
+ cur = cur->parent;
1041
+ goto next_sibling;
1042
+ }
1043
+
1044
+ return errors;
1045
+ }