apex-ruby 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/apex-ruby.gemspec +14 -3
  4. data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
  5. data/ext/apex_ext/apex_src/src/apex.c +64 -5
  6. data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
  7. data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
  8. data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
  9. data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
  10. data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
  11. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
  12. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
  13. data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
  14. data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
  15. data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
  16. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
  17. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
  18. data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
  19. data/ext/apex_ext/extconf.rb +31 -79
  20. data/lib/apex/version.rb +1 -1
  21. metadata +1 -470
  22. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  23. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  24. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  25. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  26. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  27. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  28. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  29. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  30. data/ext/apex_ext/apex_src/Package.swift +0 -192
  31. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  32. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  33. data/ext/apex_ext/apex_src/README.md +0 -536
  34. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  35. data/ext/apex_ext/apex_src/VERSION +0 -1
  36. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  37. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  38. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  39. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  40. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  41. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  42. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  43. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  44. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  45. data/ext/apex_ext/apex_src/debug.log +0 -7
  46. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  47. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  48. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  49. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  52. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  53. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  54. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  55. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  57. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  58. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  59. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  60. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  61. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  62. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  63. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  64. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  65. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  66. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  67. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  68. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  69. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  70. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  71. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  74. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  77. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  78. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  79. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  88. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  138. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  139. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  140. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  141. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  142. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  143. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  144. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  146. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  147. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  148. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  149. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  150. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  151. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  152. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  153. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  155. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  159. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  160. data/ext/apex_ext/apex_src/ial.html +0 -24
  161. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  169. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  170. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  171. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  173. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  174. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  175. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  176. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  177. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  178. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  179. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  181. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  183. data/ext/apex_ext/apex_src/output.html +0 -87
  184. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  185. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  186. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  187. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  188. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  189. data/ext/apex_ext/apex_src/test.html +0 -103
  190. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  191. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  192. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  193. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  194. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  195. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  196. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  197. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  198. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  199. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  200. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  201. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  202. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  206. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  207. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  213. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  214. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  216. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  221. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  222. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  235. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  249. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  250. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  254. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  255. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  256. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  261. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  262. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  263. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  272. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  273. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  280. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  281. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  282. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  283. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  284. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  285. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  286. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  287. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  288. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  289. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  290. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  291. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  292. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  293. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  294. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  295. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  296. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  297. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  298. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  299. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  300. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  301. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  302. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  303. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  304. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  305. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  306. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  307. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  308. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  309. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  310. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  311. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  312. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  313. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  314. data/ext/apex_ext/apex_src/tests.rb +0 -39
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +0 -38
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +0 -38
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
  409. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
  410. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
  411. data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
  412. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
  413. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
  414. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
  415. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
  416. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
  417. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
  418. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
  419. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
  420. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
  421. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
  422. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
  423. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
  424. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
  425. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
  426. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
  427. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
  428. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
  429. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
  430. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
  431. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
  432. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
  433. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
  434. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
  435. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
  436. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
  437. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
  438. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
  439. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
  440. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
  441. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
  442. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
  443. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
  444. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
  445. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
  446. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
  447. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
  448. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
  449. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
  450. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
  451. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
  452. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
  453. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
  454. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
  455. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
  456. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
  457. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
  458. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
  459. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
  460. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
  461. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
  462. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
  463. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
  464. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
  465. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
  466. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
  467. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
  468. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
  469. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
  470. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
  471. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  472. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
  473. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
  474. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
  475. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  476. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  477. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
  478. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
  479. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
  480. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
  481. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
  482. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
  483. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  484. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
  485. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
  486. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
  487. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
  488. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
  489. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
  490. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
@@ -1,873 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Generate Dash docset for Apex documentation
3
- #
4
- # Usage:
5
- # ./generate_docset.rb [single|multi]
6
- #
7
- # single - Generate single-page CLI options docset (ApexCLI.docset)
8
- # multi - Generate multi-page docset from wiki files (Apex.docset, default)
9
-
10
- require 'fileutils'
11
- require 'yaml'
12
- require 'uri'
13
-
14
- begin
15
- require 'rouge'
16
- ROUGE_AVAILABLE = true
17
- puts "Rouge loaded successfully (version: #{Rouge::VERSION rescue 'unknown'})"
18
- rescue LoadError => e
19
- ROUGE_AVAILABLE = false
20
- puts "Warning: Rouge gem not found. Install with: gem install rouge"
21
- puts "Error: #{e.message}" if e.message
22
- puts "Syntax highlighting will be disabled."
23
- rescue => e
24
- ROUGE_AVAILABLE = false
25
- puts "Warning: Error loading Rouge: #{e.class}: #{e.message}"
26
- puts "Syntax highlighting will be disabled."
27
- end
28
-
29
- # Only require sqlite3 for multi-page docset
30
- def require_sqlite3
31
- require 'sqlite3'
32
- rescue LoadError
33
- puts "Error: sqlite3 gem is required for multi-page docset generation"
34
- puts "Install it with: gem install sqlite3"
35
- exit 1
36
- end
37
-
38
- MODE = ARGV[0] || 'multi' # Default to multi-page docset
39
- SCRIPT_DIR = File.expand_path(__dir__)
40
- DOCS_DIR = File.join(SCRIPT_DIR, '..')
41
- DOCSETS_DIR = File.join(DOCS_DIR, 'documentation', 'docsets')
42
- WIKI_DIR = File.join(DOCS_DIR, 'documentation', 'apex.wiki')
43
- MMD2CHEATSET = File.expand_path('~/Desktop/Code/mmd2cheatset/mmd2cheatset.rb')
44
-
45
- # Find Apex binary - prioritize build/apex (most recent build)
46
- def find_apex_binary
47
- # Prioritize build/apex if it exists (most recent build)
48
- build_apex = File.expand_path('../build/apex', __dir__)
49
- return build_apex if File.exist?(build_apex)
50
-
51
- # Try build-release (relative to repo root, not script dir)
52
- build_release_apex = File.expand_path('../build-release/apex', __dir__)
53
- return build_release_apex if File.exist?(build_release_apex)
54
-
55
- # Try other common build directories
56
- ['../build-debug/apex'].each do |path|
57
- full_path = File.expand_path(path, __dir__)
58
- return full_path if File.exist?(full_path)
59
- end
60
-
61
- # Fall back to system-installed apex
62
- system_apex = `which apex 2>/dev/null`.strip
63
- return system_apex if system_apex != '' && File.exist?(system_apex)
64
-
65
- nil
66
- end
67
-
68
- APEX_BIN = find_apex_binary
69
-
70
- def generate_single_page_docset
71
- puts "Generating single-page docset using mmd2cheatset..."
72
-
73
- # Ensure output directory exists
74
- FileUtils.mkdir_p(DOCSETS_DIR)
75
-
76
- # Change to docsets directory for output
77
- original_dir = Dir.pwd
78
- Dir.chdir(DOCSETS_DIR)
79
-
80
- # Create a cheatsheet markdown file for command-line options
81
- cheatsheet_md = <<~MARKDOWN
82
- title: Apex Command Line Options
83
- name: ApexCLI
84
- keyword: apex
85
-
86
- Complete reference for all Apex command-line flags and options.
87
-
88
- | name | command | note |
89
- |------|---------|------|
90
- | Help | -h, --help | Display help message and exit |
91
- | Version | -v, --version | Display version information and exit |
92
- | Progress | --[no-]progress | Show progress indicator during processing |
93
- | Combine | --combine | Concatenate Markdown files into a single stream |
94
- | MMD Merge | --mmd-merge | Merge files from MultiMarkdown index files |
95
- | Mode | -m, --mode MODE | Set processor mode (commonmark, gfm, mmd, kramdown, unified) |
96
- | Output | -o, --output FILE | Write output to a file instead of stdout |
97
- | Standalone | -s, --standalone | Generate complete HTML document |
98
- | Style | --style FILE, --css FILE | Link to a CSS file in document head |
99
- | Embed CSS | --embed-css | Embed CSS file contents into style tag |
100
- | Script | --script VALUE | Inject script tags (mermaid, mathjax, katex, etc.) |
101
- | Title | --title TITLE | Set the document title |
102
- | Pretty | --pretty | Pretty-print HTML with indentation |
103
- | ARIA | --aria | Add ARIA labels and accessibility attributes |
104
- | Plugins | --plugins, --no-plugins | Enable or disable plugin processing |
105
- | List Plugins | --list-plugins | List installed and available plugins |
106
- | Install Plugin | --install-plugin ID-or-URL | Install a plugin by ID or URL |
107
- | Uninstall Plugin | --uninstall-plugin ID | Uninstall a locally installed plugin |
108
- | ID Format | --id-format FORMAT | Set header ID generation format (gfm, mmd, kramdown) |
109
- | No IDs | --no-ids | Disable automatic header ID generation |
110
- | Header Anchors | --header-anchors | Generate anchor tags instead of id attributes |
111
- | Relaxed Tables | --relaxed-tables | Enable relaxed table parsing |
112
- | No Relaxed Tables | --no-relaxed-tables | Disable relaxed table parsing |
113
- | Captions | --captions POSITION | Control table caption position (above, below) |
114
- | No Tables | --no-tables | Disable table support entirely |
115
- | Alpha Lists | --[no-]alpha-lists | Control alphabetic list markers (a., b., c.) |
116
- | Mixed Lists | --[no-]mixed-lists | Control mixed list marker types |
117
- | No Footnotes | --no-footnotes | Disable footnote support |
118
- | No Smart | --no-smart | Disable smart typography |
119
- | No Math | --no-math | Disable math support |
120
- | Autolink | --[no-]autolink | Control automatic linking of URLs and email addresses |
121
- | Obfuscate Emails | --obfuscate-emails | Obfuscate email links by hex-encoding |
122
- | Includes | --includes, --no-includes | Enable or disable file inclusion features |
123
- | Embed Images | --embed-images | Embed local images as base64 data URLs |
124
- | Base Dir | --base-dir DIR | Set base directory for resolving relative paths |
125
- | Transforms | --[no-]transforms | Control metadata variable transforms |
126
- | Meta File | --meta-file FILE | Load metadata from external file |
127
- | Meta | --meta KEY=VALUE | Set metadata from command line |
128
- | Bibliography | --bibliography FILE | Specify bibliography file (BibTeX, CSL JSON, CSL YAML) |
129
- | CSL | --csl FILE | Specify Citation Style Language file |
130
- | No Bibliography | --no-bibliography | Suppress bibliography output |
131
- | Link Citations | --link-citations | Link citations to bibliography entries |
132
- | Show Tooltips | --show-tooltips | Enable tooltips on citations when hovering |
133
- | Indices | --indices | Enable index processing |
134
- | No Indices | --no-indices | Disable index processing entirely |
135
- | No Index | --no-index | Suppress index generation while creating markers |
136
- | Hardbreaks | --hardbreaks | Treat newlines as hard breaks (GFM style) |
137
- | Sup Sub | --[no-]sup-sub | Control MultiMarkdown-style superscript and subscript |
138
- | Divs | --[no-]divs | Control Pandoc fenced divs syntax |
139
- | Spans | --[no-]spans | Control Pandoc-style bracketed spans |
140
- | Emoji Autocorrect | --[no-]emoji-autocorrect | Control emoji name autocorrect |
141
- | Unsafe | --[no-]unsafe | Control whether raw HTML is allowed |
142
- | Wikilinks | --[no-]wikilinks | Control wiki link syntax |
143
- | Wikilink Space | --wikilink-space MODE | Control how spaces in wiki links are handled |
144
- | Wikilink Extension | --wikilink-extension EXT | Add file extension to wiki link URLs |
145
- | Accept | --accept | Accept all Critic Markup changes |
146
- | Reject | --reject | Reject all Critic Markup changes |
147
- [Command Line Options]
148
-
149
- ---
150
-
151
- For complete documentation, see the Apex wiki at https://github.com/ApexMarkdown/apex/wiki
152
- MARKDOWN
153
-
154
- File.write('Apex_Command_Line_Options.md', cheatsheet_md)
155
-
156
- if File.exist?(MMD2CHEATSET)
157
- system("#{MMD2CHEATSET} Apex_Command_Line_Options.md")
158
- FileUtils.rm('Apex_Command_Line_Options.md')
159
- puts "\nSingle-page docset generated successfully!"
160
- puts "Docset location: #{File.join(DOCSETS_DIR, "ApexCLI.docset")}"
161
- else
162
- puts "Error: mmd2cheatset.rb not found at #{MMD2CHEATSET}"
163
- puts "Please check the path or install mmd2cheatset"
164
- Dir.chdir(original_dir)
165
- exit 1
166
- end
167
-
168
- # Return to original directory
169
- Dir.chdir(original_dir)
170
- end
171
-
172
- def highlight_code_blocks(html_content)
173
- return html_content unless ROUGE_AVAILABLE
174
-
175
- code_block_count = 0
176
- highlighted_count = 0
177
- error_count = 0
178
-
179
- begin
180
- # Find all code blocks - handle various formats
181
- # Apex outputs: <pre lang="language"><code>...</code></pre>
182
- # Or: <pre><code class="language-xxx">...</code></pre>
183
- # Use non-greedy matching and ensure we match complete code blocks
184
- # Match <pre> tag (with optional lang attribute), then <code> tag (with optional class), then content, then closing tags
185
- result = html_content.gsub(/<pre(\s+lang=["']([^"']+)["'])?[^>]*>\s*<code(\s+class=["'](?:language-)?([^"'\s]+)["'])?[^>]*>([\s\S]*?)<\/code>\s*<\/pre>/i) do |match|
186
- code_block_count += 1
187
- lang = $2 || $4 # Get lang from <pre lang="..."> ($2) or class from <code class="..."> ($4)
188
- code = $5
189
-
190
- # Skip if code is empty or suspiciously large (might be a regex error)
191
- if code.nil? || code.empty? || code.length > 100000
192
- match
193
- else
194
- begin
195
- # Unescape HTML entities
196
- code = code.gsub(/&lt;/, '<').gsub(/&gt;/, '>').gsub(/&amp;/, '&').gsub(/&quot;/, '"')
197
-
198
- if lang && !lang.empty?
199
- lang_normalized = lang.downcase
200
- # Handle common language aliases
201
- lang_aliases = {
202
- 'yml' => 'yaml',
203
- 'md' => 'markdown',
204
- 'mkd' => 'markdown',
205
- 'mkdn' => 'markdown',
206
- 'mdown' => 'markdown'
207
- }
208
- lang_normalized = lang_aliases[lang_normalized] || lang_normalized
209
-
210
- lexer = Rouge::Lexer.find(lang_normalized)
211
- if lexer.nil?
212
- puts " Warning: No lexer found for language '#{lang}' (normalized: '#{lang_normalized}'), using PlainText"
213
- lexer = Rouge::Lexers::PlainText
214
- end
215
- else
216
- lexer = Rouge::Lexers::PlainText
217
- end
218
-
219
- formatter = Rouge::Formatters::HTML.new
220
- highlighted = formatter.format(lexer.lex(code))
221
- highlighted_count += 1
222
-
223
- # Return highlighted code with proper classes
224
- "<pre><code class=\"highlight #{lang ? "language-#{lang}" : ''}\">#{highlighted}</code></pre>"
225
- rescue => e
226
- error_count += 1
227
- # If highlighting fails, return original
228
- puts " Warning: Failed to highlight code block (lang: #{lang || 'none'}): #{e.class}: #{e.message}"
229
- puts " Backtrace: #{e.backtrace.first(2).join(' | ')}" if $DEBUG
230
- match
231
- end
232
- end
233
- end
234
-
235
- if code_block_count > 0
236
- puts " Highlighted #{highlighted_count}/#{code_block_count} code blocks"
237
- puts " Errors: #{error_count}" if error_count > 0
238
- end
239
-
240
- result
241
- rescue => e
242
- puts "Warning: Error in highlight_code_blocks: #{e.class}: #{e.message}"
243
- puts "Backtrace: #{e.backtrace.first(3).join("\n")}" if $DEBUG
244
- puts "Returning original HTML without highlighting"
245
- html_content
246
- end
247
- end
248
-
249
- # Rouge CSS is now included in shared_styles.css
250
-
251
- def extract_headers(html_content)
252
- headers = []
253
- # Match headers with IDs, handling multi-line formatting
254
- html_content.scan(/<h([1-6])[^>]*id=["']([^"']+)["'][^>]*>([\s\S]*?)<\/h[1-6]>/i) do |level, id, text|
255
- # Remove HTML tags and normalize whitespace
256
- text = text.gsub(/<[^>]+>/, '').gsub(/\s+/, ' ').strip
257
- headers << { level: level.to_i, id: id, text: text } unless text.empty?
258
- end
259
- headers
260
- end
261
-
262
- def parse_sidebar_toc
263
- sidebar_file = File.join(WIKI_DIR, '_Sidebar.md')
264
- toc_html = '<nav class="main-toc">'
265
- toc_html += '<ul>'
266
-
267
- # Always add Home first
268
- toc_html += '<li><a href="Home.html">Home</a></li>'
269
-
270
- if File.exist?(sidebar_file)
271
- sidebar_content = File.read(sidebar_file)
272
- # Parse markdown links: [Text](PageName) or [Text](Page-Name)
273
- sidebar_content.scan(/\[([^\]]+)\]\(([^)]+)\)/) do |text, link|
274
- # Remove .md extension if present, add .html
275
- page_name = link.gsub(/\.md$/, '')
276
- # Skip if it's Home (already added)
277
- next if page_name.downcase == 'home'
278
- toc_html += "<li><a href=\"#{page_name}.html\">#{text}</a></li>"
279
- end
280
- end
281
-
282
- toc_html += '</ul>'
283
- toc_html += '</nav>'
284
- toc_html
285
- end
286
-
287
- def generate_page_toc(headers)
288
- return '' if headers.empty?
289
-
290
- toc_html = '<nav class="page-toc">'
291
- toc_html += '<ul>'
292
- stack = [] # Track open list items that need closing
293
-
294
- headers.each_with_index do |header, idx|
295
- level = header[:level]
296
- next_header = headers[idx + 1]
297
- next_level = next_header ? next_header[:level] : 1
298
-
299
- # Close lists if we're going up in level
300
- while !stack.empty? && stack.last >= level
301
- toc_html += '</ul></li>'
302
- stack.pop
303
- end
304
-
305
- # If next item is deeper, this item will have children
306
- if next_level > level
307
- toc_html += "<li><a href=\"##{header[:id]}\">#{header[:text]}</a><ul>"
308
- stack.push(level)
309
- else
310
- toc_html += "<li><a href=\"##{header[:id]}\">#{header[:text]}</a></li>"
311
- end
312
- end
313
-
314
- # Close all remaining lists
315
- while !stack.empty?
316
- toc_html += '</ul></li>'
317
- stack.pop
318
- end
319
-
320
- toc_html += '</ul>'
321
- toc_html += '</nav>'
322
- toc_html
323
- end
324
-
325
- def inject_toc_into_html(html_content, main_toc_html, page_toc_html)
326
- # Load shared CSS
327
- shared_css_file = File.join(SCRIPT_DIR, 'shared_styles.css')
328
- shared_css = File.exist?(shared_css_file) ? File.read(shared_css_file) : ''
329
- toc_css = "<style>\n#{shared_css}\n</style>"
330
-
331
- # Inject CSS into head (Rouge CSS is included in shared_styles.css)
332
- combined_css = toc_css
333
- if html_content =~ /(<\/head>)/i
334
- html_content = html_content.sub(/(<\/head>)/i, "#{combined_css}\\1")
335
- elsif html_content =~ /(<\/style>)/i
336
- html_content = html_content.sub(/(<\/style>)/i, "\\1\n#{combined_css}")
337
- end
338
-
339
- # Inject hamburger menu and mobile overlay
340
- hamburger_html = <<~HTML
341
- <button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
342
- <div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
343
- HTML
344
-
345
- # Inject main TOC into body (left sidebar)
346
- if html_content =~ /(<body[^>]*>)/i
347
- html_content = html_content.sub(/(<body[^>]*>)/i, "\\1\n#{hamburger_html}\n#{main_toc_html}")
348
- else
349
- puts "Warning: Could not find <body> tag to inject main TOC"
350
- end
351
-
352
- # Inject page TOC at top of content (after first h1, or at start of body if no h1)
353
- # Handle multi-line h1 tags (from pretty printing)
354
- # Add ID to page TOC for scroll detection
355
- unless page_toc_html.empty?
356
- page_toc_with_id = page_toc_html.sub(/<nav class="page-toc">/, '<nav class="page-toc" id="page-toc-top">')
357
-
358
- if html_content =~ /<h1[^>]*>[\s\S]*?<\/h1>/i
359
- html_content = html_content.sub(/(<h1[^>]*>[\s\S]*?<\/h1>)/i, "\\1\n#{page_toc_with_id}")
360
- elsif html_content =~ /(<body[^>]*>)/i
361
- # If no h1, inject TOC right after body tag
362
- html_content = html_content.sub(/(<body[^>]*>)/i, "\\1\n#{page_toc_with_id}")
363
- else
364
- puts "Warning: Could not find <h1> or <body> tag to inject page TOC"
365
- end
366
- end
367
-
368
- # Add floating TOC HTML structure
369
- floating_toc_html = <<~HTML
370
- <div class="floating-toc" id="floating-toc">
371
- <div class="floating-toc-container">
372
- <div class="floating-toc-header">
373
- <span>Table of Contents 🔻</span>
374
- </div>
375
- <div class="floating-toc-content" id="floating-toc-content">
376
- <!-- Content will be populated by JavaScript -->
377
- </div>
378
- </div>
379
- </div>
380
- HTML
381
-
382
- # Inject floating TOC after body tag
383
- if html_content =~ /(<body[^>]*>)/i
384
- html_content = html_content.sub(/(<body[^>]*>)/i, "\\1\n#{floating_toc_html}")
385
- end
386
-
387
- # Add JavaScript for floating TOC
388
- floating_toc_js = <<~JS
389
- <script>
390
- (function() {
391
- // Clone the page TOC for floating TOC
392
- function initFloatingTOC() {
393
- var pageTOC = document.getElementById('page-toc-top');
394
- var floatingTOCContent = document.getElementById('floating-toc-content');
395
- var floatingTOC = document.getElementById('floating-toc');
396
-
397
- if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
398
-
399
- // Clone the TOC structure
400
- var tocClone = pageTOC.cloneNode(true);
401
- tocClone.id = 'floating-toc-clone';
402
- floatingTOCContent.appendChild(tocClone);
403
-
404
- // Update all links to use smooth scrolling
405
- var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
406
- allTOCLinks.forEach(function(link) {
407
- link.addEventListener('click', function(e) {
408
- var href = this.getAttribute('href');
409
- if (href && href.startsWith('#')) {
410
- e.preventDefault();
411
- var targetId = href.substring(1);
412
- var targetElement = document.getElementById(targetId);
413
- if (targetElement) {
414
- var offset = 20; // Offset from top
415
-
416
- // Function to calculate absolute position from document top
417
- function getAbsoluteTop(element) {
418
- var top = 0;
419
- while (element) {
420
- top += element.offsetTop;
421
- element = element.offsetParent;
422
- }
423
- return top;
424
- }
425
-
426
- var absoluteTop = getAbsoluteTop(targetElement);
427
- var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
428
- var offsetPosition = absoluteTop - offset;
429
-
430
- // Only scroll if we're not already at the target position
431
- if (Math.abs(scrollTop - offsetPosition) > 10) {
432
- window.scrollTo({
433
- top: Math.max(0, offsetPosition),
434
- behavior: 'smooth'
435
- });
436
- }
437
-
438
- // Update URL hash without triggering scroll
439
- if (history.pushState) {
440
- history.pushState(null, null, href);
441
- }
442
- }
443
- }
444
- });
445
- });
446
-
447
- // Handle scroll to show/hide floating TOC
448
- var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
449
- var tocBottom = tocTop + pageTOC.offsetHeight;
450
-
451
- function updateFloatingTOC() {
452
- var scrollY = window.pageYOffset || document.documentElement.scrollTop;
453
-
454
- if (scrollY > tocBottom) {
455
- floatingTOC.classList.add('visible');
456
- } else {
457
- floatingTOC.classList.remove('visible');
458
- }
459
- }
460
-
461
- // Throttle scroll events
462
- var ticking = false;
463
- window.addEventListener('scroll', function() {
464
- if (!ticking) {
465
- window.requestAnimationFrame(function() {
466
- updateFloatingTOC();
467
- ticking = false;
468
- });
469
- ticking = true;
470
- }
471
- });
472
-
473
- // Initial check
474
- updateFloatingTOC();
475
- }
476
-
477
- // Initialize when DOM is ready
478
- if (document.readyState === 'loading') {
479
- document.addEventListener('DOMContentLoaded', initFloatingTOC);
480
- } else {
481
- initFloatingTOC();
482
- }
483
- })();
484
- </script>
485
- JS
486
-
487
- # Load shared JavaScript
488
- shared_js_file = File.join(SCRIPT_DIR, 'shared_scripts.js')
489
- shared_js = File.exist?(shared_js_file) ? File.read(shared_js_file) : ''
490
-
491
- # Combine shared JS and floating TOC JS
492
- combined_js = "<script>\n#{shared_js}\n</script>\n#{floating_toc_js}"
493
-
494
- # Inject JavaScript before closing body tag
495
- if html_content =~ /(<\/body>)/i
496
- html_content = html_content.sub(/(<\/body>)/i, "#{combined_js}\\1")
497
- end
498
-
499
- html_content
500
- end
501
-
502
- def parse_footer
503
- footer_file = File.join(WIKI_DIR, '_Footer.md')
504
- return '' unless File.exist?(footer_file)
505
-
506
- # Convert markdown to HTML using Apex
507
- footer_html_content = `#{APEX_BIN} "#{footer_file}" 2>/dev/null`
508
-
509
- if $?.success? && !footer_html_content.empty?
510
- footer_html = '<footer class="page-footer">'
511
- footer_html += footer_html_content.strip
512
- footer_html += '</footer>'
513
- footer_html
514
- else
515
- # Fallback: simple text conversion
516
- footer_content = File.read(footer_file)
517
- footer_html = '<footer class="page-footer">'
518
- footer_html += '<p>' + footer_content.strip.gsub(/\n/, '<br>') + '</p>'
519
- footer_html += '</footer>'
520
- footer_html
521
- end
522
- end
523
-
524
- def inject_footer_into_html(html_content, footer_html)
525
- return html_content if footer_html.empty?
526
-
527
- # Inject footer before closing body tag
528
- if html_content =~ /(<\/body>)/i
529
- html_content = html_content.sub(/(<\/body>)/i, "#{footer_html}\\1")
530
- end
531
-
532
- html_content
533
- end
534
-
535
- def fix_links_in_html(html_content, available_files)
536
- # Create a mapping of page names to HTML files
537
- file_map = {}
538
- available_files.each do |file|
539
- basename = File.basename(file, '.html')
540
- file_map[basename] = "#{basename}.html"
541
- # Also map with different cases/spaces
542
- file_map[basename.gsub('-', ' ')] = "#{basename}.html"
543
- file_map[basename.gsub('-', '_')] = "#{basename}.html"
544
- end
545
-
546
- # Fix relative links that don't have .html extension
547
- # Match href="PageName" or href="Page-Name" (but not external links, anchors, or already .html)
548
- html_content.gsub(/<a\s+([^>]*\s+)?href=["']([^"']+)["']([^>]*)>/i) do |match|
549
- attrs_before = $1 || ''
550
- href = $2
551
- attrs_after = $3 || ''
552
-
553
- # Skip if it's already an external link, anchor, or has extension
554
- if href =~ /^(https?:\/\/|mailto:|#|.*\.(html|md|pdf|png|jpg|jpeg|gif|svg|webp))/i
555
- match
556
- elsif file_map[href]
557
- # Found a matching file, add .html extension
558
- "<a #{attrs_before}href=\"#{file_map[href]}\"#{attrs_after}>"
559
- elsif file_map[href.gsub(/\s+/, '-')]
560
- # Try with spaces converted to dashes
561
- fixed_href = file_map[href.gsub(/\s+/, '-')]
562
- "<a #{attrs_before}href=\"#{fixed_href}\"#{attrs_after}>"
563
- else
564
- # Try to find a case-insensitive match
565
- found = available_files.find { |f| File.basename(f, '.html').downcase == href.downcase }
566
- if found
567
- "<a #{attrs_before}href=\"#{File.basename(found)}\"#{attrs_after}>"
568
- else
569
- match # Keep original if no match found
570
- end
571
- end
572
- end
573
- end
574
-
575
- def clone_wiki
576
- wiki_url = 'https://github.com/ApexMarkdown/apex.wiki.git'
577
- puts "Cloning wiki from GitHub..."
578
-
579
- if File.exist?(WIKI_DIR)
580
- puts "Wiki directory already exists, removing..."
581
- FileUtils.rm_rf(WIKI_DIR)
582
- end
583
-
584
- success = system("git clone #{wiki_url} \"#{WIKI_DIR}\" 2>&1")
585
- unless success
586
- puts "Error: Failed to clone wiki from #{wiki_url}"
587
- exit 1
588
- end
589
-
590
- puts "Wiki cloned successfully"
591
- end
592
-
593
- def cleanup_wiki
594
- if File.exist?(WIKI_DIR)
595
- puts "\nCleaning up wiki clone..."
596
- FileUtils.rm_rf(WIKI_DIR)
597
- puts "Wiki clone removed"
598
- end
599
- end
600
-
601
- def generate_multi_page_docset
602
- require_sqlite3 # Only needed for multi-page mode
603
-
604
- puts "Generating multi-page docset from wiki files..."
605
-
606
- # Clone wiki if needed
607
- clone_wiki unless File.exist?(WIKI_DIR)
608
-
609
- unless File.exist?(WIKI_DIR)
610
- puts "Error: Wiki directory not found at #{WIKI_DIR}"
611
- exit 1
612
- end
613
-
614
- unless File.exist?(APEX_BIN)
615
- puts "Error: Apex binary not found at #{APEX_BIN}"
616
- puts "Please build Apex first: cd build-release && make"
617
- puts "Or ensure 'apex' is in your PATH"
618
- cleanup_wiki
619
- exit 1
620
- end
621
-
622
- # Ensure output directory exists
623
- FileUtils.mkdir_p(DOCSETS_DIR)
624
-
625
- docset_name = 'Apex.docset'
626
- docset_path = File.join(DOCSETS_DIR, docset_name)
627
- contents_path = File.join(docset_path, 'Contents')
628
- resources_path = File.join(contents_path, 'Resources')
629
- documents_path = File.join(resources_path, 'Documents')
630
-
631
- # Clean up existing docset
632
- FileUtils.rm_rf(docset_path) if File.exist?(docset_path)
633
-
634
- # Create directory structure
635
- FileUtils.mkdir_p(documents_path)
636
-
637
- # Get all markdown files from wiki (excluding special files)
638
- wiki_files = Dir.glob(File.join(WIKI_DIR, '*.md')).reject do |f|
639
- basename = File.basename(f)
640
- basename =~ /^(_|\.)/ || basename == 'commit_message.txt'
641
- end.sort
642
-
643
- # Ensure Home.md is first (it's the index file)
644
- home_file = wiki_files.find { |f| File.basename(f) == 'Home.md' }
645
- if home_file
646
- wiki_files.delete(home_file)
647
- wiki_files.unshift(home_file)
648
- end
649
-
650
- puts "Found #{wiki_files.length} wiki files to process..."
651
-
652
- # Process each wiki file - first pass: convert to HTML
653
- html_files = []
654
- wiki_files.each do |md_file|
655
- basename = File.basename(md_file, '.md')
656
- html_file = File.join(documents_path, "#{basename}.html")
657
- html_files << html_file
658
-
659
- puts "Processing #{basename}..."
660
-
661
- # Convert markdown to HTML using Apex
662
- html_content = `#{APEX_BIN} "#{md_file}" --standalone --pretty 2>/dev/null`
663
-
664
- if $?.success? && !html_content.empty?
665
- # Write HTML file (will fix links in second pass)
666
- File.write(html_file, html_content)
667
- else
668
- puts " Warning: Failed to process #{basename}"
669
- end
670
- end
671
-
672
- # Generate main TOC from sidebar
673
- puts "\nGenerating main TOC from sidebar..."
674
- main_toc_html = parse_sidebar_toc
675
- puts "Main TOC generated (#{main_toc_html.length} chars)"
676
- if main_toc_html.length < 100
677
- puts "Warning: TOC seems too short, checking..."
678
- puts "First 200 chars: #{main_toc_html[0..200]}"
679
- end
680
-
681
- # Generate footer
682
- puts "Generating footer..."
683
- footer_html = parse_footer
684
- puts "Footer generated (#{footer_html.length} chars)"
685
-
686
- # Second pass: fix links in all HTML files and add TOCs
687
- puts "Fixing links and adding TOCs..."
688
- entries = []
689
- all_guides = [] # Collect all guide entries for TOC
690
-
691
- html_files.each do |html_file|
692
- next unless File.exist?(html_file)
693
-
694
- basename = File.basename(html_file, '.html')
695
- html_content = File.read(html_file)
696
-
697
- # Fix links to add .html extensions
698
- html_content = fix_links_in_html(html_content, html_files.map { |f| File.basename(f) })
699
-
700
- # Extract title from first h1 or use filename
701
- title_match = html_content.match(/<h1[^>]*>(.*?)<\/h1>/i)
702
- title = title_match ? title_match[1].gsub(/<[^>]+>/, '').strip : basename
703
-
704
- # Collect guide info for TOC
705
- all_guides << { basename: basename, title: title, path: "#{basename}.html" }
706
-
707
- # Extract headers for index and TOC
708
- headers = extract_headers(html_content)
709
-
710
- # Generate TOC for this page
711
- page_toc_html = generate_page_toc(headers)
712
- if page_toc_html.empty?
713
- puts " No page TOC for #{basename} (no headers found)"
714
- else
715
- puts " Generated page TOC for #{basename} (#{headers.length} headers)"
716
- end
717
-
718
- # Highlight code blocks before injecting TOC
719
- html_content = highlight_code_blocks(html_content)
720
-
721
- # Inject both TOCs and footer into HTML
722
- html_content = inject_toc_into_html(html_content, main_toc_html, page_toc_html)
723
- html_content = inject_footer_into_html(html_content, footer_html)
724
-
725
- # Write updated HTML file with TOCs and footer
726
- File.write(html_file, html_content)
727
-
728
- # Add main entry
729
- entries << {
730
- name: title,
731
- type: 'Guide',
732
- path: "#{basename}.html"
733
- }
734
-
735
- # Add header entries
736
- headers.each do |header|
737
- entries << {
738
- name: header[:text],
739
- type: 'Section',
740
- path: "#{basename}.html##{header[:id]}"
741
- }
742
- end
743
- end
744
-
745
- # Add table of contents to Home.html for Dash index
746
- home_html_file = html_files.find { |f| File.basename(f, '.html') == 'Home' }
747
- if home_html_file && File.exist?(home_html_file)
748
- puts "Adding table of contents to index page..."
749
- html_content = File.read(home_html_file)
750
-
751
- # Generate TOC HTML
752
- toc_html = "<nav class=\"dash-toc\">\n<h2>Documentation</h2>\n<ul>\n"
753
- all_guides.each do |guide|
754
- toc_html += " <li><a href=\"#{guide[:path]}\">#{guide[:title]}</a></li>\n"
755
- end
756
- toc_html += "</ul>\n</nav>\n"
757
-
758
- # Insert TOC after the first h1 or at the beginning of body
759
- if html_content =~ /(<h1[^>]*>.*?<\/h1>)/i
760
- html_content = html_content.sub(/(<h1[^>]*>.*?<\/h1>)/i, "\\1\n#{toc_html}")
761
- elsif html_content =~ /(<body[^>]*>)/i
762
- html_content = html_content.sub(/(<body[^>]*>)/i, "\\1\n#{toc_html}")
763
- end
764
-
765
- File.write(home_html_file, html_content)
766
- end
767
-
768
- # Determine index file
769
- index_file = if entries.any? { |e| e[:path] == 'Home.html' }
770
- 'Home.html'
771
- elsif entries.first
772
- entries.first[:path]
773
- else
774
- 'index.html'
775
- end
776
-
777
- # Create Info.plist
778
- info_plist = <<~PLIST
779
- <?xml version="1.0" encoding="UTF-8"?>
780
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
781
- <plist version="1.0">
782
- <dict>
783
- <key>CFBundleIdentifier</key>
784
- <string>apex</string>
785
- <key>CFBundleName</key>
786
- <string>Apex</string>
787
- <key>DocSetPlatformFamily</key>
788
- <string>apex</string>
789
- <key>isDashDocset</key>
790
- <true/>
791
- <key>dashIndexFilePath</key>
792
- <string>#{index_file}</string>
793
- <key>DashDocSetFamily</key>
794
- <string>dashtoc</string>
795
- <key>DashDocSetPluginKeyword</key>
796
- <string>apex</string>
797
- <key>DashDocSetFallbackURL</key>
798
- <string>#{index_file}</string>
799
- <key>DashDocSetDeclaredInStyle</key>
800
- <string>originalName</string>
801
- </dict>
802
- </plist>
803
- PLIST
804
-
805
- File.write(File.join(contents_path, 'Info.plist'), info_plist)
806
-
807
- # Create SQLite index
808
- db_path = File.join(resources_path, 'docSet.dsidx')
809
- # Open database with busy timeout and retry logic
810
- db = nil
811
- max_retries = 5
812
- retry_count = 0
813
-
814
- begin
815
- db = SQLite3::Database.new(db_path)
816
- db.busy_timeout = 5000 # Wait up to 5 seconds for database to be available
817
-
818
- db.execute <<~SQL
819
- CREATE TABLE IF NOT EXISTS searchIndex(
820
- id INTEGER PRIMARY KEY AUTOINCREMENT,
821
- name TEXT,
822
- type TEXT,
823
- path TEXT
824
- );
825
- CREATE UNIQUE INDEX IF NOT EXISTS anchor ON searchIndex(name, type, path);
826
- SQL
827
-
828
- # Clear existing entries if regenerating
829
- db.execute("DELETE FROM searchIndex")
830
-
831
- # Use a transaction for better performance and atomicity
832
- db.transaction do
833
- entries.each do |entry|
834
- db.execute(
835
- "INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES(?, ?, ?)",
836
- [entry[:name], entry[:type], entry[:path]]
837
- )
838
- end
839
- end
840
- rescue SQLite3::BusyException => e
841
- retry_count += 1
842
- if retry_count < max_retries
843
- puts "Database busy, retrying (#{retry_count}/#{max_retries})..."
844
- sleep(0.5 * retry_count) # Exponential backoff
845
- db.close if db
846
- retry
847
- else
848
- puts "\nError: Database is locked after #{max_retries} retries."
849
- puts "Please close Dash if it's open with this docset, then try again."
850
- raise
851
- end
852
- ensure
853
- db.close if db
854
- end
855
-
856
- puts "\nMulti-page docset generated successfully!"
857
- puts "Docset location: #{docset_path}"
858
- puts "Total entries: #{entries.length}"
859
-
860
- # Clean up wiki clone
861
- cleanup_wiki
862
- end
863
-
864
- case MODE
865
- when 'single'
866
- generate_single_page_docset
867
- when 'multi'
868
- generate_multi_page_docset
869
- else
870
- puts "Unknown mode: #{MODE}"
871
- puts "Usage: #{$0} [single|multi]"
872
- exit 1
873
- end