apex-ruby 1.0.30 → 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,2211 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
-
6
- <meta charset="UTF-8">
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
- <meta name="generator" content="Apex 1.1.12">
9
- <title>Document</title>
10
- <style>
11
- /* GitHub-style syntax highlighting for Pygments and Skylighting */
12
- /* Don't apply background to wrapper when code highlighting is enabled - let default styles handle it */
13
- .code-highlighted .highlight, .code-highlighted .sourceCode { background: inherit; border-radius: 6px; padding: 16px; overflow-x: auto; }
14
- .highlight pre, .sourceCode pre { margin: 0; padding: 0; background: transparent; }
15
- .highlight code, .sourceCode code { font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; line-height: 1.45; }
16
- /* Pygments classes */
17
- .highlight .k { color: #d73a49; font-weight: 600; } /* Keyword */
18
- .highlight .kt { color: #d73a49; } /* Keyword.Type */
19
- .highlight .kd { color: #d73a49; font-weight: 600; } /* Keyword.Declaration */
20
- .highlight .kn { color: #d73a49; } /* Keyword.Namespace */
21
- .highlight .kp { color: #d73a49; } /* Keyword.Pseudo */
22
- .highlight .kr { color: #d73a49; font-weight: 600; } /* Keyword.Reserved */
23
- .highlight .n { color: #6f42c1; } /* Name */
24
- .highlight .na { color: #6f42c1; } /* Name.Attribute */
25
- .highlight .nc { color: #6f42c1; font-weight: 600; } /* Name.Class */
26
- .highlight .no { color: #005cc5; } /* Name.Constant */
27
- .highlight .nd { color: #6f42c1; font-weight: 600; } /* Name.Decorator */
28
- .highlight .ni { color: #800080; } /* Name.Entity */
29
- .highlight .ne { color: #990000; font-weight: 600; } /* Name.Exception */
30
- .highlight .nf { color: #6f42c1; font-weight: 600; } /* Name.Function */
31
- .highlight .nl { color: #6f42c1; } /* Name.Label */
32
- .highlight .nn { color: #555; } /* Name.Namespace */
33
- .highlight .nt { color: #22863a; } /* Name.Tag */
34
- .highlight .nv { color: #e36209; } /* Name.Variable */
35
- .highlight .s { color: #032f62; } /* String */
36
- .highlight .sb { color: #032f62; } /* String.Backtick */
37
- .highlight .sc { color: #032f62; } /* String.Char */
38
- .highlight .sd { color: #032f62; } /* String.Doc */
39
- .highlight .s2 { color: #032f62; } /* String.Double */
40
- .highlight .se { color: #032f62; } /* String.Escape */
41
- .highlight .sh { color: #032f62; } /* String.Heredoc */
42
- .highlight .si { color: #032f62; } /* String.Interpol */
43
- .highlight .sx { color: #032f62; } /* String.Other */
44
- .highlight .sr { color: #032f62; } /* String.Regex */
45
- .highlight .s1 { color: #032f62; } /* String.Single */
46
- .highlight .ss { color: #032f62; } /* String.Symbol */
47
- .highlight .c { color: #6a737d; font-style: italic; } /* Comment */
48
- .highlight .c1 { color: #6a737d; font-style: italic; } /* Comment.Single */
49
- .highlight .cm { color: #6a737d; font-style: italic; } /* Comment.Multiline */
50
- .highlight .cp { color: #6a737d; font-weight: 600; } /* Comment.Preproc */
51
- .highlight .cs { color: #6a737d; font-weight: 600; font-style: italic; } /* Comment.Special */
52
- .highlight .m { color: #005cc5; } /* Literal.Number */
53
- .highlight .mb { color: #005cc5; } /* Literal.Number.Bin */
54
- .highlight .mf { color: #005cc5; } /* Literal.Number.Float */
55
- .highlight .mh { color: #005cc5; } /* Literal.Number.Hex */
56
- .highlight .mi { color: #005cc5; } /* Literal.Number.Integer */
57
- .highlight .il { color: #005cc5; } /* Literal.Number.Integer.Long */
58
- .highlight .mo { color: #005cc5; } /* Literal.Number.Oct */
59
- .highlight .o { color: #d73a49; } /* Operator */
60
- .highlight .ow { color: #d73a49; } /* Operator.Word */
61
- .highlight .p { color: #24292e; } /* Punctuation */
62
- .highlight .w { color: #e1e4e8; } /* Text.Whitespace */
63
- /* Skylighting classes */
64
- .sourceCode .kw { color: #d73a49; font-weight: 600; } /* Keyword */
65
- .sourceCode .dt { color: #6f42c1; } /* DataType */
66
- .sourceCode .dv { color: #005cc5; } /* DecVal */
67
- .sourceCode .bn { color: #005cc5; } /* BaseN */
68
- .sourceCode .fl { color: #005cc5; } /* Float */
69
- .sourceCode .ch { color: #032f62; } /* Char */
70
- .sourceCode .st { color: #032f62; } /* String */
71
- .sourceCode .co { color: #6a737d; font-style: italic; } /* Comment */
72
- .sourceCode .ot { color: #22863a; } /* Other */
73
- .sourceCode .al { color: #e36209; font-weight: 600; } /* Alert */
74
- .sourceCode .fu { color: #6f42c1; font-weight: 600; } /* Function */
75
- .sourceCode .re { color: #032f62; } /* RegionMarker */
76
- .sourceCode .er { color: #d73a49; font-weight: 600; } /* Error */
77
- .sourceCode .cf { color: #d73a49; font-weight: 600; } /* ControlFlow */
78
- .sourceCode .op { color: #d73a49; } /* Operator */
79
- .sourceCode .pp { color: #6a737d; } /* Preprocessor */
80
- .sourceCode .at { color: #005cc5; } /* Attribute */
81
- .sourceCode .do { color: #6a737d; font-style: italic; } /* Documentation */
82
- .sourceCode .an { color: #6a737d; font-weight: 600; } /* Annotation */
83
- .sourceCode .cv { color: #6a737d; font-weight: 600; font-style: italic; } /* CommentVar */
84
- .sourceCode .in { color: #6a737d; } /* Information */
85
- .sourceCode .wa { color: #e36209; font-weight: 600; } /* Warning */
86
- .sourceCode .im { color: #d73a49; } /* Import */
87
- .sourceCode .bu { color: #005cc5; } /* BuiltIn */
88
- .sourceCode .ex { color: #6f42c1; } /* Extension */
89
- .sourceCode .va { color: #e36209; } /* Variable */
90
- .sourceCode .ss { color: #032f62; } /* SpecialString */
91
- .sourceCode .sc { color: #032f62; } /* SpecialChar */
92
- .sourceCode .vs { color: #032f62; } /* VerbatimString */
93
- .sourceCode .il { color: #005cc5; } /* Special */
94
- /* Line numbers (Skylighting) */
95
- .sourceCode.numberSource .sourceCode { counter-reset: line; }
96
- .sourceCode.numberSource .sourceCode > span { position: relative; left: -4em; counter-increment: line; }
97
- .sourceCode.numberSource .sourceCode > span > a:first-child::before { content: counter(line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; min-width: 1em; padding-right: 0.5em; color: #aaa; }
98
- </style>
99
- <style>
100
- body {
101
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
102
- line-height: 1.6;
103
- max-width: 800px;
104
- margin: 2rem auto;
105
- padding: 0 1rem;
106
- color: #333;
107
- }
108
- pre { background: #f5f5f5; padding: 1rem; overflow-x: auto; }
109
- code { background: #f0f0f0; padding: 0.2em 0.4em; border-radius: 3px; }
110
- blockquote { border-left: 4px solid #ddd; margin: 0; padding-left: 1rem; color: #666; }
111
- table { border-collapse: collapse; width: 100%%; }
112
- th, td { border: 1px solid #ddd; padding: 0.5rem; }
113
- th { background: #f5f5f5; }
114
- tfoot td { background: #e8e8e8; }
115
- figure.table-figure { width: fit-content; margin: 1em 0; }
116
- figure.table-figure table { width: auto; }
117
- figcaption { text-align: center; font-weight: bold; font-size: 0.8em; }
118
- .page-break { page-break-after: always; }
119
- .callout { padding: 1rem; margin: 1rem 0; border-left: 4px solid; }
120
- .callout-note { border-color: #3b82f6; background: #eff6ff; }
121
- .callout-warning { border-color: #f59e0b; background: #fffbeb; }
122
- .callout-tip { border-color: #10b981; background: #f0fdf4; }
123
- .callout-danger { border-color: #ef4444; background: #fef2f2; }
124
- ins { background: #d4fcbc; text-decoration: none; }
125
- del { background: #fbb6c2; text-decoration: line-through; }
126
- mark { background: #fff3cd; }
127
- .smallcaps { font-variant: small-caps; }
128
- .underline { text-decoration: underline; }
129
- span.mark { background: #fff3cd; }
130
- .hidden { display: none; }
131
- .quarto-xref { font-variant: normal; }
132
- .critic.comment { background: #e7e7e7; color: #666; font-style: italic; }
133
- .mkhashtag { color: #666; }
134
- .mkstyledtag {
135
- display: inline-block;
136
- background: #e0e0e0;
137
- padding: 3px 9px;
138
- border-radius: 20px;
139
- font-size: 0.9em;
140
- line-height: 1.4;
141
- color: #333;
142
- margin: 0 2px;
143
- }
144
- </style>
145
- <meta name="paginate" content="symbols"/>
146
- <meta name="highlight-language-only" content="true"/>
147
- <meta name="code-line-numbers" content="false"/>
148
- <meta name="code-highlight" content="pygments"/>
149
- <meta name="sup-sub" content="true"/>
150
- <meta name="relaxed-tables" content="true"/>
151
- <meta name="includes" content="true"/>
152
- <meta name="autolink" content="true"/>
153
- <meta name="pretty" content="false"/>
154
- <meta name="standalone" content="false"/>
155
- <meta name="mode" content="unified"/>
156
- <meta name="markdown-in-html" content="true"/>
157
- <meta name="image-captions" content="true"/>
158
- <meta name="wikilink-extension" content="html"/>
159
- <meta name="wikilink-space" content="hyphen"/>
160
- <meta name="wikilinks" content="true"/>
161
- <meta name="widont" content="true"/>
162
- <meta name="plugins" content="true"/>
163
- <meta name="id-format" content="gfm"/>
164
-
165
- <style>
166
- :root {
167
- /* border-box width of the fixed sidebar; body offset includes a small gap */
168
- --sidebar-width: 250px;
169
- --sidebar-offset: 270px;
170
- }
171
-
172
- /* Base styles — override Apex standalone centering (max-width + margin: auto) */
173
- body {
174
- -webkit-font-smoothing: antialiased;
175
- -moz-osx-font-smoothing: grayscale;
176
- font-size: 17px;
177
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
178
- "Helvetica Neue", Arial, sans-serif;
179
- line-height: 1.65;
180
- color: #1e293b;
181
- background-color: #fff;
182
- max-width: none;
183
- width: auto;
184
- margin: 2rem 2rem 2rem var(--sidebar-offset);
185
- padding: 0 1rem;
186
- box-sizing: border-box;
187
- }
188
-
189
- /* Sidebar / Main TOC - wider on larger screens */
190
- .main-toc,
191
- .sidebar {
192
- position: fixed;
193
- left: 0;
194
- top: 0;
195
- box-sizing: border-box;
196
- width: var(--sidebar-width);
197
- min-width: var(--sidebar-width);
198
- max-width: var(--sidebar-width);
199
- height: 100vh;
200
- overflow-y: auto;
201
- background: #1e293b;
202
- color: rgba(255, 255, 255, 0.9);
203
- border-right: 2px solid rgba(255, 255, 255, 0.1);
204
- padding: 24px 20px 130px;
205
- font-size: 14px;
206
- z-index: 100;
207
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
208
- transition: transform 0.3s ease;
209
- }
210
-
211
- .main-toc ul,
212
- .sidebar ul {
213
- list-style: none;
214
- padding-left: 0;
215
- margin: 0;
216
- padding-bottom: 80px;
217
- }
218
-
219
- .main-toc ul::after,
220
- .sidebar ul::after {
221
- content: "";
222
- display: block;
223
- height: 80px;
224
- }
225
-
226
- .main-toc li,
227
- .sidebar li {
228
- margin: 0.25em 0;
229
- }
230
-
231
- .main-toc a,
232
- .sidebar a {
233
- color: rgba(255, 255, 255, 0.85);
234
- text-decoration: none;
235
- display: block;
236
- padding: 6px 12px;
237
- border-radius: 4px;
238
- transition: all 0.15s ease;
239
- white-space: nowrap;
240
- overflow: hidden;
241
- text-overflow: ellipsis;
242
- }
243
-
244
- .main-toc a:hover,
245
- .sidebar a:hover {
246
- background: #334155;
247
- color: #fff;
248
- }
249
-
250
- .sidebar a.active {
251
- color: #0ea5e9;
252
- font-weight: 500;
253
- }
254
-
255
- /* Hamburger menu button */
256
- .hamburger-menu {
257
- display: none;
258
- position: fixed;
259
- top: 12px;
260
- left: 12px;
261
- z-index: 200;
262
- background: #1e293b;
263
- border: 2px solid rgba(255, 255, 255, 0.1);
264
- border-radius: 6px;
265
- padding: 10px;
266
- cursor: pointer;
267
- color: rgba(255, 255, 255, 0.9);
268
- font-size: 20px;
269
- line-height: 1;
270
- box-sizing: border-box;
271
- width: 44px;
272
- height: 44px;
273
- align-items: center;
274
- justify-content: center;
275
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
276
- transition: all 0.2s ease;
277
- opacity: 0.2;
278
- }
279
-
280
- .hamburger-menu:hover {
281
- background: #334155;
282
- color: #fff;
283
- opacity: 1;
284
- }
285
-
286
- /* Move hamburger to the right of the sidebar when menu is open */
287
- .hamburger-menu.active {
288
- left: calc(var(--sidebar-width) + 12px);
289
- }
290
-
291
- .hamburger-menu.active {
292
- background: #0ea5e9;
293
- }
294
-
295
- .hamburger-menu::before {
296
- content: "☰";
297
- }
298
-
299
- .hamburger-menu.active::before {
300
- content: "✕";
301
- }
302
-
303
- /* Mobile menu overlay */
304
- .mobile-menu-overlay {
305
- display: none;
306
- position: fixed;
307
- top: 0;
308
- left: 0;
309
- right: 0;
310
- bottom: 0;
311
- background: rgba(0, 0, 0, 0.5);
312
- z-index: 150;
313
- opacity: 0;
314
- visibility: hidden;
315
- transition: opacity 0.3s ease, visibility 0.3s ease;
316
- }
317
-
318
- .mobile-menu-overlay.active {
319
- opacity: 1;
320
- visibility: visible;
321
- }
322
-
323
- /* Page TOC */
324
- .page-toc {
325
- background: #f9f9f9;
326
- border: 1px solid #ddd;
327
- border-radius: 4px;
328
- padding: 1rem;
329
- margin: 1.5rem 0;
330
- }
331
-
332
- .page-toc ul {
333
- list-style: none;
334
- padding-left: 0;
335
- margin: 0;
336
- }
337
-
338
- .page-toc > ul {
339
- padding-left: 0;
340
- }
341
-
342
- .page-toc li {
343
- margin: 0.25em 0;
344
- }
345
-
346
- .page-toc a {
347
- color: #0066cc;
348
- text-decoration: none;
349
- display: block;
350
- padding: 0.25em 0.5em;
351
- border-radius: 3px;
352
- }
353
-
354
- .page-toc a:hover {
355
- background: #e0e0e0;
356
- color: #004499;
357
- }
358
-
359
- .page-toc ul ul {
360
- list-style: none;
361
- padding-left: 1.5em;
362
- margin-top: 0.25em;
363
- margin-left: 0;
364
- }
365
-
366
- .page-toc ul ul ul {
367
- padding-left: 1.5em;
368
- }
369
-
370
- .page-toc ul ul a {
371
- font-size: 0.9em;
372
- color: #555;
373
- }
374
-
375
- .page-toc ul ul ul a {
376
- font-size: 0.85em;
377
- color: #666;
378
- }
379
-
380
- /* Floating TOC */
381
- .floating-toc {
382
- position: fixed;
383
- top: 0;
384
- left: var(--sidebar-offset);
385
- right: 0;
386
- z-index: 50;
387
- opacity: 0;
388
- visibility: hidden;
389
- transition: opacity 0.2s ease, visibility 0.2s ease;
390
- pointer-events: none;
391
- display: flex;
392
- justify-content: flex-end;
393
- padding-right: 2rem;
394
- }
395
-
396
- .floating-toc.visible {
397
- opacity: 1;
398
- visibility: visible;
399
- pointer-events: auto;
400
- }
401
-
402
- .floating-toc-container {
403
- background: rgba(255, 255, 255, 0.95);
404
- backdrop-filter: blur(10px);
405
- border-bottom: 1px solid #ddd;
406
- border-radius: 0 0 12px 12px;
407
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
408
- width: fit-content;
409
- max-width: 400px;
410
- min-width: 200px;
411
- overflow: hidden;
412
- transition: max-height 0.3s ease;
413
- }
414
-
415
- .floating-toc-header {
416
- padding: 8px 16px;
417
- cursor: pointer;
418
- user-select: none;
419
- font-size: 14px;
420
- font-weight: 500;
421
- color: #1e293b;
422
- display: flex;
423
- align-items: center;
424
- justify-content: space-between;
425
- }
426
-
427
- .floating-toc-header:hover {
428
- background: rgba(0, 0, 0, 0.02);
429
- }
430
-
431
- .floating-toc-content {
432
- max-height: 0;
433
- overflow: hidden;
434
- transition: max-height 0.3s ease;
435
- }
436
-
437
- .floating-toc-container:hover .floating-toc-content {
438
- max-height: 70vh;
439
- overflow-y: auto;
440
- }
441
-
442
- .floating-toc-content ul {
443
- list-style: none;
444
- padding: 8px 16px 16px;
445
- margin: 0;
446
- }
447
-
448
- .floating-toc-content li {
449
- margin: 0.1em 0;
450
- }
451
-
452
- .floating-toc-content a {
453
- color: #0066cc;
454
- text-decoration: none;
455
- display: block;
456
- padding: 0.2em 0.5em;
457
- border-radius: 4px;
458
- font-size: 13px;
459
- transition: background 0.15s ease;
460
- }
461
-
462
- .floating-toc-content a:hover {
463
- background: #e0e0e0;
464
- color: #004499;
465
- }
466
-
467
- .floating-toc-content ul ul {
468
- padding-left: 1.2em;
469
- margin-top: 0;
470
- margin-bottom: 0;
471
- }
472
-
473
- .floating-toc-content ul ul ul {
474
- margin-top: 0;
475
- margin-bottom: 0;
476
- }
477
-
478
- .floating-toc-content ul ul a {
479
- font-size: 12px;
480
- color: #555;
481
- }
482
-
483
- .floating-toc-content ul ul ul a {
484
- font-size: 11px;
485
- color: #666;
486
- }
487
-
488
- /* Smooth scrolling */
489
- html {
490
- scroll-behavior: smooth;
491
- }
492
-
493
- /* Code blocks */
494
- code {
495
- background: #f0f0f0;
496
- padding: 0.2em 0.4em;
497
- border-radius: 3px;
498
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
499
- font-size: 0.9em;
500
- margin: 0 0.1em;
501
- }
502
-
503
- pre {
504
- background: #f5f5f5;
505
- padding: 1rem;
506
- overflow-x: auto;
507
- border-radius: 4px;
508
- margin: 1em 0;
509
- }
510
-
511
- pre code {
512
- background: none;
513
- padding: 0;
514
- margin: 0;
515
- }
516
-
517
- /* Rouge syntax highlighting - GitHub theme, scoped to .highlight containers */
518
- .highlight {
519
- color: #24292e;
520
- }
521
-
522
- .highlight .c {
523
- color: #6a737d;
524
- font-style: italic;
525
- } /* Comment */
526
- .highlight .err {
527
- color: #a61717;
528
- background-color: #e3d2d2;
529
- } /* Error */
530
- .highlight .k {
531
- color: #d73a49;
532
- font-weight: bold;
533
- } /* Keyword */
534
- .highlight .l {
535
- color: #032f62;
536
- } /* Literal */
537
- .highlight .n {
538
- color: #24292e;
539
- } /* Name */
540
- .highlight .o {
541
- color: #d73a49;
542
- } /* Operator */
543
- .highlight .p {
544
- color: #24292e;
545
- } /* Punctuation */
546
- .highlight .cm {
547
- color: #6a737d;
548
- font-style: italic;
549
- } /* Comment.Multiline */
550
- .highlight .cp {
551
- color: #6a737d;
552
- font-weight: bold;
553
- } /* Comment.Preproc */
554
- .highlight .c1 {
555
- color: #6a737d;
556
- font-style: italic;
557
- } /* Comment.Single */
558
- .highlight .cs {
559
- color: #6a737d;
560
- font-weight: bold;
561
- font-style: italic;
562
- } /* Comment.Special */
563
- .highlight .gd {
564
- color: #24292e;
565
- background-color: #ffeef0;
566
- } /* Generic.Deleted */
567
- .highlight .ge {
568
- color: #24292e;
569
- font-style: italic;
570
- } /* Generic.Emph */
571
- .highlight .gr {
572
- color: #aa0000;
573
- } /* Generic.Error */
574
- .highlight .gh {
575
- color: #999999;
576
- font-weight: bold;
577
- } /* Generic.Heading */
578
- .highlight .gi {
579
- color: #24292e;
580
- background-color: #f0fff4;
581
- } /* Generic.Inserted */
582
- .highlight .go {
583
- color: #888888;
584
- } /* Generic.Output */
585
- .highlight .gp {
586
- color: #555555;
587
- } /* Generic.Prompt */
588
- .highlight .gs {
589
- font-weight: bold;
590
- } /* Generic.Strong */
591
- .highlight .gu {
592
- color: #aaaaaa;
593
- } /* Generic.Subheading */
594
- .highlight .gt {
595
- color: #aa0000;
596
- } /* Generic.Traceback */
597
- .highlight .kc {
598
- color: #d73a49;
599
- font-weight: bold;
600
- } /* Keyword.Constant */
601
- .highlight .kd {
602
- color: #d73a49;
603
- font-weight: bold;
604
- } /* Keyword.Declaration */
605
- .highlight .kn {
606
- color: #d73a49;
607
- font-weight: bold;
608
- } /* Keyword.Namespace */
609
- .highlight .kp {
610
- color: #d73a49;
611
- font-weight: bold;
612
- } /* Keyword.Pseudo */
613
- .highlight .kr {
614
- color: #d73a49;
615
- font-weight: bold;
616
- } /* Keyword.Reserved */
617
- .highlight .kt {
618
- color: #d73a49;
619
- font-weight: bold;
620
- } /* Keyword.Type */
621
- .highlight .ld {
622
- color: #032f62;
623
- } /* Literal.Date */
624
- .highlight .m {
625
- color: #005cc5;
626
- } /* Literal.Number */
627
- .highlight .s {
628
- color: #032f62;
629
- } /* Literal.String */
630
- .highlight .na {
631
- color: #6f42c1;
632
- } /* Name.Attribute */
633
- .highlight .nb {
634
- color: #005cc5;
635
- } /* Name.Builtin */
636
- .highlight .nc {
637
- color: #6f42c1;
638
- font-weight: bold;
639
- } /* Name.Class */
640
- .highlight .no {
641
- color: #005cc5;
642
- } /* Name.Constant */
643
- .highlight .nd {
644
- color: #6f42c1;
645
- font-weight: bold;
646
- } /* Name.Decorator */
647
- .highlight .ni {
648
- color: #800080;
649
- } /* Name.Entity */
650
- .highlight .ne {
651
- color: #990000;
652
- font-weight: bold;
653
- } /* Name.Exception */
654
- .highlight .nf {
655
- color: #6f42c1;
656
- } /* Name.Function */
657
- .highlight .nl {
658
- color: #990000;
659
- } /* Name.Label */
660
- .highlight .nn {
661
- color: #555555;
662
- } /* Name.Namespace */
663
- .highlight .nx {
664
- color: #6f42c1;
665
- } /* Name.Other */
666
- .highlight .py {
667
- color: #990000;
668
- } /* Name.Property */
669
- .highlight .nt {
670
- color: #22863a;
671
- } /* Name.Tag */
672
- .highlight .nv {
673
- color: #e36209;
674
- } /* Name.Variable */
675
- .highlight .ow {
676
- color: #d73a49;
677
- font-weight: bold;
678
- } /* Operator.Word */
679
- .highlight .w {
680
- color: #bbbbbb;
681
- } /* Text.Whitespace */
682
- .highlight .mf {
683
- color: #005cc5;
684
- } /* Literal.Number.Float */
685
- .highlight .mh {
686
- color: #005cc5;
687
- } /* Literal.Number.Hex */
688
- .highlight .mi {
689
- color: #005cc5;
690
- } /* Literal.Number.Integer */
691
- .highlight .mo {
692
- color: #005cc5;
693
- } /* Literal.Number.Oct */
694
- .highlight .sb {
695
- color: #032f62;
696
- } /* Literal.String.Backtick */
697
- .highlight .sc {
698
- color: #032f62;
699
- } /* Literal.String.Char */
700
- .highlight .sd {
701
- color: #032f62;
702
- } /* Literal.String.Doc */
703
- .highlight .s2 {
704
- color: #032f62;
705
- } /* Literal.String.Double */
706
- .highlight .se {
707
- color: #032f62;
708
- } /* Literal.String.Escape */
709
- .highlight .sh {
710
- color: #032f62;
711
- } /* Literal.String.Heredoc */
712
- .highlight .si {
713
- color: #032f62;
714
- } /* Literal.String.Interpol */
715
- .highlight .sx {
716
- color: #032f62;
717
- } /* Literal.String.Other */
718
- .highlight .sr {
719
- color: #22863a;
720
- } /* Literal.String.Regex */
721
- .highlight .s1 {
722
- color: #032f62;
723
- } /* Literal.String.Single */
724
- .highlight .ss {
725
- color: #032f62;
726
- } /* Literal.String.Symbol */
727
- .highlight .bp {
728
- color: #005cc5;
729
- } /* Name.Builtin.Pseudo */
730
- .highlight .vc {
731
- color: #e36209;
732
- } /* Name.Variable.Class */
733
- .highlight .vg {
734
- color: #e36209;
735
- } /* Name.Variable.Global */
736
- .highlight .vi {
737
- color: #e36209;
738
- } /* Name.Variable.Instance */
739
- .highlight .il {
740
- color: #005cc5;
741
- } /* Literal.Number.Integer.Long */
742
-
743
- /* Additional Rouge token classes that may be used */
744
- .highlight .token {
745
- color: #5670a0;
746
- }
747
- .highlight .token.list {
748
- color: #546e9f;
749
- }
750
- .highlight .token.punctuation {
751
- color: #3e8dad;
752
- }
753
- .highlight .token.list.punctuation {
754
- color: #e05b78;
755
- }
756
- .highlight .token.content {
757
- padding: 0;
758
- }
759
-
760
- /* Nested lists in page content */
761
- ul ul,
762
- ol ol,
763
- ul ol,
764
- ol ul {
765
- padding-left: 1.5em;
766
- margin-top: 0.25em;
767
- }
768
-
769
- /* Page footer */
770
- .page-footer {
771
- background: #f5f5f5;
772
- border-top: 1px solid #ddd;
773
- padding: 1.5rem;
774
- margin-top: 3rem;
775
- color: #666;
776
- font-size: 0.9em;
777
- }
778
-
779
- .page-footer p {
780
- margin: 0.5em 0;
781
- }
782
-
783
- .page-footer a {
784
- color: #0066cc;
785
- text-decoration: none;
786
- }
787
-
788
- .page-footer a:hover {
789
- text-decoration: underline;
790
- }
791
-
792
- /* Mobile responsive */
793
- @media (max-width: 768px) {
794
- .hamburger-menu {
795
- display: flex;
796
- }
797
-
798
- .main-toc,
799
- .sidebar {
800
- transform: translateX(-100%);
801
- z-index: 175;
802
- }
803
-
804
- .main-toc.mobile-open,
805
- .sidebar.mobile-open {
806
- transform: translateX(0);
807
- }
808
-
809
- body {
810
- margin: 2rem 1rem;
811
- }
812
-
813
- .floating-toc {
814
- left: 0;
815
- }
816
- }
817
-
818
- </style></head>
819
-
820
- <body class="code-highlighted">
821
- <div class="floating-toc" id="floating-toc">
822
- <div class="floating-toc-container">
823
- <div class="floating-toc-header">
824
- <span>Table of Contents 🔻</span>
825
- </div>
826
- <div class="floating-toc-content" id="floating-toc-content">
827
- <!-- Content will be populated by JavaScript -->
828
- </div>
829
- </div>
830
- </div>
831
-
832
- <button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
833
- <div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
834
-
835
- <nav class="main-toc"><ul><li><a href="Home.html">Home</a></li><li><a href="Getting-Started.html">Getting Started</a></li><li><a href="Installation.html">Installation</a></li><li><a href="Usage.html">Usage</a></li><li><a href="Syntax.html">Syntax</a></li><li><a href="Callouts.html">Callouts</a></li><li><a href="Tables.html">Tables</a></li><li><a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a></li><li><a href="Modes.html">Modes</a></li><li><a href="Quarto-Mode.html">Quarto Mode</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Rendering-Markdown-In-Terminal.html">Rendering Markdown in the Terminal</a></li><li><a href="Generating-Man-Pages.html">Generating Man Pages</a></li><li><a href="Multi-File-Documents.html">Multi-file Documents</a></li><li><a href="Citations.html">Citations</a></li><li><a href="Indices.html">Indices</a></li><li><a href="Metadata-Transforms.html">Metadata Transforms</a></li><li><a href="Pandoc-Integration.html">Integrating with Pandoc</a></li><li><a href="Using-Apex-with-Jekyll.html">Using Apex with Jekyll</a></li><li><a href="Header-IDs.html">Header IDs</a></li><li><a href="C-API.html">C API</a></li><li><a href="Writing-Tests.html">Writing Tests</a></li><li><a href="Xcode-Integration.html">Xcode Integration</a></li><li><a href="Examples.html">Examples</a></li><li><a href="Plugins.html">Plugins</a></li><li><a href="Filters.html">Filters</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
836
-
837
- <h1 id="c-api">
838
- C&nbsp;API
839
- </h1>
840
- <nav class="page-toc" id="page-toc-top"><ul><li><a href="#c-api">C&nbsp;API</a><ul><li><a href="#swift-package-note">Swift Package&nbsp;Note</a><ul><li><a href="#direct-c-api-from-swift-spm">Direct C API from Swift&nbsp;(SPM)</a></li></ul></li><li><a href="#overview">Overview</a></li><li><a href="#core-types">Core&nbsp;Types</a><ul><li><a href="#apexmodet">apex_mode_t</a></li><li><a href="#apexoptions">apex_options</a></li></ul></li><li><a href="#core-functions">Core&nbsp;Functions</a><ul><li><a href="#apexoptionsdefault">apex_options_default</a></li><li><a href="#apexoptionsformode">apex_options_for_mode</a></li><li><a href="#apexmarkdowntohtml">apex_markdown_to_html</a></li><li><a href="#structured-toc-entries">Structured TOC&nbsp;entries</a></li><li><a href="#apexfreestring">apex_free_string</a></li><li><a href="#apexwraphtmldocument">apex_wrap_html_document</a></li><li><a href="#apexprettyprinthtml">apex_pretty_print_html</a></li></ul></li><li><a href="#version-functions">Version&nbsp;Functions</a><ul><li><a href="#apexversionstring">apex_version_string</a></li><li><a href="#apexversionmajor-apexversionminor-apexversionpatch">apex_version_major / apex_version_minor /&nbsp;apex_version_patch</a></li></ul></li><li><a href="#list-options">List&nbsp;Options</a><ul><li><a href="#mixed-list-markers">Mixed List&nbsp;Markers</a></li><li><a href="#alpha-lists">Alpha&nbsp;Lists</a></li></ul></li><li><a href="#feature-flags">Feature&nbsp;Flags</a></li><li><a href="#metadata-options">Metadata&nbsp;Options</a></li><li><a href="#file-inclusion">File&nbsp;Inclusion</a></li><li><a href="#output-options">Output&nbsp;Options</a></li><li><a href="#line-break-options">Line Break&nbsp;Options</a></li><li><a href="#header-id-options">Header&nbsp;ID&nbsp;Options</a></li><li><a href="#toc-options">TOC&nbsp;Options</a></li><li><a href="#table-options">Table&nbsp;Options</a></li><li><a href="#complete-example">Complete&nbsp;Example</a></li><li><a href="#plugin-catalog-api">Plugin Catalog&nbsp;API</a><ul><li><a href="#types">Types</a></li><li><a href="#fetch-available-plugins">Fetch available&nbsp;plugins</a></li><li><a href="#list-installed-plugins">List installed&nbsp;plugins</a></li><li><a href="#install-and-uninstall">Install and&nbsp;uninstall</a></li><li><a href="#enable-plugins-during-conversion">Enable plugins during&nbsp;conversion</a></li></ul></li><li><a href="#compiling-and-linking">Compiling and&nbsp;Linking</a><ul><li><a href="#with-cmake">With&nbsp;CMake</a></li><li><a href="#manual-compilation">Manual Compilation</a></li><li><a href="#static-linking">Static&nbsp;Linking</a></li></ul></li><li><a href="#thread-safety">Thread&nbsp;Safety</a></li><li><a href="#memory-management">Memory&nbsp;Management</a></li><li><a href="#error-handling">Error&nbsp;Handling</a></li><li><a href="#performance-tips">Performance&nbsp;Tips</a></li><li><a href="#related">Related</a></li></ul></li><li><a href="#index-section">Index</a></li></ul></nav>
841
-
842
- <p>
843
- Apex provides a simple C API for programmatic Markdown to HTML conversion.
844
- </p>
845
-
846
- <h2 id="swift-package-note">
847
- Swift Package&nbsp;Note
848
- </h2>
849
-
850
- <p>
851
- If you use Apex via Swift Package Manager in an Xcode Swift target, add the
852
- <code>ApexC</code> product to your target dependencies, then use:
853
- </p>
854
-
855
- <div class="highlight">
856
- <pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">ApexC</span>
857
- </pre>
858
- </div>
859
-
860
- <p>
861
- for direct C API calls like <code>apex_options_default()</code> and <code>apex_markdown_to_html(...)</code>.
862
- </p>
863
-
864
- <p>
865
- <code>import Apex</code> exposes the high-level Swift wrapper API (<code>Apex</code>, <code>ApexOptions</code>, <code>ApexMode</code>), which is recommended for most Swift use cases.
866
- </p>
867
-
868
- <h3 id="direct-c-api-from-swift-spm">
869
- Direct C API from Swift&nbsp;(SPM)
870
- </h3>
871
-
872
- <div class="highlight">
873
- <pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">ApexC</span>
874
-
875
- <span class="kd">let</span><span class="w"> </span><span class="nv">markdown</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">&quot;# Hello from C API</span><span class="se">\n</span><span class="s">&quot;</span>
876
-
877
- <span class="kd">var</span><span class="w"> </span><span class="nv">opts</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">()</span>
878
- <span class="n">opts</span><span class="p">.</span><span class="n">mode</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">APEX_MODE_UNIFIED</span>
879
-
880
- <span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">withCString</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">cstr</span><span class="w"> </span><span class="k">in</span>
881
- <span class="w"> </span><span class="k">guard</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">out</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">cstr</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">cstr</span><span class="p">),</span><span class="w"> </span><span class="p">&amp;</span><span class="n">opts</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
882
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">&quot;&quot;</span>
883
- <span class="w"> </span><span class="p">}</span>
884
- <span class="w"> </span><span class="k">defer</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">out</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
885
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">String</span><span class="p">(</span><span class="n">cString</span><span class="p">:</span><span class="w"> </span><span class="n">out</span><span class="p">)</span>
886
- <span class="p">}</span>
887
- </pre>
888
- </div>
889
-
890
- <h2 id="overview">
891
- Overview
892
- </h2>
893
-
894
- <p>
895
- The Apex C API is thread-safe and designed for integration into C and C++ applications. All functions are declared in <code>apex/apex.h</code>.
896
- </p>
897
-
898
- <h2 id="core-types">
899
- Core&nbsp;Types
900
- </h2>
901
-
902
- <h3 id="apexmodet">
903
- apex_mode_t
904
- </h3>
905
-
906
- <p>
907
- Processor compatibility modes:
908
- </p>
909
-
910
- <div class="highlight">
911
- <pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span>
912
- <span class="w"> </span><span class="n">APEX_MODE_COMMONMARK</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Pure CommonMark spec */</span>
913
- <span class="w"> </span><span class="n">APEX_MODE_GFM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="cm">/* GitHub Flavored Markdown */</span>
914
- <span class="w"> </span><span class="n">APEX_MODE_MULTIMARKDOWN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="cm">/* MultiMarkdown compatibility */</span>
915
- <span class="w"> </span><span class="n">APEX_MODE_KRAMDOWN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Kramdown compatibility */</span>
916
- <span class="w"> </span><span class="n">APEX_MODE_UNIFIED</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="cm">/* All features enabled */</span>
917
- <span class="p">}</span><span class="w"> </span><span class="n">apex_mode_t</span><span class="p">;</span>
918
- </pre>
919
- </div>
920
-
921
- <h3 id="apexoptions">
922
- apex_options
923
- </h3>
924
-
925
- <p>
926
- Configuration structure for processing:
927
- </p>
928
-
929
- <div class="highlight">
930
- <pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="p">{</span>
931
- <span class="w"> </span><span class="n">apex_mode_t</span><span class="w"> </span><span class="n">mode</span><span class="p">;</span>
932
-
933
- <span class="w"> </span><span class="cm">/* Feature flags */</span>
934
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_tables</span><span class="p">;</span>
935
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_footnotes</span><span class="p">;</span>
936
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_definition_lists</span><span class="p">;</span>
937
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_smart_typography</span><span class="p">;</span>
938
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_math</span><span class="p">;</span>
939
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_critic_markup</span><span class="p">;</span>
940
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_wiki_links</span><span class="p">;</span>
941
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_task_lists</span><span class="p">;</span>
942
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_attributes</span><span class="p">;</span>
943
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_callouts</span><span class="p">;</span>
944
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_marked_extensions</span><span class="p">;</span>
945
-
946
- <span class="w"> </span><span class="cm">/* Critic markup mode */</span>
947
- <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">critic_mode</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 0=accept, 1=reject, 2=markup (default) */</span>
948
-
949
- <span class="w"> </span><span class="cm">/* Metadata handling */</span>
950
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">strip_metadata</span><span class="p">;</span>
951
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_metadata_variables</span><span class="p">;</span>
952
-
953
- <span class="w"> </span><span class="cm">/* File inclusion */</span>
954
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_file_includes</span><span class="p">;</span>
955
- <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_include_depth</span><span class="p">;</span>
956
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">base_directory</span><span class="p">;</span>
957
-
958
- <span class="w"> </span><span class="cm">/* Output options */</span>
959
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">unsafe</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Allow raw HTML */</span>
960
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">validate_utf8</span><span class="p">;</span>
961
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">github_pre_lang</span><span class="p">;</span>
962
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">standalone</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Generate complete HTML document */</span>
963
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">pretty</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Pretty-print HTML */</span>
964
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">stylesheet_path</span><span class="p">;</span>
965
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">document_title</span><span class="p">;</span>
966
-
967
- <span class="w"> </span><span class="cm">/* Line break handling */</span>
968
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">hardbreaks</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Treat newlines as hard breaks */</span>
969
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">nobreaks</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Render soft breaks as spaces */</span>
970
-
971
- <span class="w"> </span><span class="cm">/* Header ID generation */</span>
972
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">generate_header_ids</span><span class="p">;</span>
973
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">header_anchors</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Generate &lt;a&gt; tags instead of id attributes */</span>
974
- <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id_format</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 0=GFM, 1=MMD, 2=Kramdown */</span>
975
-
976
- <span class="w"> </span><span class="cm">/* Table options */</span>
977
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">relaxed_tables</span><span class="p">;</span>
978
-
979
- <span class="w"> </span><span class="cm">/* List options */</span>
980
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">allow_mixed_list_markers</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Allow mixed list markers at same level (inherit type from first item) */</span>
981
- <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">allow_alpha_lists</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Support alpha list markers (a., b., c. and A., B., C.) */</span>
982
- <span class="p">}</span><span class="w"> </span><span class="n">apex_options</span><span class="p">;</span>
983
- </pre>
984
- </div>
985
-
986
- <h2 id="core-functions">
987
- Core&nbsp;Functions
988
- </h2>
989
-
990
- <h3 id="apexoptionsdefault">
991
- apex_options_default
992
- </h3>
993
-
994
- <p>
995
- Get default options with all features enabled (unified mode).
996
- </p>
997
-
998
- <div class="highlight">
999
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="nf">apex_options_default</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
1000
- </pre>
1001
- </div>
1002
-
1003
- <p>
1004
- <strong>Returns:</strong> Default options structure
1005
- </p>
1006
-
1007
- <p>
1008
- <strong>Example:</strong>
1009
- </p>
1010
-
1011
- <div class="highlight">
1012
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
1013
- <span class="n">opts</span><span class="p">.</span><span class="n">enable_math</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1014
- <span class="n">opts</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1015
- </pre>
1016
- </div>
1017
-
1018
- <h3 id="apexoptionsformode">
1019
- apex_options_for_mode
1020
- </h3>
1021
-
1022
- <p>
1023
- Get options configured for a specific processor mode.
1024
- </p>
1025
-
1026
- <div class="highlight">
1027
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="nf">apex_options_for_mode</span><span class="p">(</span><span class="n">apex_mode_t</span><span class="w"> </span><span class="n">mode</span><span class="p">);</span>
1028
- </pre>
1029
- </div>
1030
-
1031
- <p>
1032
- <strong>Parameters:</strong>
1033
- </p>
1034
-
1035
- <ul>
1036
-
1037
- <li>
1038
- <code>mode</code> - Desired processor mode
1039
- </li>
1040
-
1041
- </ul>
1042
-
1043
- <p>
1044
- <strong>Returns:</strong> Options configured for the specified mode
1045
- </p>
1046
-
1047
- <p>
1048
- <strong>Example:</strong>
1049
- </p>
1050
-
1051
- <div class="highlight">
1052
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">gfm_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_GFM</span><span class="p">);</span>
1053
- <span class="n">apex_options</span><span class="w"> </span><span class="n">mmd_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_MULTIMARKDOWN</span><span class="p">);</span>
1054
- </pre>
1055
- </div>
1056
-
1057
- <h3 id="apexmarkdowntohtml">
1058
- apex_markdown_to_html
1059
- </h3>
1060
-
1061
- <p>
1062
- Main conversion function - converts Markdown to HTML.
1063
- </p>
1064
-
1065
- <div class="highlight">
1066
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_markdown_to_html</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">len</span><span class="p">,</span>
1067
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="o">*</span><span class="n">options</span><span class="p">);</span>
1068
- </pre>
1069
- </div>
1070
-
1071
- <p>
1072
- <strong>Parameters:</strong>
1073
- </p>
1074
-
1075
- <ul>
1076
-
1077
- <li>
1078
- <code>markdown</code> - Input Markdown text (UTF-8)
1079
- </li>
1080
-
1081
- <li>
1082
- <code>len</code> - Length of input text (use <code>strlen()</code> if null-terminated)
1083
- </li>
1084
-
1085
- <li>
1086
- <code>options</code> - Processing options (NULL for defaults)
1087
- </li>
1088
-
1089
- </ul>
1090
-
1091
- <p>
1092
- <strong>Returns:</strong> Newly allocated HTML string (must be freed with <code>apex_free_string</code>), or NULL on error
1093
- </p>
1094
-
1095
- <p>
1096
- <strong>Example:</strong>
1097
- </p>
1098
-
1099
- <div class="highlight">
1100
- <pre><span></span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">markdown</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;# Hello</span><span class="se">\n\n</span><span class="s">This is **bold**.&quot;</span><span class="p">;</span>
1101
- <span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
1102
- <span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1103
-
1104
- <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1105
- <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">html</span><span class="p">);</span>
1106
- <span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1107
- <span class="p">}</span>
1108
- </pre>
1109
- </div>
1110
-
1111
- <h3 id="structured-toc-entries">
1112
- Structured TOC&nbsp;entries
1113
- </h3>
1114
-
1115
- <p>
1116
- Extract headings as a flat array for outline UIs (collapsible table views, sidebars, etc.). Uses the same pipeline as <code>-t toc</code>: <code>id_format</code>, <code>toc_min</code> / <code>toc_max</code>, manual <code>{#id}</code> / IAL IDs, and <code>.no_toc</code> exclusions.
1117
- </p>
1118
-
1119
- <div class="highlight">
1120
- <pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_toc_entry</span><span class="w"> </span><span class="p">{</span>
1121
- <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">level</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 1–6 */</span>
1122
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">text</span><span class="p">;</span><span class="w"> </span><span class="cm">/* display title */</span>
1123
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">;</span><span class="w"> </span><span class="cm">/* fragment id */</span>
1124
- <span class="p">}</span><span class="w"> </span><span class="n">apex_toc_entry</span><span class="p">;</span>
1125
-
1126
- <span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_markdown_to_toc_entries</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">len</span><span class="p">,</span>
1127
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="o">*</span><span class="n">options</span><span class="p">,</span>
1128
- <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">out_count</span><span class="p">);</span>
1129
-
1130
- <span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_generate_toc_entries</span><span class="p">(</span><span class="n">cmark_node</span><span class="w"> </span><span class="o">*</span><span class="n">document</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id_format</span><span class="p">,</span>
1131
- <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">min_level</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_level</span><span class="p">,</span>
1132
- <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">out_count</span><span class="p">);</span>
1133
-
1134
- <span class="kt">void</span><span class="w"> </span><span class="nf">apex_toc_entries_free</span><span class="p">(</span><span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">);</span>
1135
- </pre>
1136
- </div>
1137
-
1138
- <p>
1139
- <strong>Parameters (<code>apex_markdown_to_toc_entries</code>):</strong>
1140
- </p>
1141
-
1142
- <ul>
1143
-
1144
- <li>
1145
- <code>markdown</code> / <code>len</code> - Input Markdown
1146
- </li>
1147
-
1148
- <li>
1149
- <code>options</code> - Processing options (NULL for defaults). Honors <code>toc_min</code>, <code>toc_max</code>, and <code>id_format</code>
1150
- </li>
1151
-
1152
- <li>
1153
- <code>out_count</code> - Required; receives the number of entries (0 if none)
1154
- </li>
1155
-
1156
- </ul>
1157
-
1158
- <p>
1159
- <strong>Returns:</strong> Heap array of <code>*out_count</code> entries, or NULL when there are no matching headings / on error. Free with <code>apex_toc_entries_free</code>.
1160
- </p>
1161
-
1162
- <p>
1163
- <strong>Defaults:</strong> <code>toc_min = 1</code>, <code>toc_max = 3</code> (<code>#</code> through <code>###</code>), same as <code>-t toc</code>.
1164
- </p>
1165
-
1166
- <p>
1167
- <strong>Example:</strong>
1168
- </p>
1169
-
1170
- <div class="highlight">
1171
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
1172
- <span class="n">opts</span><span class="p">.</span><span class="n">toc_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
1173
- <span class="n">opts</span><span class="p">.</span><span class="n">toc_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span>
1174
- <span class="n">opts</span><span class="p">.</span><span class="n">id_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="cm">/* GFM */</span>
1175
-
1176
- <span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
1177
- <span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="n">entries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_toc_entries</span><span class="p">(</span>
1178
- <span class="w"> </span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">count</span><span class="p">);</span>
1179
-
1180
- <span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1181
- <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%d %s #%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">level</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">id</span><span class="p">);</span>
1182
- <span class="p">}</span>
1183
-
1184
- <span class="n">apex_toc_entries_free</span><span class="p">(</span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span>
1185
- </pre>
1186
- </div>
1187
-
1188
- <p>
1189
- Nesting for collapsible sections is derived from <code>level</code>: treat the shallowest included level as a root row; when the next entry’s level is deeper, it is a child; when shallower or equal, close open sections.
1190
- </p>
1191
-
1192
- <p>
1193
- You can also emit a Markdown TOC string via <code>opts.output_format = APEX_OUTPUT_TOC</code> and <code>apex_markdown_to_html(...)</code> (CLI: <code>-t toc</code>).
1194
- </p>
1195
-
1196
- <h3 id="apexfreestring">
1197
- apex_free_string
1198
- </h3>
1199
-
1200
- <p>
1201
- Free a string allocated by Apex.
1202
- </p>
1203
-
1204
- <div class="highlight">
1205
- <pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">apex_free_string</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">str</span><span class="p">);</span>
1206
- </pre>
1207
- </div>
1208
-
1209
- <p>
1210
- <strong>Parameters:</strong>
1211
- </p>
1212
-
1213
- <ul>
1214
-
1215
- <li>
1216
- <code>str</code> - String to free (can be NULL, safe to call on NULL)
1217
- </li>
1218
-
1219
- </ul>
1220
-
1221
- <p>
1222
- <strong>Example:</strong>
1223
- </p>
1224
-
1225
- <div class="highlight">
1226
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span>
1227
- <span class="c1">// Use html...</span>
1228
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1229
- </pre>
1230
- </div>
1231
-
1232
- <h3 id="apexwraphtmldocument">
1233
- apex_wrap_html_document
1234
- </h3>
1235
-
1236
- <p>
1237
- Wrap HTML content in a complete HTML5 document structure.
1238
- </p>
1239
-
1240
- <div class="highlight">
1241
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_wrap_html_document</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">content</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">title</span><span class="p">,</span>
1242
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">stylesheet_path</span><span class="p">);</span>
1243
- </pre>
1244
- </div>
1245
-
1246
- <p>
1247
- <strong>Parameters:</strong>
1248
- </p>
1249
-
1250
- <ul>
1251
-
1252
- <li>
1253
- <code>content</code> - HTML content to wrap
1254
- </li>
1255
-
1256
- <li>
1257
- <code>title</code> - Document title (NULL for default “Document”)
1258
- </li>
1259
-
1260
- <li>
1261
- <code>stylesheet_path</code> - Path to CSS file to link (NULL for none)
1262
- </li>
1263
-
1264
- </ul>
1265
-
1266
- <p>
1267
- <strong>Returns:</strong> Newly allocated HTML document string (must be freed with <code>apex_free_string</code>)
1268
- </p>
1269
-
1270
- <p>
1271
- <strong>Example:</strong>
1272
- </p>
1273
-
1274
- <div class="highlight">
1275
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">fragment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1276
- <span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">document</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_wrap_html_document</span><span class="p">(</span><span class="n">fragment</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;My Document&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;style.css&quot;</span><span class="p">);</span>
1277
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">fragment</span><span class="p">);</span>
1278
- <span class="c1">// Use document...</span>
1279
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">document</span><span class="p">);</span>
1280
- </pre>
1281
- </div>
1282
-
1283
- <h3 id="apexprettyprinthtml">
1284
- apex_pretty_print_html
1285
- </h3>
1286
-
1287
- <p>
1288
- Pretty-print HTML with proper indentation.
1289
- </p>
1290
-
1291
- <div class="highlight">
1292
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_pretty_print_html</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="p">);</span>
1293
- </pre>
1294
- </div>
1295
-
1296
- <p>
1297
- <strong>Parameters:</strong>
1298
- </p>
1299
-
1300
- <ul>
1301
-
1302
- <li>
1303
- <code>html</code> - HTML to format
1304
- </li>
1305
-
1306
- </ul>
1307
-
1308
- <p>
1309
- <strong>Returns:</strong> Newly allocated formatted HTML string (must be freed with <code>apex_free_string</code>)
1310
- </p>
1311
-
1312
- <p>
1313
- <strong>Example:</strong>
1314
- </p>
1315
-
1316
- <div class="highlight">
1317
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1318
- <span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">pretty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_pretty_print_html</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1319
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1320
- <span class="c1">// Use pretty...</span>
1321
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">pretty</span><span class="p">);</span>
1322
- </pre>
1323
- </div>
1324
-
1325
- <h2 id="version-functions">
1326
- Version&nbsp;Functions
1327
- </h2>
1328
-
1329
- <h3 id="apexversionstring">
1330
- apex_version_string
1331
- </h3>
1332
-
1333
- <p>
1334
- Get version string.
1335
- </p>
1336
-
1337
- <div class="highlight">
1338
- <pre><span></span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_version_string</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
1339
- </pre>
1340
- </div>
1341
-
1342
- <p>
1343
- <strong>Returns:</strong> Version string (e.g., “0.1.0”)
1344
- </p>
1345
-
1346
- <h3 id="apexversionmajor-apexversionminor-apexversionpatch">
1347
- apex_version_major / apex_version_minor /&nbsp;apex_version_patch
1348
- </h3>
1349
-
1350
- <p>
1351
- Get individual version components.
1352
- </p>
1353
-
1354
- <div class="highlight">
1355
- <pre><span></span><span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_major</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
1356
- <span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_minor</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
1357
- <span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_patch</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
1358
- </pre>
1359
- </div>
1360
-
1361
- <p>
1362
- <strong>Returns:</strong> Version component as integer
1363
- </p>
1364
-
1365
- <h2 id="list-options">
1366
- List&nbsp;Options
1367
- </h2>
1368
-
1369
- <h3 id="mixed-list-markers">
1370
- Mixed List&nbsp;Markers
1371
- </h3>
1372
-
1373
- <p>
1374
- When <code>allow_mixed_list_markers</code> is enabled, lists with different marker types at the same indentation level will inherit the type from the first item. This is enabled by default in <strong>MultiMarkdown</strong> and <strong>Unified</strong> modes.
1375
- </p>
1376
-
1377
- <div class="highlight">
1378
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
1379
- <span class="c1">// opts.allow_mixed_list_markers is true by default</span>
1380
-
1381
- <span class="c1">// To enable in other modes:</span>
1382
- <span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1383
-
1384
- <span class="c1">// To disable in unified/multimarkdown modes:</span>
1385
- <span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
1386
- </pre>
1387
- </div>
1388
-
1389
- <p>
1390
- <strong>Example markdown:</strong>
1391
- </p>
1392
-
1393
- <div class="highlight">
1394
- <pre><span></span><span class="k">1.</span> First numbered item
1395
- <span class="k">*</span><span class="w"> </span>Second item (becomes numbered)
1396
- <span class="k">*</span><span class="w"> </span>Third item (becomes numbered)
1397
- </pre>
1398
- </div>
1399
-
1400
- <h3 id="alpha-lists">
1401
- Alpha&nbsp;Lists
1402
- </h3>
1403
-
1404
- <p>
1405
- When <code>allow_alpha_lists</code> is enabled, alphabetic markers (<code>a.</code>, <code>b.</code>, <code>c.</code> for lower-alpha and <code>A.</code>, <code>B.</code>, <code>C.</code> for upper-alpha) are converted to HTML lists with appropriate <code>list-style-type</code> CSS. This is enabled by default in <strong>Unified</strong> mode only.
1406
- </p>
1407
-
1408
- <div class="highlight">
1409
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
1410
- <span class="c1">// opts.allow_alpha_lists is true by default</span>
1411
-
1412
- <span class="c1">// To enable in other modes:</span>
1413
- <span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1414
-
1415
- <span class="c1">// To disable in unified mode:</span>
1416
- <span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
1417
- </pre>
1418
- </div>
1419
-
1420
- <p>
1421
- <strong>Example markdown:</strong>
1422
- </p>
1423
-
1424
- <div class="highlight">
1425
- <pre><span></span>&lt;!-- apex-alpha-list-lower --&gt;
1426
-
1427
- <span class="k">1.</span> First item
1428
- <span class="k">2.</span> Second item
1429
- <span class="k">3.</span> Third item
1430
- </pre>
1431
- </div>
1432
-
1433
- <p>
1434
- This produces HTML with <code>style=&quot;list-style-type: lower-alpha&quot;</code> on the <code>&lt;ol&gt;</code> tag.
1435
- </p>
1436
-
1437
- <h2 id="feature-flags">
1438
- Feature&nbsp;Flags
1439
- </h2>
1440
-
1441
- <p>
1442
- All feature flags control whether specific Markdown extensions are enabled:
1443
- </p>
1444
-
1445
- <ul>
1446
-
1447
- <li>
1448
- <code>enable_tables</code> - GFM-style tables
1449
- </li>
1450
-
1451
- <li>
1452
- <code>enable_footnotes</code> - Reference and inline footnotes
1453
- </li>
1454
-
1455
- <li>
1456
- <code>enable_definition_lists</code> - Definition lists (term: definition)
1457
- </li>
1458
-
1459
- <li>
1460
- <code>enable_smart_typography</code> - Smart quotes, dashes, ellipsis
1461
- </li>
1462
-
1463
- <li>
1464
- <code>enable_math</code> - LaTeX math (inline <code>$...$</code> and display <code>$$...$$</code>)
1465
- </li>
1466
-
1467
- <li>
1468
- <code>enable_critic_markup</code> - Critic Markup for change tracking
1469
- </li>
1470
-
1471
- <li>
1472
- <code>enable_wiki_links</code> - <code>[[WikiLink]]</code> syntax
1473
- </li>
1474
-
1475
- <li>
1476
- <code>enable_task_lists</code> - GFM task lists (<code>- [ ]</code> and <code>- [x]</code>)
1477
- </li>
1478
-
1479
- <li>
1480
- <code>enable_attributes</code> - Inline Attribute Lists (IAL)
1481
- </li>
1482
-
1483
- <li>
1484
- <code>enable_callouts</code> - Bear/Obsidian-style callouts
1485
- </li>
1486
-
1487
- <li>
1488
- <code>enable_marked_extensions</code> - Marked app extensions (TOC, page breaks, etc.)
1489
- </li>
1490
-
1491
- </ul>
1492
-
1493
- <p>
1494
- These are typically enabled/disabled based on the selected mode, but can be overridden.
1495
- </p>
1496
-
1497
- <h2 id="metadata-options">
1498
- Metadata&nbsp;Options
1499
- </h2>
1500
-
1501
- <ul>
1502
-
1503
- <li>
1504
- <code>strip_metadata</code> - Remove metadata from output (default: true)
1505
- </li>
1506
-
1507
- <li>
1508
- <code>enable_metadata_variables</code> - Enable <code>[%key]</code> variable replacement (default: true in MMD/Kramdown/Unified modes)
1509
- </li>
1510
-
1511
- </ul>
1512
-
1513
- <h2 id="file-inclusion">
1514
- File&nbsp;Inclusion
1515
- </h2>
1516
-
1517
- <ul>
1518
-
1519
- <li>
1520
- <code>enable_file_includes</code> - Enable file inclusion syntax (<code>&lt;&lt;[file.md]</code>, <code>{{file.md}}</code>, <code>/file.md</code>)
1521
- </li>
1522
-
1523
- <li>
1524
- <code>max_include_depth</code> - Maximum nesting depth for includes (default: 10)
1525
- </li>
1526
-
1527
- <li>
1528
- <code>base_directory</code> - Base directory for resolving relative include paths (NULL = current directory)
1529
- </li>
1530
-
1531
- </ul>
1532
-
1533
- <h2 id="output-options">
1534
- Output&nbsp;Options
1535
- </h2>
1536
-
1537
- <ul>
1538
-
1539
- <li>
1540
- <code>unsafe</code> - Allow raw HTML in output (default: true)
1541
- </li>
1542
-
1543
- <li>
1544
- <code>validate_utf8</code> - Validate UTF-8 encoding (default: true)
1545
- </li>
1546
-
1547
- <li>
1548
- <code>github_pre_lang</code> - Use GitHub-style code block language format (default: true)
1549
- </li>
1550
-
1551
- <li>
1552
- <code>standalone</code> - Generate complete HTML document with <code>&lt;html&gt;</code>, <code>&lt;head&gt;</code>, <code>&lt;body&gt;</code> (default: false)
1553
- </li>
1554
-
1555
- <li>
1556
- <code>pretty</code> - Pretty-print HTML with indentation (default: false)
1557
- </li>
1558
-
1559
- <li>
1560
- <code>stylesheet_path</code> - Path to CSS file to link in <code>&lt;head&gt;</code> (requires <code>standalone</code>)
1561
- </li>
1562
-
1563
- <li>
1564
- <code>document_title</code> - Title for HTML document (requires <code>standalone</code>)
1565
- </li>
1566
-
1567
- </ul>
1568
-
1569
- <h2 id="line-break-options">
1570
- Line Break&nbsp;Options
1571
- </h2>
1572
-
1573
- <ul>
1574
-
1575
- <li>
1576
- <code>hardbreaks</code> - Treat newlines as hard breaks (<code>&lt;br&gt;</code>) like GFM (default: false, true in GFM mode)
1577
- </li>
1578
-
1579
- <li>
1580
- <code>nobreaks</code> - Render soft breaks as spaces instead of newlines (default: false)
1581
- </li>
1582
-
1583
- </ul>
1584
-
1585
- <h2 id="header-id-options">
1586
- Header&nbsp;ID&nbsp;Options
1587
- </h2>
1588
-
1589
- <ul>
1590
-
1591
- <li>
1592
- <code>generate_header_ids</code> - Automatically generate IDs for headers (default: true)
1593
- </li>
1594
-
1595
- <li>
1596
- <code>header_anchors</code> - Generate <code>&lt;a&gt;</code> anchor tags instead of <code>id</code> attributes (default: false)
1597
- </li>
1598
-
1599
- <li>
1600
- <code>id_format</code> - ID format: <code>0</code> = GFM (with dashes), <code>1</code> = MMD (no dashes), <code>2</code> = Kramdown
1601
- </li>
1602
-
1603
- </ul>
1604
-
1605
- <h2 id="toc-options">
1606
- TOC&nbsp;Options
1607
- </h2>
1608
-
1609
- <ul>
1610
-
1611
- <li>
1612
- <code>toc_min</code> / <code>toc_max</code> - Inclusive heading depth for <code>-t toc</code> / <code>apex_markdown_to_toc_entries</code> and for bare HTML TOC markers (default: <code>1</code> / <code>3</code>)
1613
- </li>
1614
-
1615
- <li>
1616
- <code>output_format</code> - Set to <code>APEX_OUTPUT_TOC</code> to return a Markdown TOC list from <code>apex_markdown_to_html</code>
1617
- </li>
1618
-
1619
- <li>
1620
- <code>toc_entries_out</code> / <code>toc_entries_count_out</code> - Optional capture pointers used internally by <code>apex_markdown_to_toc_entries</code>; leave NULL for normal conversion
1621
- </li>
1622
-
1623
- </ul>
1624
-
1625
- <h2 id="table-options">
1626
- Table&nbsp;Options
1627
- </h2>
1628
-
1629
- <ul>
1630
-
1631
- <li>
1632
- <code>relaxed_tables</code> - Support tables without separator rows (Kramdown-style, default: true in Unified/Kramdown modes)
1633
- </li>
1634
-
1635
- <li>
1636
- <code>per_cell_alignment</code> - Enable per-cell alignment markers using colons at start/end of cells (default: true in Unified mode, false in other modes)
1637
- </li>
1638
-
1639
- </ul>
1640
-
1641
- <h2 id="complete-example">
1642
- Complete&nbsp;Example
1643
- </h2>
1644
-
1645
- <div class="highlight">
1646
- <pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;apex/apex.h&gt;</span>
1647
- <span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
1648
- <span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;string.h&gt;</span>
1649
-
1650
- <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
1651
- <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">markdown</span><span class="w"> </span><span class="o">=</span>
1652
- <span class="w"> </span><span class="s">&quot;---</span><span class="se">\n</span><span class="s">&quot;</span>
1653
- <span class="w"> </span><span class="s">&quot;title: Test Document</span><span class="se">\n</span><span class="s">&quot;</span>
1654
- <span class="w"> </span><span class="s">&quot;author: John Doe</span><span class="se">\n</span><span class="s">&quot;</span>
1655
- <span class="w"> </span><span class="s">&quot;---</span><span class="se">\n</span><span class="s">&quot;</span>
1656
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1657
- <span class="w"> </span><span class="s">&quot;# [%title]</span><span class="se">\n</span><span class="s">&quot;</span>
1658
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1659
- <span class="w"> </span><span class="s">&quot;By [%author]</span><span class="se">\n</span><span class="s">&quot;</span>
1660
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1661
- <span class="w"> </span><span class="s">&quot;This has **bold** and a [[WikiLink]].</span><span class="se">\n</span><span class="s">&quot;</span>
1662
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1663
- <span class="w"> </span><span class="s">&quot;Math: $E = mc^2$</span><span class="se">\n</span><span class="s">&quot;</span>
1664
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1665
- <span class="w"> </span><span class="s">&quot;1. Mixed markers</span><span class="se">\n</span><span class="s">&quot;</span>
1666
- <span class="w"> </span><span class="s">&quot;* Second item</span><span class="se">\n</span><span class="s">&quot;</span>
1667
- <span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
1668
- <span class="w"> </span><span class="s">&quot;a. Alpha list</span><span class="se">\n</span><span class="s">&quot;</span>
1669
- <span class="w"> </span><span class="s">&quot;b. Second alpha</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
1670
-
1671
- <span class="w"> </span><span class="c1">// Use unified mode with all features</span>
1672
- <span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
1673
- <span class="w"> </span><span class="c1">// Mixed markers and alpha lists are enabled by default in unified mode</span>
1674
- <span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1675
- <span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">standalone</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1676
- <span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">document_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Test Document&quot;</span><span class="p">;</span>
1677
-
1678
- <span class="w"> </span><span class="c1">// Convert to HTML</span>
1679
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1680
-
1681
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1682
- <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">html</span><span class="p">);</span>
1683
- <span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1684
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
1685
- <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
1686
- <span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Conversion failed</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
1687
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
1688
- <span class="w"> </span><span class="p">}</span>
1689
- <span class="p">}</span>
1690
- </pre>
1691
- </div>
1692
-
1693
- <h2 id="plugin-catalog-api">
1694
- Plugin Catalog&nbsp;API
1695
- </h2>
1696
-
1697
- <p>
1698
- Plugin listing and installation for app UIs is declared in <code>apex/plugins.h</code> (also included by <code>apexc.h</code>).
1699
- </p>
1700
-
1701
- <h3 id="types">
1702
- Types
1703
- </h3>
1704
-
1705
- <div class="highlight">
1706
- <pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_plugin_info</span><span class="w"> </span><span class="p">{</span>
1707
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">;</span>
1708
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">title</span><span class="p">;</span>
1709
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">description</span><span class="p">;</span>
1710
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">author</span><span class="p">;</span>
1711
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">homepage</span><span class="p">;</span>
1712
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="p">;</span>
1713
- <span class="p">}</span><span class="w"> </span><span class="n">apex_plugin_info</span><span class="p">;</span>
1714
-
1715
- <span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_plugin_catalog</span><span class="w"> </span><span class="p">{</span>
1716
- <span class="w"> </span><span class="n">apex_plugin_info</span><span class="w"> </span><span class="o">*</span><span class="n">items</span><span class="p">;</span>
1717
- <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
1718
- <span class="p">}</span><span class="w"> </span><span class="n">apex_plugin_catalog</span><span class="p">;</span>
1719
- </pre>
1720
- </div>
1721
-
1722
- <h3 id="fetch-available-plugins">
1723
- Fetch available&nbsp;plugins
1724
- </h3>
1725
-
1726
- <div class="highlight">
1727
- <pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;apex/plugins.h&gt;</span>
1728
-
1729
- <span class="n">apex_plugin_catalog</span><span class="w"> </span><span class="o">*</span><span class="n">catalog</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_plugin_catalog_fetch_default</span><span class="p">();</span>
1730
- <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1731
- <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">catalog</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1732
- <span class="w"> </span><span class="n">apex_plugin_info</span><span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">catalog</span><span class="o">-&gt;</span><span class="n">items</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
1733
- <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s - %s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">title</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">title</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">);</span>
1734
- <span class="w"> </span><span class="p">}</span>
1735
- <span class="w"> </span><span class="n">apex_plugin_catalog_free</span><span class="p">(</span><span class="n">catalog</span><span class="p">);</span>
1736
- <span class="p">}</span>
1737
- </pre>
1738
- </div>
1739
-
1740
- <p>
1741
- The default catalog URL is <code>APEX_PLUGIN_DIRECTORY_URL</code> (ApexMarkdown/apex-plugins on GitHub).
1742
- </p>
1743
-
1744
- <h3 id="list-installed-plugins">
1745
- List installed&nbsp;plugins
1746
- </h3>
1747
-
1748
- <p>
1749
- Uses the same discovery order as runtime plugin loading (project <code>.apex/plugins</code>, then user-global <code>~/.config/apex/plugins</code>):
1750
- </p>
1751
-
1752
- <div class="highlight">
1753
- <pre><span></span><span class="n">apex_plugin_discovery_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
1754
- <span class="w"> </span><span class="p">.</span><span class="n">base_directory</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;/path/to/document&quot;</span><span class="p">,</span>
1755
- <span class="w"> </span><span class="p">.</span><span class="n">include_project</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
1756
- <span class="w"> </span><span class="p">.</span><span class="n">include_user_global</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
1757
- <span class="p">};</span>
1758
- <span class="n">apex_plugin_catalog</span><span class="w"> </span><span class="o">*</span><span class="n">installed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_plugins_list_installed</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1759
- </pre>
1760
- </div>
1761
-
1762
- <h3 id="install-and-uninstall">
1763
- Install and&nbsp;uninstall
1764
- </h3>
1765
-
1766
- <p>
1767
- Installs into the user-global plugins directory. Requires <code>git</code> and <code>curl</code> on PATH (same as the CLI).
1768
- </p>
1769
-
1770
- <div class="highlight">
1771
- <pre><span></span><span class="n">apex_plugin_install_options</span><span class="w"> </span><span class="n">install_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
1772
- <span class="w"> </span><span class="p">.</span><span class="n">allow_untrusted_repo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">,</span>
1773
- <span class="w"> </span><span class="p">.</span><span class="n">run_post_install</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
1774
- <span class="p">};</span>
1775
- <span class="kt">char</span><span class="w"> </span><span class="n">err</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
1776
- <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">apex_plugin_install</span><span class="p">(</span><span class="s">&quot;kbd&quot;</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">install_opts</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">err</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1777
- <span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Install failed: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">);</span>
1778
- <span class="p">}</span>
1779
-
1780
- <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">apex_plugin_uninstall</span><span class="p">(</span><span class="s">&quot;kbd&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">err</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1781
- <span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Uninstall failed: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">);</span>
1782
- <span class="p">}</span>
1783
- </pre>
1784
- </div>
1785
-
1786
- <p>
1787
- Set <code>allow_untrusted_repo</code> to <code>true</code> when installing from a Git URL or <code>user/repo</code> shorthand instead of a directory id.
1788
- </p>
1789
-
1790
- <h3 id="enable-plugins-during-conversion">
1791
- Enable plugins during&nbsp;conversion
1792
- </h3>
1793
-
1794
- <div class="highlight">
1795
- <pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
1796
- <span class="n">opts</span><span class="p">.</span><span class="n">enable_plugins</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
1797
- <span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1798
- </pre>
1799
- </div>
1800
-
1801
- <h2 id="compiling-and-linking">
1802
- Compiling and&nbsp;Linking
1803
- </h2>
1804
-
1805
- <h3 id="with-cmake">
1806
- With&nbsp;CMake
1807
- </h3>
1808
-
1809
- <div class="highlight">
1810
- <pre><span></span><span class="c"># In your CMakeLists.txt</span>
1811
- <span class="nb">find_package</span><span class="p">(</span><span class="s">apex</span><span class="w"> </span><span class="s">REQUIRED</span><span class="p">)</span>
1812
- <span class="nb">target_link_libraries</span><span class="p">(</span><span class="s">your_app</span><span class="w"> </span><span class="s">apex</span><span class="p">)</span>
1813
- </pre>
1814
- </div>
1815
-
1816
- <h3 id="manual-compilation">
1817
- Manual Compilation
1818
- </h3>
1819
-
1820
- <div class="highlight">
1821
- <pre><span></span><span class="c1"># Compile</span>
1822
- gcc<span class="w"> </span>-c<span class="w"> </span>-I/usr/local/include<span class="w"> </span>your_app.c
1823
-
1824
- <span class="c1"># Link</span>
1825
- gcc<span class="w"> </span>your_app.o<span class="w"> </span>-L/usr/local/lib<span class="w"> </span>-lapex<span class="w"> </span>-o<span class="w"> </span>your_app
1826
-
1827
- <span class="c1"># Run (may need library path)</span>
1828
- <span class="nv">DYLD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib<span class="w"> </span>./your_app<span class="w"> </span><span class="c1"># macOS</span>
1829
- <span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib<span class="w"> </span>./your_app<span class="w"> </span><span class="c1"># Linux</span>
1830
- </pre>
1831
- </div>
1832
-
1833
- <h3 id="static-linking">
1834
- Static&nbsp;Linking
1835
- </h3>
1836
-
1837
- <div class="highlight">
1838
- <pre><span></span>gcc<span class="w"> </span>your_app.c<span class="w"> </span>-I/usr/local/include<span class="w"> </span>-L/usr/local/lib<span class="w"> </span>-lapex<span class="w"> </span>-static<span class="w"> </span>-o<span class="w"> </span>your_app
1839
- </pre>
1840
- </div>
1841
-
1842
- <h2 id="thread-safety">
1843
- Thread&nbsp;Safety
1844
- </h2>
1845
-
1846
- <p>
1847
- Apex is thread-safe as long as:
1848
- </p>
1849
-
1850
- <ol>
1851
-
1852
- <li>
1853
- Each thread uses its own <code>apex_options</code> structure
1854
- </li>
1855
-
1856
- <li>
1857
- Document nodes are not shared between threads
1858
- </li>
1859
-
1860
- <li>
1861
- The conversion function can be called from multiple threads simultaneously
1862
- </li>
1863
-
1864
- </ol>
1865
-
1866
- <p>
1867
- <strong>Example:</strong>
1868
- </p>
1869
-
1870
- <div class="highlight">
1871
- <pre><span></span><span class="c1">// Thread-safe: each thread has its own options</span>
1872
- <span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="nf">thread_func</span><span class="p">(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1873
- <span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
1874
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1875
- <span class="w"> </span><span class="c1">// Use html...</span>
1876
- <span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1877
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
1878
- <span class="p">}</span>
1879
- </pre>
1880
- </div>
1881
-
1882
- <h2 id="memory-management">
1883
- Memory&nbsp;Management
1884
- </h2>
1885
-
1886
- <ul>
1887
-
1888
- <li>
1889
- All strings returned by Apex must be freed with <code>apex_free_string()</code>
1890
- </li>
1891
-
1892
- <li>
1893
- <code>apex_options</code> structures are typically stack-allocated (no freeing needed)
1894
- </li>
1895
-
1896
- <li>
1897
- Safe to call <code>apex_free_string(NULL)</code>
1898
- </li>
1899
-
1900
- <li>
1901
- Always check return values before use
1902
- </li>
1903
-
1904
- </ul>
1905
-
1906
- <h2 id="error-handling">
1907
- Error&nbsp;Handling
1908
- </h2>
1909
-
1910
- <ul>
1911
-
1912
- <li>
1913
- Functions return <code>NULL</code> or empty strings on error
1914
- </li>
1915
-
1916
- <li>
1917
- Check return values before use
1918
- </li>
1919
-
1920
- <li>
1921
- Errors are generally due to:
1922
- <ul>
1923
-
1924
- <li>
1925
- Memory allocation failures
1926
- </li>
1927
-
1928
- <li>
1929
- Invalid input
1930
- </li>
1931
-
1932
- <li>
1933
- Missing dependencies
1934
- </li>
1935
-
1936
- </ul>
1937
-
1938
- </li>
1939
-
1940
- </ul>
1941
-
1942
- <p>
1943
- <strong>Example:</strong>
1944
- </p>
1945
-
1946
- <div class="highlight">
1947
- <pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1948
- <span class="k">if</span><span class="w"> </span><span class="o">&lt;!--</span><span class="n">IDX</span><span class="o">:</span><span class="n">idxref</span><span class="mi">-0</span><span class="o">--&gt;</span><span class="w"> </span><span class="p">{</span>
1949
- <span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Conversion failed</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
1950
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
1951
- <span class="p">}</span>
1952
- <span class="c1">// Use html...</span>
1953
- <span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1954
- </pre>
1955
- </div>
1956
-
1957
- <h2 id="performance-tips">
1958
- Performance&nbsp;Tips
1959
- </h2>
1960
-
1961
- <ol>
1962
-
1963
- <li>
1964
- <strong>Reuse options</strong>: Create <code>apex_options</code> once and reuse for multiple conversions
1965
- </li>
1966
-
1967
- <li>
1968
- <strong>Provide accurate length</strong>: Avoid unnecessary <code>strlen()</code> calls
1969
- </li>
1970
-
1971
- <li>
1972
- <strong>Disable unused features</strong>: Turn off extensions you don’t need
1973
- </li>
1974
-
1975
- <li>
1976
- <strong>Batch processing</strong>: Process multiple documents in parallel (thread-safe)
1977
- </li>
1978
-
1979
- </ol>
1980
-
1981
- <p>
1982
- <strong>Example:</strong>
1983
- </p>
1984
-
1985
- <div class="highlight">
1986
- <pre><span></span><span class="c1">// Good: reuse options</span>
1987
- <span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
1988
- <span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
1989
- <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">docs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="n">lens</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
1990
- <span class="w"> </span><span class="c1">// Process...</span>
1991
- <span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
1992
- <span class="p">}</span>
1993
- </pre>
1994
- </div>
1995
-
1996
- <h2 id="related">
1997
- Related
1998
- </h2>
1999
-
2000
- <ul>
2001
-
2002
- <li>
2003
- <a href="Xcode-Integration.html">Xcode Integration</a> - Using Apex in Xcode projects
2004
- </li>
2005
-
2006
- <li>
2007
- <a href="Modes.html">Modes</a> - Understanding processor modes
2008
- </li>
2009
-
2010
- <li>
2011
- <a href="Header-IDs.html">Header IDs</a> - Header ID generation options
2012
- </li>
2013
-
2014
- </ul>
2015
-
2016
- <h1 id="index-section">
2017
- Index
2018
- </h1>
2019
-
2020
- <div class="index">
2021
-
2022
- <dl>
2023
-
2024
- <dt>
2025
- H
2026
- </dt>
2027
-
2028
- <dd>
2029
-
2030
- <ul>
2031
-
2032
- <li>
2033
-
2034
- html <a class="index-return" href="#idxref-0"><sup>[go]</sup></a>
2035
- </li>
2036
-
2037
- </ul>
2038
-
2039
- </dd>
2040
-
2041
- </dl>
2042
-
2043
- </div>
2044
-
2045
- <script>
2046
- // Hamburger menu functionality
2047
- (function() {
2048
- function initHamburgerMenu() {
2049
- var hamburger = document.getElementById('hamburger-menu');
2050
- var sidebar = document.querySelector('.main-toc, .sidebar');
2051
- var overlay = document.getElementById('mobile-menu-overlay');
2052
-
2053
- if (!hamburger || !sidebar) return;
2054
-
2055
- function toggleMenu() {
2056
- var isOpen = sidebar.classList.contains('mobile-open');
2057
- if (isOpen) {
2058
- sidebar.classList.remove('mobile-open');
2059
- hamburger.classList.remove('active');
2060
- if (overlay) overlay.classList.remove('active');
2061
- } else {
2062
- sidebar.classList.add('mobile-open');
2063
- hamburger.classList.add('active');
2064
- if (overlay) overlay.classList.add('active');
2065
- }
2066
- }
2067
-
2068
- hamburger.addEventListener('click', function(e) {
2069
- e.stopPropagation();
2070
- toggleMenu();
2071
- });
2072
-
2073
- if (overlay) {
2074
- overlay.addEventListener('click', function() {
2075
- toggleMenu();
2076
- });
2077
- }
2078
-
2079
- // Close menu when clicking on a sidebar link (mobile only)
2080
- if (window.innerWidth <= 768) {
2081
- var sidebarLinks = sidebar.querySelectorAll('a');
2082
- sidebarLinks.forEach(function(link) {
2083
- link.addEventListener('click', function() {
2084
- setTimeout(function() {
2085
- sidebar.classList.remove('mobile-open');
2086
- hamburger.classList.remove('active');
2087
- if (overlay) overlay.classList.remove('active');
2088
- }, 100);
2089
- });
2090
- });
2091
- }
2092
-
2093
- // Close menu on window resize if going to desktop
2094
- window.addEventListener('resize', function() {
2095
- if (window.innerWidth > 768) {
2096
- sidebar.classList.remove('mobile-open');
2097
- hamburger.classList.remove('active');
2098
- if (overlay) overlay.classList.remove('active');
2099
- }
2100
- });
2101
- }
2102
-
2103
- // Initialize when DOM is ready
2104
- if (document.readyState === 'loading') {
2105
- document.addEventListener('DOMContentLoaded', initHamburgerMenu);
2106
- } else {
2107
- initHamburgerMenu();
2108
- }
2109
- })();
2110
-
2111
- </script>
2112
- <script>
2113
- (function() {
2114
- // Clone the page TOC for floating TOC
2115
- function initFloatingTOC() {
2116
- var pageTOC = document.getElementById('page-toc-top');
2117
- var floatingTOCContent = document.getElementById('floating-toc-content');
2118
- var floatingTOC = document.getElementById('floating-toc');
2119
-
2120
- if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
2121
-
2122
- // Clone the TOC structure
2123
- var tocClone = pageTOC.cloneNode(true);
2124
- tocClone.id = 'floating-toc-clone';
2125
- floatingTOCContent.appendChild(tocClone);
2126
-
2127
- // Update all links to use smooth scrolling
2128
- var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
2129
- allTOCLinks.forEach(function(link) {
2130
- link.addEventListener('click', function(e) {
2131
- var href = this.getAttribute('href');
2132
- if (href && href.startsWith('#')) {
2133
- e.preventDefault();
2134
- var targetId = href.substring(1);
2135
- var targetElement = document.getElementById(targetId);
2136
- if (targetElement) {
2137
- var offset = 20; // Offset from top
2138
-
2139
- // Function to calculate absolute position from document top
2140
- function getAbsoluteTop(element) {
2141
- var top = 0;
2142
- while (element) {
2143
- top += element.offsetTop;
2144
- element = element.offsetParent;
2145
- }
2146
- return top;
2147
- }
2148
-
2149
- var absoluteTop = getAbsoluteTop(targetElement);
2150
- var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
2151
- var offsetPosition = absoluteTop - offset;
2152
-
2153
- // Only scroll if we're not already at the target position
2154
- if (Math.abs(scrollTop - offsetPosition) > 10) {
2155
- window.scrollTo({
2156
- top: Math.max(0, offsetPosition),
2157
- behavior: 'smooth'
2158
- });
2159
- }
2160
-
2161
- // Update URL hash without triggering scroll
2162
- if (history.pushState) {
2163
- history.pushState(null, null, href);
2164
- }
2165
- }
2166
- }
2167
- });
2168
- });
2169
-
2170
- // Handle scroll to show/hide floating TOC
2171
- var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
2172
- var tocBottom = tocTop + pageTOC.offsetHeight;
2173
-
2174
- function updateFloatingTOC() {
2175
- var scrollY = window.pageYOffset || document.documentElement.scrollTop;
2176
-
2177
- if (scrollY > tocBottom) {
2178
- floatingTOC.classList.add('visible');
2179
- } else {
2180
- floatingTOC.classList.remove('visible');
2181
- }
2182
- }
2183
-
2184
- // Throttle scroll events
2185
- var ticking = false;
2186
- window.addEventListener('scroll', function() {
2187
- if (!ticking) {
2188
- window.requestAnimationFrame(function() {
2189
- updateFloatingTOC();
2190
- ticking = false;
2191
- });
2192
- ticking = true;
2193
- }
2194
- });
2195
-
2196
- // Initial check
2197
- updateFloatingTOC();
2198
- }
2199
-
2200
- // Initialize when DOM is ready
2201
- if (document.readyState === 'loading') {
2202
- document.addEventListener('DOMContentLoaded', initFloatingTOC);
2203
- } else {
2204
- initFloatingTOC();
2205
- }
2206
- })();
2207
- </script>
2208
- <footer class="page-footer"><p>Copyright 2025 Brett Terpstra, All Rights Reserved | MIT License</p></footer></body>
2209
-
2210
- </html>
2211
-