apex-ruby 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/apex-ruby.gemspec +14 -3
  4. data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
  5. data/ext/apex_ext/apex_src/src/apex.c +64 -5
  6. data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
  7. data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
  8. data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
  9. data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
  10. data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
  11. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
  12. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
  13. data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
  14. data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
  15. data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
  16. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
  17. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
  18. data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
  19. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +7 -0
  20. data/ext/apex_ext/extconf.rb +31 -79
  21. data/lib/apex/version.rb +1 -1
  22. metadata +1 -469
  23. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  24. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  25. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  26. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  27. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  28. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  29. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  30. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  31. data/ext/apex_ext/apex_src/Package.swift +0 -192
  32. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  33. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  34. data/ext/apex_ext/apex_src/README.md +0 -536
  35. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  36. data/ext/apex_ext/apex_src/VERSION +0 -1
  37. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  38. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  39. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  40. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  41. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  42. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  43. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  44. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  45. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  46. data/ext/apex_ext/apex_src/debug.log +0 -7
  47. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  48. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  49. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  52. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  53. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  54. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  55. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  57. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  58. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  59. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  60. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  61. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  62. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  63. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  64. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  65. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  66. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  67. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  68. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  69. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  70. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  71. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  74. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  77. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  78. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  79. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  88. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  138. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  139. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  140. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  141. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  142. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  143. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  144. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  146. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  147. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  148. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  149. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  150. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  151. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  152. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  153. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  155. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  159. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  160. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  161. data/ext/apex_ext/apex_src/ial.html +0 -24
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  169. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  170. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  171. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  173. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  174. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  175. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  176. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  177. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  178. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  179. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  181. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  183. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  184. data/ext/apex_ext/apex_src/output.html +0 -87
  185. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  186. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  187. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  188. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  189. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  190. data/ext/apex_ext/apex_src/test.html +0 -103
  191. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  192. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  193. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  194. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  195. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  196. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  197. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  198. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  199. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  200. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  201. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  202. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  206. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  207. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  213. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  214. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  216. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  221. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  222. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  235. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  236. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  249. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  250. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  254. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  255. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  256. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  261. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  262. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  263. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  272. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  273. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  280. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  281. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  282. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  283. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  284. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  285. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  286. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  287. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  288. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  289. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  290. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  291. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  292. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  293. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  294. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  295. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  296. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  297. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  298. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  299. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  300. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  301. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  302. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  303. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  304. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  305. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  306. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  307. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  308. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  309. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  310. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  311. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  312. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  313. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  314. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  315. data/ext/apex_ext/apex_src/tests.rb +0 -39
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +0 -38
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
  409. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
  410. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
  411. data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
  412. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
  413. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
  414. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
  415. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
  416. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
  417. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
  418. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
  419. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
  420. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
  421. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
  422. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
  423. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
  424. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
  425. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
  426. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
  427. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
  428. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
  429. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
  430. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
  431. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
  432. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
  433. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
  434. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
  435. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
  436. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
  437. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
  438. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
  439. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
  440. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
  441. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
  442. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
  443. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
  444. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
  445. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
  446. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
  447. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
  448. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
  449. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
  450. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
  451. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
  452. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
  453. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
  454. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
  455. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
  456. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
  457. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
  458. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
  459. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
  460. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
  461. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
  462. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
  463. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
  464. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
  465. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
  466. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
  467. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
  468. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
  469. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
  470. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
  471. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  472. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
  473. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
  474. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
  475. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  476. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  477. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
  478. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
  479. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
  480. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
  481. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
  482. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
  483. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  484. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
  485. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
  486. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
  487. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
  488. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
  489. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
  490. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
@@ -1,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