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,745 +0,0 @@
1
- # TOC Output Format Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Add `-t toc` that emits a Markdown unordered list of heading links, plus `--toc-min-max` defaults shared with HTML TOC markers.
6
-
7
- **Architecture:** Early-exit `APEX_OUTPUT_TOC` after AST prep (same point as markdown/json-filtered). Refactor `src/extensions/toc.c` to share heading collection/ID assignment between HTML marker TOC and a new Markdown TOC emitter. Option defaults (`toc_min`/`toc_max`, default 1,3) seed both paths; marker-specified ranges still override.
8
-
9
- **Tech Stack:** C (Apex + cmark-gfm), existing `tests/test_output.c` suite runner, man page / wiki docs.
10
-
11
- **Spec:** `docs/superpowers/specs/2026-07-12-toc-output-format-design.md`
12
-
13
- ---
14
-
15
- ## File map
16
-
17
- | File | Responsibility |
18
- |------|----------------|
19
- | `include/apex/apex.h` | `APEX_OUTPUT_TOC`; `toc_min` / `toc_max` on `apex_options` |
20
- | `src/apex.c` | Defaults; early-exit for TOC; pass defaults into `apex_process_toc` |
21
- | `src/extensions/toc.h` | Public Markdown helper; update `apex_process_toc` signature |
22
- | `src/extensions/toc.c` | Prefer manual IDs; Markdown emitter; default min/max when marker omits range |
23
- | `cli/main.c` | `-t toc`, `--toc-min-max`, help, option mask |
24
- | `src/extensions/metadata.c` | `toc-min-max` metadata key |
25
- | `tests/test_output.c` | `-t toc` + default-depth HTML TOC tests |
26
- | `tests/test_metadata.c` | Metadata `toc-min-max` parsing |
27
- | `man/apex.1.md` (+ regenerate `man/apex.1`) | Document format + flag |
28
- | `apex.wiki/Command-Line-Options.md`, `Syntax.md`, `Header-IDs.md` as needed | User docs |
29
-
30
- ---
31
-
32
- ### Task 1: Options + enum surface
33
-
34
- **Files:**
35
- - Modify: `include/apex/apex.h`
36
- - Modify: `src/apex.c` (`apex_options_default`, and any `apex_options_for_mode` copies that re-init options)
37
-
38
- - [ ] **Step 1: Add enum value and option fields**
39
-
40
- In `include/apex/apex.h`, extend the output format enum:
41
-
42
- ```c
43
- APEX_OUTPUT_MAN = 10, /* roff (man page source) */
44
- APEX_OUTPUT_MAN_HTML = 11, /* styled HTML man page */
45
- APEX_OUTPUT_TOC = 12 /* Markdown TOC list only */
46
- ```
47
-
48
- Near the header ID fields on `apex_options` (after `id_format`), add:
49
-
50
- ```c
51
- /* TOC depth defaults (used by -t toc and by HTML TOC markers without an explicit range) */
52
- int toc_min; /* Inclusive min heading level (default 1) */
53
- int toc_max; /* Inclusive max heading level (default 3) */
54
- ```
55
-
56
- - [ ] **Step 2: Initialize defaults in `apex_options_default`**
57
-
58
- In `src/apex.c` inside `apex_options_default()`, after `opts.id_format = 0;`:
59
-
60
- ```c
61
- opts.toc_min = 1;
62
- opts.toc_max = 3;
63
- ```
64
-
65
- If `apex_options_for_mode()` rebuilds options via `apex_options_default()`, no extra work. If any mode path zeroes the struct without going through default, set `toc_min`/`toc_max` there too.
66
-
67
- - [ ] **Step 3: Commit**
68
-
69
- ```bash
70
- git add include/apex/apex.h src/apex.c
71
- git commit -m "Add APEX_OUTPUT_TOC and toc_min/toc_max options"
72
- ```
73
-
74
- ---
75
-
76
- ### Task 2: Prefer manual heading IDs in TOC collection
77
-
78
- **Files:**
79
- - Modify: `src/extensions/toc.c`
80
- - Test: `tests/test_output.c`
81
-
82
- - [ ] **Step 1: Write failing test for manual ID in HTML TOC**
83
-
84
- Append inside `test_toc()` in `tests/test_output.c` (before suite_end):
85
-
86
- ```c
87
- /* Manual {#id} must appear in TOC hrefs */
88
- const char *manual_id_toc =
89
- "# Custom {#my-custom}\n\n{{TOC}}\n\n## Other";
90
- html = apex_markdown_to_html(manual_id_toc, strlen(manual_id_toc), &opts);
91
- assert_contains(html, "href=\"#my-custom\"", "TOC uses manual heading ID");
92
- apex_free_string(html);
93
- ```
94
-
95
- - [ ] **Step 2: Run test to verify it fails**
96
-
97
- ```bash
98
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc 2>&1 | rg -i "manual|FAIL|passed|failed"
99
- ```
100
-
101
- Expected: failure on "TOC uses manual heading ID" (current code always regenerates from text).
102
-
103
- - [ ] **Step 3: Assign IDs from `user_data` when present**
104
-
105
- In `src/extensions/toc.c`, replace the ID assignment loop in `apex_process_toc` (and share later with Markdown) with a helper:
106
-
107
- ```c
108
- static char *heading_id_from_attrs_or_text(const char *attrs, const char *text,
109
- apex_id_format_t id_format) {
110
- if (attrs) {
111
- const char *id_attr = strstr(attrs, "id=\"");
112
- if (id_attr) {
113
- const char *id_start = id_attr + 4;
114
- const char *id_end = strchr(id_start, '"');
115
- if (id_end && id_end > id_start) {
116
- size_t id_len = (size_t)(id_end - id_start);
117
- char *id = malloc(id_len + 1);
118
- if (id) {
119
- memcpy(id, id_start, id_len);
120
- id[id_len] = '\0';
121
- return id;
122
- }
123
- }
124
- }
125
- }
126
- return apex_generate_header_id(text, id_format);
127
- }
128
- ```
129
-
130
- Update `collect_headers` to store attrs (or look them up again). Simplest: keep attrs on the node and, when assigning IDs, pass `cmark_node` — better: store `char *attrs_copy` is unnecessary if we assign IDs during collection:
131
-
132
- In `collect_headers`, after creating `item`:
133
-
134
- ```c
135
- const char *attrs = (const char *)cmark_node_get_user_data(node);
136
- /* no_toc check already uses attrs */
137
- item->id = NULL; /* assigned in assign_header_ids */
138
- ```
139
-
140
- Add:
141
-
142
- ```c
143
- static void assign_header_ids(header_item *headers, cmark_node *document,
144
- int id_format) {
145
- /* Walk headers list in document order; for each, find matching heading
146
- * OR store attrs on header_item during collect. Prefer storing attrs: */
147
- }
148
- ```
149
-
150
- Preferred approach — extend `header_item`:
151
-
152
- ```c
153
- typedef struct header_item {
154
- int level;
155
- char *text;
156
- char *id;
157
- char *attrs; /* borrowed? NO — strdup user_data or extract id immediately */
158
- struct header_item *next;
159
- } header_item;
160
- ```
161
-
162
- Simplest reliable approach: extract ID during `collect_headers` once you know `id_format` — change signature to:
163
-
164
- ```c
165
- static header_item *collect_headers(cmark_node *node, header_item **tail,
166
- int id_format);
167
- ```
168
-
169
- and inside, after `normalize_toc_text`:
170
-
171
- ```c
172
- item->id = heading_id_from_attrs_or_text(attrs, item->text,
173
- (apex_id_format_t)id_format);
174
- ```
175
-
176
- Update `free_headers` (already frees `id`). Remove the separate ID loop in `apex_process_toc`.
177
-
178
- - [ ] **Step 4: Run test to verify it passes**
179
-
180
- ```bash
181
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc 2>&1 | rg -i "manual|FAIL|Results"
182
- ```
183
-
184
- Expected: "TOC uses manual heading ID" passes; suite overall green enough to proceed (note: Task 3 will change bare-marker max depth).
185
-
186
- - [ ] **Step 5: Commit**
187
-
188
- ```bash
189
- git add src/extensions/toc.c tests/test_output.c
190
- git commit -m "Prefer manual heading IDs when building TOC links"
191
- ```
192
-
193
- ---
194
-
195
- ### Task 3: Thread default min/max into HTML TOC markers
196
-
197
- **Files:**
198
- - Modify: `src/extensions/toc.h`
199
- - Modify: `src/extensions/toc.c`
200
- - Modify: `src/apex.c` (call site)
201
- - Test: `tests/test_output.c`
202
-
203
- - [ ] **Step 1: Write failing tests for option defaults on bare markers**
204
-
205
- In `test_toc()`:
206
-
207
- ```c
208
- /* Bare {{TOC}} should use option defaults (1-3): exclude H4 */
209
- const char *bare_default_depth =
210
- "# H1\n\n{{TOC}}\n\n## H2\n\n### H3\n\n#### H4";
211
- html = apex_markdown_to_html(bare_default_depth, strlen(bare_default_depth), &opts);
212
- assert_contains(html, "href=\"#h1\"", "Bare TOC includes H1 by default");
213
- assert_contains(html, "href=\"#h3\"", "Bare TOC includes H3 by default");
214
- assert_not_contains(html, "href=\"#h4\"", "Bare TOC excludes H4 by default (max 3)");
215
- apex_free_string(html);
216
-
217
- /* --toc-min-max via options: 2,4 */
218
- apex_options depth_opts = opts;
219
- depth_opts.toc_min = 2;
220
- depth_opts.toc_max = 4;
221
- html = apex_markdown_to_html(bare_default_depth, strlen(bare_default_depth), &depth_opts);
222
- assert_not_contains(html, "href=\"#h1\"", "toc_min=2 excludes H1");
223
- assert_contains(html, "href=\"#h4\"", "toc_max=4 includes H4");
224
- apex_free_string(html);
225
-
226
- /* Marker override wins over options */
227
- const char *override_toc =
228
- "# H1\n\n{{TOC:1-6}}\n\n## H2\n\n### H3\n\n#### H4\n\n##### H5";
229
- html = apex_markdown_to_html(override_toc, strlen(override_toc), &depth_opts);
230
- assert_contains(html, "href=\"#h1\"", "Marker range overrides toc_min");
231
- assert_contains(html, "href=\"#h5\"", "Marker range overrides toc_max");
232
- apex_free_string(html);
233
- ```
234
-
235
- - [ ] **Step 2: Run tests to verify failure on H4 exclusion**
236
-
237
- ```bash
238
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc 2>&1 | rg -i "Bare TOC excludes|FAIL|Results"
239
- ```
240
-
241
- Expected: "Bare TOC excludes H4 by default" fails (today bare marker uses max 6).
242
-
243
- - [ ] **Step 3: Update API and `parse_toc_marker`**
244
-
245
- `src/extensions/toc.h`:
246
-
247
- ```c
248
- char *apex_process_toc(const char *html, cmark_node *document, int id_format,
249
- int default_min, int default_max);
250
- ```
251
-
252
- In `toc.c`, change `parse_toc_marker` to accept defaults:
253
-
254
- ```c
255
- static void parse_toc_marker(const char *marker, int *min_level, int *max_level,
256
- int default_min, int default_max) {
257
- *min_level = default_min;
258
- *max_level = default_max;
259
- /* ... existing parsing that overwrites when marker specifies min/max ... */
260
- }
261
- ```
262
-
263
- Clamp after parse:
264
-
265
- ```c
266
- if (*min_level < 1) *min_level = 1;
267
- if (*max_level > 6) *max_level = 6;
268
- if (*min_level > *max_level) *max_level = *min_level;
269
- ```
270
-
271
- Update `apex_process_toc` signature and call:
272
-
273
- ```c
274
- parse_toc_marker(marker, &min_level, &max_level, default_min, default_max);
275
- ```
276
-
277
- In `src/apex.c`:
278
-
279
- ```c
280
- char *with_toc = apex_process_toc(html, document, options->id_format,
281
- options->toc_min, options->toc_max);
282
- ```
283
-
284
- - [ ] **Step 4: Run `toc` suite**
285
-
286
- ```bash
287
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc
288
- ```
289
-
290
- Expected: all TOC tests pass. If any older test assumed H4+ from bare `{{TOC}}`, update that test to use an explicit marker range.
291
-
292
- - [ ] **Step 5: Commit**
293
-
294
- ```bash
295
- git add src/extensions/toc.h src/extensions/toc.c src/apex.c tests/test_output.c
296
- git commit -m "Use toc_min/toc_max defaults for HTML TOC markers without a range"
297
- ```
298
-
299
- ---
300
-
301
- ### Task 4: Markdown TOC emitter + `-t toc` early exit
302
-
303
- **Files:**
304
- - Modify: `src/extensions/toc.h`
305
- - Modify: `src/extensions/toc.c`
306
- - Modify: `src/apex.c`
307
- - Test: `tests/test_output.c`
308
-
309
- - [ ] **Step 1: Write failing `-t toc` tests**
310
-
311
- Add to `test_toc()`:
312
-
313
- ```c
314
- /* -t toc: Markdown list, default depth 1-3 */
315
- apex_options toc_opts = apex_options_default();
316
- toc_opts.output_format = APEX_OUTPUT_TOC;
317
- const char *doc =
318
- "# Introduction\n\n"
319
- "## Getting Started\n\n"
320
- "### Installation\n\n"
321
- "#### Too Deep\n\n"
322
- "## Configuration\n\n"
323
- "# API\n"
324
- "{: .no_toc}\n";
325
- char *md = apex_markdown_to_html(doc, strlen(doc), &toc_opts);
326
- assert_contains(md, "- [Introduction](#introduction)\n", "TOC md has H1");
327
- assert_contains(md, " - [Getting Started](#getting-started)\n", "TOC md indents H2");
328
- assert_contains(md, " - [Installation](#installation)\n", "TOC md indents H3");
329
- assert_not_contains(md, "Too Deep", "TOC md excludes H4 by default");
330
- assert_not_contains(md, "API", "TOC md excludes no_toc heading");
331
- assert_not_contains(md, "<nav", "TOC md is not HTML");
332
- apex_free_string(md);
333
-
334
- toc_opts.toc_min = 2;
335
- toc_opts.toc_max = 4;
336
- md = apex_markdown_to_html(doc, strlen(doc), &toc_opts);
337
- assert_not_contains(md, "Introduction", "toc-min-max excludes H1");
338
- assert_contains(md, "Too Deep", "toc-min-max includes H4");
339
- apex_free_string(md);
340
-
341
- /* id-format mmd */
342
- toc_opts = apex_options_default();
343
- toc_opts.output_format = APEX_OUTPUT_TOC;
344
- toc_opts.id_format = 1; /* MMD */
345
- md = apex_markdown_to_html("# Hello World\n", 14, &toc_opts);
346
- assert_contains(md, "- [Hello World](#HelloWorld)\n", "TOC md respects MMD id-format");
347
- apex_free_string(md);
348
-
349
- /* empty */
350
- toc_opts = apex_options_default();
351
- toc_opts.output_format = APEX_OUTPUT_TOC;
352
- md = apex_markdown_to_html("No headings here.\n", 18, &toc_opts);
353
- if (md && (md[0] == '\0' || strcmp(md, "\n") == 0)) {
354
- test_result(true, "TOC md empty when no headings");
355
- } else {
356
- test_result(false, "TOC md empty when no headings");
357
- }
358
- apex_free_string(md);
359
- ```
360
-
361
- Adjust the MMD id expectation if `apex_generate_header_id` for "Hello World" differs — run a quick HTML render with `--id-format mmd` if needed and match that slug.
362
-
363
- - [ ] **Step 2: Run tests — expect missing format / wrong output**
364
-
365
- ```bash
366
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc 2>&1 | rg -i "TOC md|FAIL|Results"
367
- ```
368
-
369
- Expected: failures (TOC still goes through HTML path or ignores `APEX_OUTPUT_TOC`).
370
-
371
- - [ ] **Step 3: Implement `apex_generate_toc_markdown`**
372
-
373
- `toc.h`:
374
-
375
- ```c
376
- char *apex_generate_toc_markdown(cmark_node *document, int id_format,
377
- int min_level, int max_level);
378
- ```
379
-
380
- `toc.c` — mirror nesting logic of `generate_toc_html`, but emit Markdown:
381
-
382
- ```c
383
- char *apex_generate_toc_markdown(cmark_node *document, int id_format,
384
- int min_level, int max_level) {
385
- if (!document) return strdup("");
386
- if (min_level < 1) min_level = 1;
387
- if (max_level > 6) max_level = 6;
388
- if (min_level > max_level) max_level = min_level;
389
-
390
- header_item *tail = NULL;
391
- header_item *headers = collect_headers(document, &tail, id_format);
392
- if (!headers) return strdup("");
393
-
394
- size_t capacity = 4096;
395
- char *out = malloc(capacity);
396
- if (!out) {
397
- free_headers(headers);
398
- return strdup("");
399
- }
400
- char *write = out;
401
- size_t remaining = capacity;
402
-
403
- #define ENSURE(n) do { \
404
- if ((size_t)(n) >= remaining) { \
405
- size_t used = (size_t)(write - out); \
406
- capacity = used + (size_t)(n) + 1024; \
407
- char *nbuf = realloc(out, capacity); \
408
- if (!nbuf) { free(out); free_headers(headers); return strdup(""); } \
409
- out = nbuf; write = out + used; remaining = capacity - used; \
410
- } \
411
- } while (0)
412
-
413
- #define APPEND(str) do { \
414
- size_t len = strlen(str); \
415
- ENSURE(len + 1); \
416
- memcpy(write, str, len); \
417
- write += len; \
418
- remaining -= len; \
419
- } while (0)
420
-
421
- for (header_item *h = headers; h; h = h->next) {
422
- if (h->level < min_level || h->level > max_level) continue;
423
- int depth = h->level - min_level; /* 0 = flush */
424
- ENSURE((size_t)depth * 2 + strlen(h->text) + strlen(h->id) + 16);
425
- for (int i = 0; i < depth; i++) APPEND(" ");
426
- APPEND("- [");
427
- APPEND(h->text);
428
- APPEND("](#");
429
- APPEND(h->id);
430
- APPEND(")\n");
431
- }
432
-
433
- #undef APPEND
434
- #undef ENSURE
435
-
436
- *write = '\0';
437
- free_headers(headers);
438
- return out;
439
- }
440
- ```
441
-
442
- - [ ] **Step 4: Early-exit in `apex_markdown_to_html`**
443
-
444
- In `src/apex.c`, immediately after the JSON_FILTERED early return (before Markdown dialects), add:
445
-
446
- ```c
447
- if (options->output_format == APEX_OUTPUT_TOC) {
448
- char *toc_md = apex_generate_toc_markdown(document, options->id_format,
449
- options->toc_min, options->toc_max);
450
- return toc_md ? toc_md : strdup("");
451
- }
452
- ```
453
-
454
- Include `toc.h` if not already included at the top of `apex.c`.
455
-
456
- - [ ] **Step 5: Run tests**
457
-
458
- ```bash
459
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc
460
- ```
461
-
462
- Expected: all pass. Fix MMD slug assertion if the actual slug differs.
463
-
464
- - [ ] **Step 6: Commit**
465
-
466
- ```bash
467
- git add src/extensions/toc.h src/extensions/toc.c src/apex.c tests/test_output.c
468
- git commit -m "Add -t toc Markdown TOC output format"
469
- ```
470
-
471
- ---
472
-
473
- ### Task 5: CLI `--to toc` and `--toc-min-max`
474
-
475
- **Files:**
476
- - Modify: `cli/main.c`
477
-
478
- - [ ] **Step 1: Add option mask fields**
479
-
480
- In `apex_cli_option_mask`:
481
-
482
- ```c
483
- bool toc_min_max;
484
- ```
485
-
486
- In `apex_apply_cli_option_mask` (or equivalent merge helper), copy when masked:
487
-
488
- ```c
489
- if (m->toc_min_max) {
490
- opts->toc_min = snap->toc_min;
491
- opts->toc_max = snap->toc_max;
492
- }
493
- ```
494
-
495
- - [ ] **Step 2: Parse `-t toc` and `--toc-min-max`**
496
-
497
- In the `-t` / `--to` branch, after `man-html`:
498
-
499
- ```c
500
- } else if (strcmp(format, "toc") == 0) {
501
- options.output_format = APEX_OUTPUT_TOC;
502
- ```
503
-
504
- Add flag parsing near `--id-format`:
505
-
506
- ```c
507
- } else if (strncmp(argv[i], "--toc-min-max=", 14) == 0 ||
508
- strcmp(argv[i], "--toc-min-max") == 0) {
509
- const char *val = NULL;
510
- if (strncmp(argv[i], "--toc-min-max=", 14) == 0) {
511
- val = argv[i] + 14;
512
- } else {
513
- if (i + 1 >= argc) {
514
- fprintf(stderr, "Error: --toc-min-max requires MIN,MAX (e.g. 1,3)\n");
515
- return 1;
516
- }
517
- val = argv[++i];
518
- }
519
- int min = 0, max = 0;
520
- if (sscanf(val, "%d,%d", &min, &max) != 2 ||
521
- min < 1 || max > 6 || min > max) {
522
- fprintf(stderr, "Error: --toc-min-max must be MIN,MAX with 1 <= MIN <= MAX <= 6\n");
523
- return 1;
524
- }
525
- cli_opt_mask.toc_min_max = true;
526
- options.toc_min = min;
527
- options.toc_max = max;
528
- ```
529
-
530
- - [ ] **Step 3: Help text**
531
-
532
- In `print_usage` / help:
533
-
534
- - Add `toc` to the `-t` formats list.
535
- - Add:
536
-
537
- ```c
538
- fprintf(stderr, " --toc-min-max MIN,MAX TOC heading depth range (default: 1,3); also seeds HTML TOC markers without an explicit range\n");
539
- ```
540
-
541
- - [ ] **Step 4: Manual CLI smoke check**
542
-
543
- ```bash
544
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex -j4
545
- ./apex -t toc --toc-min-max=2,4 <<'MD'
546
- # A
547
- ## B
548
- ### C
549
- #### D
550
- MD
551
- ```
552
-
553
- Expected:
554
-
555
- ```markdown
556
- - [B](#b)
557
- - [C](#c)
558
- - [D](#d)
559
- ```
560
-
561
- Invalid flag:
562
-
563
- ```bash
564
- ./apex -t toc --toc-min-max=0,9 </dev/null; echo exit:$?
565
- ```
566
-
567
- Expected: non-zero exit and error message.
568
-
569
- - [ ] **Step 5: Commit**
570
-
571
- ```bash
572
- git add cli/main.c
573
- git commit -m "Add CLI -t toc and --toc-min-max"
574
- ```
575
-
576
- ---
577
-
578
- ### Task 6: Metadata `toc-min-max`
579
-
580
- **Files:**
581
- - Modify: `src/extensions/metadata.c`
582
- - Test: `tests/test_metadata.c` (suite that covers option keys — `test_metadata_control_options` or nearest)
583
-
584
- - [ ] **Step 1: Write failing metadata test**
585
-
586
- Follow existing `id-format` metadata tests in `tests/test_metadata.c`:
587
-
588
- ```c
589
- opts = apex_options_default();
590
- /* build metadata list with key toc-min-max value 2,4 — same pattern as id-format test */
591
- apex_apply_metadata_to_options(metadata, &opts); /* use actual helper name from nearby tests */
592
- assert_option_bool(opts.toc_min == 2, true, "toc-min-max sets toc_min");
593
- assert_option_bool(opts.toc_max == 4, true, "toc-min-max sets toc_max");
594
- ```
595
-
596
- Read the surrounding `id-format` test and mirror its metadata list construction exactly.
597
-
598
- - [ ] **Step 2: Run test — expect fail**
599
-
600
- ```bash
601
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner metadata_control_options 2>&1 | rg -i "toc-min|FAIL|Results"
602
- ```
603
-
604
- (If the suite name differs, use the suite that contains the id-format metadata assertions.)
605
-
606
- - [ ] **Step 3: Parse in `metadata.c`**
607
-
608
- Near the `id-format` branch:
609
-
610
- ```c
611
- } else if (strcasecmp(key, "toc-min-max") == 0 || strcasecmp(key, "toc_min_max") == 0) {
612
- int min = 0, max = 0;
613
- if (sscanf(value, "%d,%d", &min, &max) == 2 &&
614
- min >= 1 && max <= 6 && min <= max) {
615
- options->toc_min = min;
616
- options->toc_max = max;
617
- }
618
- ```
619
-
620
- Ignore invalid values silently (match how other metadata keys behave) unless nearby keys error loudly — stay consistent.
621
-
622
- - [ ] **Step 4: Run metadata + toc suites**
623
-
624
- ```bash
625
- cd /Users/ttscoff/Desktop/Code/apex/build && make apex_test_runner -j4 && ./apex_test_runner toc && ./apex_test_runner metadata_control_options
626
- ```
627
-
628
- - [ ] **Step 5: Commit**
629
-
630
- ```bash
631
- git add src/extensions/metadata.c tests/test_metadata.c
632
- git commit -m "Support toc-min-max metadata for TOC depth defaults"
633
- ```
634
-
635
- ---
636
-
637
- ### Task 7: Documentation
638
-
639
- **Files:**
640
- - Modify: `man/apex.1.md` (then `make man`)
641
- - Modify: `/Users/ttscoff/Desktop/Code/apex.wiki/Command-Line-Options.md`
642
- - Modify: `/Users/ttscoff/Desktop/Code/apex.wiki/Syntax.md` (TOC section)
643
- - Optionally: `/Users/ttscoff/Desktop/Code/apex.wiki/Header-IDs.md` (note `-t toc` uses same IDs)
644
-
645
- - [ ] **Step 1: Man page**
646
-
647
- Under `-t` / `--to` list, add:
648
-
649
- ```markdown
650
- - **toc** - Markdown unordered list of heading links only (default depth `#`–`###`)
651
- ```
652
-
653
- Add flag section:
654
-
655
- ```markdown
656
- **--toc-min-max** *MIN,MAX*
657
- : Inclusive heading depth range for **--to toc** and for HTML TOC markers that do not specify their own range. Default **1,3**. Marker syntax such as `{{TOC:2-5}}` still overrides. Values must satisfy `1 <= MIN <= MAX <= 6`.
658
- ```
659
-
660
- Regenerate:
661
-
662
- ```bash
663
- cd /Users/ttscoff/Desktop/Code/apex && make man
664
- ```
665
-
666
- - [ ] **Step 2: Wiki**
667
-
668
- In `Command-Line-Options.md`, document `-t toc` and `--toc-min-max` near other output/format flags.
669
-
670
- In `Syntax.md` TOC section, note:
671
-
672
- - Bare `{{TOC}}` / `<!--TOC-->` / `{:toc}` now default to levels 1–3 (or `--toc-min-max` / `toc-min-max` metadata).
673
- - `-t toc` extracts a Markdown TOC without markers.
674
-
675
- - [ ] **Step 3: Commit**
676
-
677
- ```bash
678
- git add man/apex.1.md man/apex.1
679
- # wiki is a separate repo:
680
- cd /Users/ttscoff/Desktop/Code/apex.wiki && git add Command-Line-Options.md Syntax.md Header-IDs.md && git status
681
- ```
682
-
683
- Commit apex and wiki separately with clear messages. Do not push unless asked.
684
-
685
- ---
686
-
687
- ### Task 8: Final verification
688
-
689
- - [ ] **Step 1: Full relevant test pass**
690
-
691
- ```bash
692
- cd /Users/ttscoff/Desktop/Code/apex/build && make -j4 && ./apex_test_runner toc && ./apex_test_runner header_ids && ./apex_test_runner metadata_control_options
693
- ```
694
-
695
- - [ ] **Step 2: End-to-end smoke**
696
-
697
- ```bash
698
- ./apex -t toc <<'MD'
699
- # Intro
700
- ## Details
701
- ### Deep
702
- #### Deeper
703
- MD
704
- ./apex -t toc --toc-min-max=1,6 <<'MD'
705
- # Intro
706
- ## Details
707
- ### Deep
708
- #### Deeper
709
- MD
710
- ./apex -t html <<'MD'
711
- # Intro
712
- {{TOC}}
713
- ## Details
714
- ### Deep
715
- #### Deeper
716
- MD
717
- ```
718
-
719
- Confirm Markdown TOC and HTML bare TOC both stop at `###` by default; `--toc-min-max=1,6` includes `####`.
720
-
721
- - [ ] **Step 3: Update `commit_message.txt` only if the user asks for a changelog commit message**
722
-
723
- ---
724
-
725
- ## Spec coverage checklist
726
-
727
- | Spec requirement | Task |
728
- |------------------|------|
729
- | `-t toc` Markdown list `[Title](#id)` | 4, 5 |
730
- | Default depth 1–3 | 1, 3, 4 |
731
- | `--toc-min-max` | 5 |
732
- | Flag seeds HTML markers; marker overrides | 3 |
733
- | `.no_toc` excluded | 4 (existing collect_headers) |
734
- | IDs match `--id-format` / manual IDs | 2, 4 |
735
- | Metadata `toc-min-max` | 6 |
736
- | Docs / man | 7 |
737
- | Empty doc behavior | 4 |
738
- | Invalid CLI values rejected | 5 |
739
-
740
- ## Notes for implementers
741
-
742
- - `apex_markdown_to_html` is the library entry for all formats despite the name — follow existing early-return patterns for JSON/markdown.
743
- - Bare HTML TOC default change (1–6 → 1–3) is intentional; call it out in changelog with `@changed` when the user requests a commit message.
744
- - Do not add separate `--toc-min` / `--toc-max` flags.
745
- - Wiki lives in `/Users/ttscoff/Desktop/Code/apex.wiki` (separate git repo).