apex-ruby 1.0.29 → 1.0.31

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 (490) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/apex-ruby.gemspec +14 -3
  4. data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
  5. data/ext/apex_ext/apex_src/src/apex.c +64 -5
  6. data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
  7. data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
  8. data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
  9. data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
  10. data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
  11. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
  12. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
  13. data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
  14. data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
  15. data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
  16. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
  17. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
  18. data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
  19. data/ext/apex_ext/extconf.rb +31 -79
  20. data/lib/apex/version.rb +1 -1
  21. metadata +1 -470
  22. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  23. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  24. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  25. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  26. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  27. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  28. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  29. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  30. data/ext/apex_ext/apex_src/Package.swift +0 -192
  31. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  32. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  33. data/ext/apex_ext/apex_src/README.md +0 -536
  34. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  35. data/ext/apex_ext/apex_src/VERSION +0 -1
  36. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  37. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  38. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  39. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  40. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  41. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  42. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  43. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  44. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  45. data/ext/apex_ext/apex_src/debug.log +0 -7
  46. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  47. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  48. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  49. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  52. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  53. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  54. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  55. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  57. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  58. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  59. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  60. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  61. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  62. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  63. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  64. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  65. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  66. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  67. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  68. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  69. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  70. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  71. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  74. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  77. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  78. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  79. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  88. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  138. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  139. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  140. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  141. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  142. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  143. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  144. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  146. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  147. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  148. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  149. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  150. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  151. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  152. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  153. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  155. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  159. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  160. data/ext/apex_ext/apex_src/ial.html +0 -24
  161. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  169. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  170. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  171. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  173. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  174. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  175. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  176. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  177. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  178. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  179. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  181. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  183. data/ext/apex_ext/apex_src/output.html +0 -87
  184. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  185. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  186. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  187. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  188. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  189. data/ext/apex_ext/apex_src/test.html +0 -103
  190. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  191. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  192. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  193. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  194. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  195. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  196. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  197. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  198. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  199. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  200. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  201. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  202. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  206. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  207. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  213. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  214. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  216. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  221. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  222. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  235. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  249. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  250. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  254. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  255. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  256. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  261. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  262. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  263. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  272. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  273. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  280. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  281. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  282. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  283. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  284. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  285. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  286. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  287. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  288. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  289. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  290. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  291. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  292. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  293. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  294. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  295. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  296. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  297. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  298. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  299. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  300. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  301. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  302. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  303. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  304. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  305. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  306. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  307. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  308. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  309. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  310. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  311. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  312. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  313. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  314. data/ext/apex_ext/apex_src/tests.rb +0 -39
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +0 -38
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +0 -38
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
  409. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
  410. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
  411. data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
  412. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
  413. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
  414. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
  415. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
  416. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
  417. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
  418. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
  419. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
  420. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
  421. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
  422. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
  423. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
  424. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
  425. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
  426. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
  427. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
  428. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
  429. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
  430. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
  431. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
  432. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
  433. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
  434. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
  435. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
  436. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
  437. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
  438. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
  439. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
  440. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
  441. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
  442. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
  443. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
  444. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
  445. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
  446. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
  447. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
  448. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
  449. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
  450. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
  451. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
  452. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
  453. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
  454. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
  455. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
  456. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
  457. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
  458. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
  459. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
  460. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
  461. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
  462. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
  463. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
  464. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
  465. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
  466. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
  467. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
  468. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
  469. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
  470. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
  471. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  472. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
  473. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
  474. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
  475. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  476. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  477. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
  478. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
  479. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
  480. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
  481. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
  482. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
  483. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  484. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
  485. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
  486. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
  487. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
  488. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
  489. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
  490. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
@@ -1,418 +0,0 @@
1
- /**
2
- * Links Tests
3
- */
4
-
5
- #include "test_helpers.h"
6
- #include "apex/apex.h"
7
- #include "../src/extensions/wiki_links.h"
8
- #include <string.h>
9
-
10
- void test_wiki_links(void) {
11
- int suite_failures = suite_start();
12
- print_suite_title("Wiki Links Tests", false, true);
13
-
14
- apex_options opts = apex_options_default();
15
- opts.enable_wiki_links = true;
16
- char *html;
17
-
18
- /* Test basic wiki link */
19
- html = apex_markdown_to_html("[[Page]]", 8, &opts);
20
- assert_contains(html, "<a href=\"Page\">Page</a>", "Basic wiki link");
21
- apex_free_string(html);
22
-
23
- /* Test wiki links are NOT processed when feature is disabled */
24
- {
25
- apex_options disabled = apex_options_default();
26
- disabled.enable_wiki_links = false;
27
- html = apex_markdown_to_html("[[Page]]", 8, &disabled);
28
- assert_contains(html, "[[Page]]", "Wiki link literal preserved when disabled");
29
- assert_not_contains(html, "<a href=", "No link generated when wiki links disabled");
30
- apex_free_string(html);
31
- }
32
-
33
- /* Test wiki link with display text */
34
- html = apex_markdown_to_html("[[Page|Display]]", 16, &opts);
35
- assert_contains(html, "<a href=\"Page\">Display</a>", "Wiki link with display");
36
- apex_free_string(html);
37
-
38
- /* Test wiki link with section */
39
- html = apex_markdown_to_html("[[Page#Section]]", 16, &opts);
40
- assert_contains(html, "#Section", "Wiki link with section");
41
- apex_free_string(html);
42
-
43
- /* Test wiki link with section AND display text: [[Page#Sec|Display]] */
44
- html = apex_markdown_to_html("[[Page#Sec|Display]]", 20, &opts);
45
- assert_contains(html, "<a href=\"Page#Sec\">Display</a>", "Wiki link with section and display text");
46
- apex_free_string(html);
47
-
48
- /* Test multiple wiki links in one text node (prefix + between + tail handling) */
49
- html = apex_markdown_to_html("A [[One]] and [[Two|2]] end", strlen("A [[One]] and [[Two|2]] end"), &opts);
50
- assert_contains(html, "A ", "Multiple links: prefix preserved");
51
- assert_contains(html, "<a href=\"One\">One</a>", "Multiple links: first converted");
52
- assert_contains(html, "<a href=\"Two\">2</a>", "Multiple links: second converted");
53
- assert_contains(html, " end", "Multiple links: trailing text preserved");
54
- apex_free_string(html);
55
-
56
- /* Test adjacent wiki links */
57
- html = apex_markdown_to_html("[[A]][[B]]", strlen("[[A]][[B]]"), &opts);
58
- assert_contains(html, "<a href=\"A\">A</a>", "Adjacent links: first");
59
- assert_contains(html, "<a href=\"B\">B</a>", "Adjacent links: second");
60
- apex_free_string(html);
61
-
62
- /* Test malformed wiki link with no closing marker (should remain literal) */
63
- html = apex_markdown_to_html("Start [[Broken", strlen("Start [[Broken"), &opts);
64
- assert_contains(html, "[[Broken", "Malformed wiki link (no close) preserved as text");
65
- assert_not_contains(html, "<a href=", "Malformed wiki link (no close) does not create link");
66
- apex_free_string(html);
67
-
68
- /* Test empty wiki link content: [[]] should remain literal */
69
- html = apex_markdown_to_html("[[]]", strlen("[[]]"), &opts);
70
- assert_contains(html, "[[]]", "Empty wiki link preserved as text");
71
- assert_not_contains(html, "<a href=", "Empty wiki link does not create link");
72
- apex_free_string(html);
73
-
74
- /* Test space mode: dash (default) */
75
- opts.wikilink_space = 0; /* dash */
76
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
77
- assert_contains(html, "<a href=\"Home-Page\">Home Page</a>", "Wiki link space mode: dash");
78
- apex_free_string(html);
79
-
80
- /* Test space mode: none */
81
- opts.wikilink_space = 1; /* none */
82
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
83
- assert_contains(html, "<a href=\"HomePage\">Home Page</a>", "Wiki link space mode: none");
84
- apex_free_string(html);
85
-
86
- /* Test space mode: underscore */
87
- opts.wikilink_space = 2; /* underscore */
88
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
89
- assert_contains(html, "<a href=\"Home_Page\">Home Page</a>", "Wiki link space mode: underscore");
90
- apex_free_string(html);
91
-
92
- /* Test space mode: space (URL-encoded as %20) */
93
- opts.wikilink_space = 3; /* space */
94
- opts.wikilink_extension = NULL; /* Reset extension */
95
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
96
- assert_contains(html, "<a href=\"Home%20Page\">Home Page</a>", "Wiki link space mode: space (URL-encoded)");
97
- apex_free_string(html);
98
-
99
- /* Test extension without leading dot */
100
- opts.wikilink_space = 0; /* dash (default) */
101
- opts.wikilink_extension = "html";
102
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
103
- assert_contains(html, "<a href=\"Home-Page.html\">Home Page</a>", "Wiki link with extension (no leading dot)");
104
- apex_free_string(html);
105
-
106
- /* Test extension with leading dot */
107
- opts.wikilink_extension = ".html";
108
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
109
- assert_contains(html, "<a href=\"Home-Page.html\">Home Page</a>", "Wiki link with extension (with leading dot)");
110
- apex_free_string(html);
111
-
112
- /* Test extension with section */
113
- opts.wikilink_extension = "html";
114
- html = apex_markdown_to_html("[[Home Page#Section]]", 21, &opts);
115
- assert_contains(html, "<a href=\"Home-Page.html#Section\">Home Page</a>", "Wiki link with extension and section");
116
- apex_free_string(html);
117
-
118
- /* Test extension with display text */
119
- {
120
- apex_options test_opts = apex_options_default();
121
- test_opts.enable_wiki_links = true;
122
- test_opts.wikilink_space = 0; /* dash */
123
- test_opts.wikilink_extension = "html";
124
- html = apex_markdown_to_html("[[Home Page|Main]]", 18, &test_opts);
125
- assert_contains(html, "<a href=\"Home-Page.html\">Main</a>", "Wiki link with extension and display text");
126
- apex_free_string(html);
127
- }
128
-
129
- /* Test space mode none with extension */
130
- opts.wikilink_space = 1; /* none */
131
- opts.wikilink_extension = "md";
132
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
133
- assert_contains(html, "<a href=\"HomePage.md\">Home Page</a>", "Wiki link space mode none with extension");
134
- apex_free_string(html);
135
-
136
- /* Test space mode underscore with extension */
137
- opts.wikilink_space = 2; /* underscore */
138
- opts.wikilink_extension = "html";
139
- html = apex_markdown_to_html("[[Home Page]]", 13, &opts);
140
- assert_contains(html, "<a href=\"Home_Page.html\">Home Page</a>", "Wiki link space mode underscore with extension");
141
- apex_free_string(html);
142
-
143
- /* Test multiple spaces with dash mode */
144
- {
145
- apex_options test_opts = apex_options_default();
146
- test_opts.enable_wiki_links = true;
147
- test_opts.wikilink_space = 0; /* dash */
148
- test_opts.wikilink_extension = NULL;
149
- html = apex_markdown_to_html("[[My Home Page]]", 16, &test_opts);
150
- assert_contains(html, "<a href=\"My-Home-Page\">My Home Page</a>", "Wiki link multiple spaces with dash");
151
- apex_free_string(html);
152
- }
153
-
154
- /* Test multiple spaces with none mode */
155
- {
156
- apex_options test_opts = apex_options_default();
157
- test_opts.enable_wiki_links = true;
158
- test_opts.wikilink_space = 1; /* none */
159
- test_opts.wikilink_extension = NULL;
160
- html = apex_markdown_to_html("[[My Home Page]]", 16, &test_opts);
161
- assert_contains(html, "<a href=\"MyHomePage\">My Home Page</a>", "Wiki link multiple spaces with none");
162
- apex_free_string(html);
163
- }
164
-
165
- struct {
166
- const char *md;
167
- size_t md_len;
168
- int wikilink_space;
169
- const char *wikilink_extension;
170
- const char *expect;
171
- const char *desc;
172
- } sanitize_tests[] = {
173
- /* basic sanitization */
174
- { "[[Mork💓Mindy]]", 17, WIKILINK_SPACE_DASH, NULL, "href=\"mork-mindy\"", "Sanitize emoji in the middle of words" },
175
- { "[[UPPERCASE Page]]", 18, WIKILINK_SPACE_DASH, NULL, "<a href=\"uppercase-page\">UPPERCASE Page</a>", "Sanitize lowercases" },
176
- { "[[Hello!! World!!]]", 19, WIKILINK_SPACE_DASH, NULL, "<a href=\"hello-world\">Hello!! World!!</a>", "Sanitize replaces non-alnum" },
177
- { "[[Hello World]]", 17, WIKILINK_SPACE_DASH, NULL, "<a href=\"hello-world\">Hello World</a>", "Sanitize removes duplicate dashes" },
178
- { "[[???Hello World???]]", 21, WIKILINK_SPACE_DASH, NULL, "href=\"hello-world\"", "Sanitize removes leading/trailing" },
179
- { "[[Hello World]]", 15, WIKILINK_SPACE_DASH, "html", "<a href=\"hello-world.html\">Hello World</a>", "Sanitize with extension" },
180
- { "[[path/to/FILE.MD]]", 19, WIKILINK_SPACE_DASH, NULL, "href=\"path/to/file.md\"", "Sanitize preserves slashes and periods" },
181
- { "[[My Page Name|Click Here]]", 27, WIKILINK_SPACE_DASH, NULL, "<a href=\"my-page-name\">Click Here</a>", "Sanitize with display text" },
182
- /* apostrophes and quotes always removed */
183
- { "[[O'Brien's Page]]", 18, WIKILINK_SPACE_DASH, NULL, "href=\"obriens-page\"", "Sanitize removes apostrophes" },
184
- { "[[Abso\\`fricking´lutely]]", 27, WIKILINK_SPACE_DASH, NULL, "href=\"absofrickinglutely\"", "Sanitize removes ascii fancy apostrophes" },
185
- { "[[Abso‘fricking’lutely]]", 28, WIKILINK_SPACE_DASH, NULL, "href=\"absofrickinglutely\"", "Sanitize removes unicode fancy apostrophes" },
186
- { "[[Abso\"fricking\"lutely]]", 28, WIKILINK_SPACE_DASH, NULL, "href=\"absofrickinglutely\"", "Sanitize removes quotes" },
187
- { "[[Abso“fricking”lutely]]", 28, WIKILINK_SPACE_DASH, NULL, "href=\"absofrickinglutely\"", "Sanitize removes unicode fancy quotes" },
188
- /* different space modes */
189
- { "[[Hello World]]", 15, WIKILINK_SPACE_UNDERSCORE, NULL, "<a href=\"hello_world\">Hello World</a>", "Sanitize with underscore mode" },
190
- { "[[Hello World!!!]]", 18, WIKILINK_SPACE_NONE, NULL, "<a href=\"helloworld\">Hello World!!!</a>", "Sanitize with none mode" },
191
- /* unicode accents */
192
- { "[[L" "\xC3\xA9" "on]]", 22, WIKILINK_SPACE_DASH, NULL, "<a href=\"leon\"", "Accents removed NFC: lowercase" },
193
- { "[[L" "\xC3\x89" "ON]]", 22, WIKILINK_SPACE_DASH, NULL, "<a href=\"leon\"", "Accents removed NFC: uppercase" },
194
- { "[[L" "\x65\xCC\x81" "on]]", 22, WIKILINK_SPACE_DASH, NULL, "<a href=\"leon\"", "Accents removed NFD: lowercase" },
195
- { "[[L" "\x45\xCC\x81" "ON]]", 22, WIKILINK_SPACE_DASH, NULL, "<a href=\"leon\"", "Accents removed NFD: uppercase" },
196
- /* ligatures: æ (U+00E6) = 0xC3 0xA6, Æ (U+00C6) = 0xC3 0x86, ß (U+00DF) = 0xC3 0x9F*/
197
- { "[[" "\xC3\xA6" "on]]", 9, WIKILINK_SPACE_DASH, NULL, "<a href=\"aeon\"", "Ligature ae lowercase" },
198
- { "[[" "\xC3\x86" "ON]]", 9, WIKILINK_SPACE_DASH, NULL, "<a href=\"aeon\"", "Ligature ae uppercase" },
199
- { "[[Stra" "\xC3\x9F" "e]]", 12, WIKILINK_SPACE_DASH, NULL, "<a href=\"strasse\"", "Ligature ss" },
200
- };
201
- for (size_t i = 0; i < sizeof(sanitize_tests)/sizeof(sanitize_tests[0]); ++i) {
202
- apex_options test_opts = apex_options_default();
203
- test_opts.enable_wiki_links = true;
204
- test_opts.wikilink_space = sanitize_tests[i].wikilink_space;
205
- test_opts.wikilink_sanitize = true;
206
- test_opts.wikilink_extension = sanitize_tests[i].wikilink_extension;
207
- html = apex_markdown_to_html(
208
- sanitize_tests[i].md,
209
- sanitize_tests[i].md_len,
210
- &test_opts
211
- );
212
- assert_contains(html, sanitize_tests[i].expect, sanitize_tests[i].desc);
213
- apex_free_string(html);
214
- }
215
-
216
- /* Reset options */
217
- opts.wikilink_extension = NULL;
218
- opts.wikilink_space = 0; /* dash (default) */
219
-
220
- /* Direct calls for coverage: create_wiki_links_extension returns NULL (postprocess-only) */
221
- test_result(create_wiki_links_extension() == NULL, "create_wiki_links_extension returns NULL (postprocess-only)");
222
-
223
- /* Direct calls for coverage: wiki_links_set_config (no-op unless ext+config provided) */
224
- {
225
- wiki_link_config cfg;
226
- cfg.base_path = "/wiki/";
227
- cfg.extension = ".html";
228
- cfg.space_mode = WIKILINK_SPACE_DASH;
229
-
230
- cmark_syntax_extension *ext = cmark_syntax_extension_new("dummy_wiki");
231
- wiki_links_set_config(ext, &cfg);
232
- cmark_syntax_extension_free(cmark_get_default_mem_allocator(), ext);
233
- test_result(true, "wiki_links_set_config called with extension and config");
234
- }
235
-
236
- bool had_failures = suite_end(suite_failures);
237
- print_suite_title("Wiki Links Tests", had_failures, false);
238
- }
239
-
240
- /**
241
- * Test math support
242
- */
243
-
244
- void test_image_embedding(void) {
245
- int suite_failures = suite_start();
246
- print_suite_title("Image Embedding Tests", false, true);
247
-
248
- apex_options opts = apex_options_default();
249
- char *html;
250
-
251
- /* Test local image embedding */
252
- opts.embed_images = true;
253
- opts.base_directory = TEST_FIXTURES_DIR;
254
- const char *local_image_md = "![Test Image](test_image.png)";
255
- html = apex_markdown_to_html(local_image_md, strlen(local_image_md), &opts);
256
- assert_contains(html, "<img", "Local image generates img tag");
257
- assert_contains(html, "data:image/png;base64,", "Local image embedded as base64 data URL");
258
- assert_not_contains(html, "test_image.png", "Local image path replaced with data URL");
259
- apex_free_string(html);
260
-
261
- /* Test that local images are not embedded when flag is off */
262
- opts.embed_images = false;
263
- html = apex_markdown_to_html(local_image_md, strlen(local_image_md), &opts);
264
- assert_contains(html, "<img", "Local image generates img tag");
265
- assert_contains(html, "test_image.png", "Local image path preserved when embedding disabled");
266
- assert_not_contains(html, "data:image/png;base64,", "Local image not embedded when flag is off");
267
- apex_free_string(html);
268
-
269
- /* Test that remote images are not embedded (only local images supported) */
270
- opts.embed_images = true;
271
- const char *remote_image_md = "![Remote Image](https://fastly.picsum.photos/id/973/300/300.jpg?hmac=KKNEjIQImwiXzi0Xly-dB7LhYl5SX5koiFRx0HiSUmA)";
272
- html = apex_markdown_to_html(remote_image_md, strlen(remote_image_md), &opts);
273
- assert_contains(html, "<img", "Remote image generates img tag");
274
- assert_contains(html, "fastly.picsum.photos", "Remote image URL preserved (only local images are embedded)");
275
- assert_not_contains(html, "data:image/", "Remote image not embedded");
276
- apex_free_string(html);
277
-
278
- /* Test that already-embedded data URLs are not processed again */
279
- opts.embed_images = true;
280
- const char *data_url_md = "![Already Embedded](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==)";
281
- html = apex_markdown_to_html(data_url_md, strlen(data_url_md), &opts);
282
- assert_contains(html, "data:image/png;base64,", "Data URL preserved");
283
- /* Should only appear once (not duplicated) */
284
- const char *first = strstr(html, "data:image/png;base64,");
285
- const char *second = first ? strstr(first + 1, "data:image/png;base64,") : NULL;
286
- if (first && !second) {
287
- test_result(true, "Data URL not processed again");
288
- } else {
289
- test_result(false, "Data URL was processed again");
290
- }
291
- apex_free_string(html);
292
-
293
- /* Test base_directory for relative path resolution */
294
- opts.embed_images = true;
295
- opts.base_directory = NULL; /* No base directory */
296
- const char *relative_image_md = "![Relative Image](test_image.png)";
297
- html = apex_markdown_to_html(relative_image_md, strlen(relative_image_md), &opts);
298
- /* Without base_directory, relative path might not be found, so it won't be embedded */
299
- assert_contains(html, "test_image.png", "Relative image path preserved when base_directory not set");
300
- apex_free_string(html);
301
-
302
- /* Test with base_directory set */
303
- opts.base_directory = TEST_FIXTURES_DIR;
304
- html = apex_markdown_to_html(relative_image_md, strlen(relative_image_md), &opts);
305
- assert_contains(html, "data:image/png;base64,", "Relative image embedded when base_directory is set");
306
- assert_not_contains(html, "test_image.png", "Relative image path replaced with data URL when base_directory set");
307
- apex_free_string(html);
308
-
309
- /* Test that absolute paths work regardless of base_directory */
310
- opts.base_directory = "/nonexistent/path";
311
- char abs_path[512];
312
- snprintf(abs_path, sizeof(abs_path), "![Absolute Image](%s/test_image.png)", TEST_FIXTURES_DIR);
313
- html = apex_markdown_to_html(abs_path, strlen(abs_path), &opts);
314
- assert_contains(html, "data:image/png;base64,", "Absolute path image embedded regardless of base_directory");
315
- apex_free_string(html);
316
-
317
- bool had_failures = suite_end(suite_failures);
318
- print_suite_title("Image Embedding Tests", had_failures, false);
319
- }
320
-
321
- /**
322
- * Test image width/height attribute conversion
323
- */
324
-
325
- void test_image_width_height_conversion(void) {
326
- int suite_failures = suite_start();
327
- print_suite_title("Image Width/Height Conversion Tests", false, true);
328
-
329
- apex_options opts = apex_options_for_mode(APEX_MODE_UNIFIED);
330
- char *html;
331
-
332
- /* Test 1: Percentage width → style attribute */
333
- html = apex_markdown_to_html("![](img.jpg){ width=50% }", strlen("![](img.jpg){ width=50% }"), &opts);
334
- assert_contains(html, "style=\"width: 50%\"", "Percentage width converted to style");
335
- assert_not_contains(html, "width=\"50%\"", "Percentage not in width attribute");
336
- apex_free_string(html);
337
-
338
- /* Test 2: Pixel width → integer width attribute */
339
- html = apex_markdown_to_html("![](img.jpg){ width=300px }", strlen("![](img.jpg){ width=300px }"), &opts);
340
- assert_contains(html, "width=\"300\"", "Pixel width converted to integer");
341
- assert_not_contains(html, "width=\"300px\"", "px suffix removed");
342
- assert_not_contains(html, "style=\"width: 300px\"", "Pixel not in style");
343
- apex_free_string(html);
344
-
345
- /* Test 3: Bare integer width → width attribute */
346
- html = apex_markdown_to_html("![](img.jpg){ width=300 }", strlen("![](img.jpg){ width=300 }"), &opts);
347
- assert_contains(html, "width=\"300\"", "Bare integer width preserved");
348
- apex_free_string(html);
349
-
350
- /* Test 4: Percentage height → style attribute */
351
- html = apex_markdown_to_html("![](img.jpg){ height=75% }", strlen("![](img.jpg){ height=75% }"), &opts);
352
- assert_contains(html, "style=\"height: 75%\"", "Percentage height converted to style");
353
- apex_free_string(html);
354
-
355
- /* Test 5: Pixel height → integer height attribute */
356
- html = apex_markdown_to_html("![](img.jpg){ height=200px }", strlen("![](img.jpg){ height=200px }"), &opts);
357
- assert_contains(html, "height=\"200\"", "Pixel height converted to integer");
358
- assert_not_contains(html, "height=\"200px\"", "px suffix removed");
359
- apex_free_string(html);
360
-
361
- /* Test 6: Both width and height with percentages → style */
362
- html = apex_markdown_to_html("![](img.jpg){ width=50% height=75% }", strlen("![](img.jpg){ width=50% height=75% }"), &opts);
363
- assert_contains(html, "style=\"width: 50%; height: 75%\"", "Both percentages in style");
364
- apex_free_string(html);
365
-
366
- /* Test 7: Mixed - pixel width, percentage height */
367
- html = apex_markdown_to_html("![](img.jpg){ width=300px height=50% }", strlen("![](img.jpg){ width=300px height=50% }"), &opts);
368
- assert_contains(html, "width=\"300\"", "Pixel width as attribute");
369
- assert_contains(html, "style=\"height: 50%\"", "Percentage height in style");
370
- apex_free_string(html);
371
-
372
- /* Test 8: Mixed - percentage width, pixel height */
373
- html = apex_markdown_to_html("![](img.jpg){ width=50% height=200px }", strlen("![](img.jpg){ width=50% height=200px }"), &opts);
374
- assert_contains(html, "height=\"200\"", "Pixel height as attribute");
375
- assert_contains(html, "style=\"width: 50%\"", "Percentage width in style");
376
- apex_free_string(html);
377
-
378
- /* Test 9: Other units (em, rem) → style */
379
- html = apex_markdown_to_html("![](img.jpg){ width=5em height=10rem }", strlen("![](img.jpg){ width=5em height=10rem }"), &opts);
380
- assert_contains(html, "style=\"width: 5em; height: 10rem\"", "Other units in style");
381
- apex_free_string(html);
382
-
383
- /* Test 10: Decimal pixel value → style */
384
- html = apex_markdown_to_html("![](img.jpg){ width=100.5px }", strlen("![](img.jpg){ width=100.5px }"), &opts);
385
- assert_contains(html, "style=\"width: 100.5px\"", "Decimal pixel in style");
386
- assert_not_contains(html, "width=\"100.5\"", "Decimal pixel not as attribute");
387
- apex_free_string(html);
388
-
389
- /* Test 11: Viewport units → style */
390
- html = apex_markdown_to_html("![](img.jpg){ width=50vw height=30vh }", strlen("![](img.jpg){ width=50vw height=30vh }"), &opts);
391
- assert_contains(html, "style=\"width: 50vw; height: 30vh\"", "Viewport units in style");
392
- apex_free_string(html);
393
-
394
- /* Test 12: Inline image with IAL and percentage */
395
- html = apex_markdown_to_html("![alt](img.jpg){ width=75% }", strlen("![alt](img.jpg){ width=75% }"), &opts);
396
- assert_contains(html, "style=\"width: 75%\"", "Inline image percentage in style");
397
- apex_free_string(html);
398
-
399
- /* Test 13: Mixed with other attributes (ID, class) */
400
- html = apex_markdown_to_html("![test](img.jpg){#test .image width=250px height=80% }", strlen("![test](img.jpg){#test .image width=250px height=80% }"), &opts);
401
- assert_contains(html, "id=\"test\"", "ID preserved");
402
- assert_contains(html, "class=\"image\"", "Class preserved");
403
- assert_contains(html, "width=\"250\"", "Pixel width as attribute");
404
- assert_contains(html, "style=\"height: 80%\"", "Percentage height in style");
405
- apex_free_string(html);
406
-
407
- /* Test 14: Zero pixel value */
408
- html = apex_markdown_to_html("![](img.jpg){ width=0px }", strlen("![](img.jpg){ width=0px }"), &opts);
409
- assert_contains(html, "width=\"0\"", "Zero pixel converted to integer");
410
- apex_free_string(html);
411
-
412
- bool had_failures = suite_end(suite_failures);
413
- print_suite_title("Image Width/Height Conversion Tests", had_failures, false);
414
- }
415
-
416
- /**
417
- * Test indices (mmark and TextIndex syntax)
418
- */