apex-ruby 1.0.30 → 1.0.32

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/apex_src/vendor/cmark-gfm/extensions/table.c +7 -0
  20. data/ext/apex_ext/extconf.rb +31 -79
  21. data/lib/apex/version.rb +1 -1
  22. metadata +1 -469
  23. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  24. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  25. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  26. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  27. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  28. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  29. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  30. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  31. data/ext/apex_ext/apex_src/Package.swift +0 -192
  32. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  33. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  34. data/ext/apex_ext/apex_src/README.md +0 -536
  35. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  36. data/ext/apex_ext/apex_src/VERSION +0 -1
  37. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  38. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  39. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  40. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  41. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  42. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  43. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  44. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  45. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  46. data/ext/apex_ext/apex_src/debug.log +0 -7
  47. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  48. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  49. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  52. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  53. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  54. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  55. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  57. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  58. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  59. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  60. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  61. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  62. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  63. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  64. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  65. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  66. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  67. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  68. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  69. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  70. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  71. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  74. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  77. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  78. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  79. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  88. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  138. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  139. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  140. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  141. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  142. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  143. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  144. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  146. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  147. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  148. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  149. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  150. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  151. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  152. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  153. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  155. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  159. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  160. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  161. data/ext/apex_ext/apex_src/ial.html +0 -24
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  169. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  170. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  171. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  173. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  174. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  175. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  176. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  177. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  178. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  179. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  181. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  183. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  184. data/ext/apex_ext/apex_src/output.html +0 -87
  185. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  186. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  187. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  188. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  189. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  190. data/ext/apex_ext/apex_src/test.html +0 -103
  191. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  192. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  193. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  194. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  195. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  196. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  197. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  198. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  199. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  200. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  201. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  202. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  206. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  207. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  213. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  214. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  216. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  221. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  222. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  235. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  236. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  249. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  250. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  254. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  255. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  256. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  261. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  262. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  263. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  272. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  273. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  280. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  281. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  282. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  283. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  284. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  285. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  286. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  287. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  288. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  289. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  290. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  291. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  292. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  293. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  294. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  295. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  296. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  297. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  298. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  299. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  300. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  301. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  302. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  303. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  304. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  305. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  306. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  307. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  308. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  309. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  310. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  311. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  312. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  313. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  314. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  315. data/ext/apex_ext/apex_src/tests.rb +0 -39
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  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
- */