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,2041 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
-
6
- <meta charset="UTF-8">
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
- <meta name="generator" content="Apex 1.1.12">
9
- <title>Document</title>
10
- <style>
11
- /* GitHub-style syntax highlighting for Pygments and Skylighting */
12
- /* Don't apply background to wrapper when code highlighting is enabled - let default styles handle it */
13
- .code-highlighted .highlight, .code-highlighted .sourceCode { background: inherit; border-radius: 6px; padding: 16px; overflow-x: auto; }
14
- .highlight pre, .sourceCode pre { margin: 0; padding: 0; background: transparent; }
15
- .highlight code, .sourceCode code { font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; line-height: 1.45; }
16
- /* Pygments classes */
17
- .highlight .k { color: #d73a49; font-weight: 600; } /* Keyword */
18
- .highlight .kt { color: #d73a49; } /* Keyword.Type */
19
- .highlight .kd { color: #d73a49; font-weight: 600; } /* Keyword.Declaration */
20
- .highlight .kn { color: #d73a49; } /* Keyword.Namespace */
21
- .highlight .kp { color: #d73a49; } /* Keyword.Pseudo */
22
- .highlight .kr { color: #d73a49; font-weight: 600; } /* Keyword.Reserved */
23
- .highlight .n { color: #6f42c1; } /* Name */
24
- .highlight .na { color: #6f42c1; } /* Name.Attribute */
25
- .highlight .nc { color: #6f42c1; font-weight: 600; } /* Name.Class */
26
- .highlight .no { color: #005cc5; } /* Name.Constant */
27
- .highlight .nd { color: #6f42c1; font-weight: 600; } /* Name.Decorator */
28
- .highlight .ni { color: #800080; } /* Name.Entity */
29
- .highlight .ne { color: #990000; font-weight: 600; } /* Name.Exception */
30
- .highlight .nf { color: #6f42c1; font-weight: 600; } /* Name.Function */
31
- .highlight .nl { color: #6f42c1; } /* Name.Label */
32
- .highlight .nn { color: #555; } /* Name.Namespace */
33
- .highlight .nt { color: #22863a; } /* Name.Tag */
34
- .highlight .nv { color: #e36209; } /* Name.Variable */
35
- .highlight .s { color: #032f62; } /* String */
36
- .highlight .sb { color: #032f62; } /* String.Backtick */
37
- .highlight .sc { color: #032f62; } /* String.Char */
38
- .highlight .sd { color: #032f62; } /* String.Doc */
39
- .highlight .s2 { color: #032f62; } /* String.Double */
40
- .highlight .se { color: #032f62; } /* String.Escape */
41
- .highlight .sh { color: #032f62; } /* String.Heredoc */
42
- .highlight .si { color: #032f62; } /* String.Interpol */
43
- .highlight .sx { color: #032f62; } /* String.Other */
44
- .highlight .sr { color: #032f62; } /* String.Regex */
45
- .highlight .s1 { color: #032f62; } /* String.Single */
46
- .highlight .ss { color: #032f62; } /* String.Symbol */
47
- .highlight .c { color: #6a737d; font-style: italic; } /* Comment */
48
- .highlight .c1 { color: #6a737d; font-style: italic; } /* Comment.Single */
49
- .highlight .cm { color: #6a737d; font-style: italic; } /* Comment.Multiline */
50
- .highlight .cp { color: #6a737d; font-weight: 600; } /* Comment.Preproc */
51
- .highlight .cs { color: #6a737d; font-weight: 600; font-style: italic; } /* Comment.Special */
52
- .highlight .m { color: #005cc5; } /* Literal.Number */
53
- .highlight .mb { color: #005cc5; } /* Literal.Number.Bin */
54
- .highlight .mf { color: #005cc5; } /* Literal.Number.Float */
55
- .highlight .mh { color: #005cc5; } /* Literal.Number.Hex */
56
- .highlight .mi { color: #005cc5; } /* Literal.Number.Integer */
57
- .highlight .il { color: #005cc5; } /* Literal.Number.Integer.Long */
58
- .highlight .mo { color: #005cc5; } /* Literal.Number.Oct */
59
- .highlight .o { color: #d73a49; } /* Operator */
60
- .highlight .ow { color: #d73a49; } /* Operator.Word */
61
- .highlight .p { color: #24292e; } /* Punctuation */
62
- .highlight .w { color: #e1e4e8; } /* Text.Whitespace */
63
- /* Skylighting classes */
64
- .sourceCode .kw { color: #d73a49; font-weight: 600; } /* Keyword */
65
- .sourceCode .dt { color: #6f42c1; } /* DataType */
66
- .sourceCode .dv { color: #005cc5; } /* DecVal */
67
- .sourceCode .bn { color: #005cc5; } /* BaseN */
68
- .sourceCode .fl { color: #005cc5; } /* Float */
69
- .sourceCode .ch { color: #032f62; } /* Char */
70
- .sourceCode .st { color: #032f62; } /* String */
71
- .sourceCode .co { color: #6a737d; font-style: italic; } /* Comment */
72
- .sourceCode .ot { color: #22863a; } /* Other */
73
- .sourceCode .al { color: #e36209; font-weight: 600; } /* Alert */
74
- .sourceCode .fu { color: #6f42c1; font-weight: 600; } /* Function */
75
- .sourceCode .re { color: #032f62; } /* RegionMarker */
76
- .sourceCode .er { color: #d73a49; font-weight: 600; } /* Error */
77
- .sourceCode .cf { color: #d73a49; font-weight: 600; } /* ControlFlow */
78
- .sourceCode .op { color: #d73a49; } /* Operator */
79
- .sourceCode .pp { color: #6a737d; } /* Preprocessor */
80
- .sourceCode .at { color: #005cc5; } /* Attribute */
81
- .sourceCode .do { color: #6a737d; font-style: italic; } /* Documentation */
82
- .sourceCode .an { color: #6a737d; font-weight: 600; } /* Annotation */
83
- .sourceCode .cv { color: #6a737d; font-weight: 600; font-style: italic; } /* CommentVar */
84
- .sourceCode .in { color: #6a737d; } /* Information */
85
- .sourceCode .wa { color: #e36209; font-weight: 600; } /* Warning */
86
- .sourceCode .im { color: #d73a49; } /* Import */
87
- .sourceCode .bu { color: #005cc5; } /* BuiltIn */
88
- .sourceCode .ex { color: #6f42c1; } /* Extension */
89
- .sourceCode .va { color: #e36209; } /* Variable */
90
- .sourceCode .ss { color: #032f62; } /* SpecialString */
91
- .sourceCode .sc { color: #032f62; } /* SpecialChar */
92
- .sourceCode .vs { color: #032f62; } /* VerbatimString */
93
- .sourceCode .il { color: #005cc5; } /* Special */
94
- /* Line numbers (Skylighting) */
95
- .sourceCode.numberSource .sourceCode { counter-reset: line; }
96
- .sourceCode.numberSource .sourceCode > span { position: relative; left: -4em; counter-increment: line; }
97
- .sourceCode.numberSource .sourceCode > span > a:first-child::before { content: counter(line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; min-width: 1em; padding-right: 0.5em; color: #aaa; }
98
- </style>
99
- <style>
100
- body {
101
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
102
- line-height: 1.6;
103
- max-width: 800px;
104
- margin: 2rem auto;
105
- padding: 0 1rem;
106
- color: #333;
107
- }
108
- pre { background: #f5f5f5; padding: 1rem; overflow-x: auto; }
109
- code { background: #f0f0f0; padding: 0.2em 0.4em; border-radius: 3px; }
110
- blockquote { border-left: 4px solid #ddd; margin: 0; padding-left: 1rem; color: #666; }
111
- table { border-collapse: collapse; width: 100%%; }
112
- th, td { border: 1px solid #ddd; padding: 0.5rem; }
113
- th { background: #f5f5f5; }
114
- tfoot td { background: #e8e8e8; }
115
- figure.table-figure { width: fit-content; margin: 1em 0; }
116
- figure.table-figure table { width: auto; }
117
- figcaption { text-align: center; font-weight: bold; font-size: 0.8em; }
118
- .page-break { page-break-after: always; }
119
- .callout { padding: 1rem; margin: 1rem 0; border-left: 4px solid; }
120
- .callout-note { border-color: #3b82f6; background: #eff6ff; }
121
- .callout-warning { border-color: #f59e0b; background: #fffbeb; }
122
- .callout-tip { border-color: #10b981; background: #f0fdf4; }
123
- .callout-danger { border-color: #ef4444; background: #fef2f2; }
124
- ins { background: #d4fcbc; text-decoration: none; }
125
- del { background: #fbb6c2; text-decoration: line-through; }
126
- mark { background: #fff3cd; }
127
- .smallcaps { font-variant: small-caps; }
128
- .underline { text-decoration: underline; }
129
- span.mark { background: #fff3cd; }
130
- .hidden { display: none; }
131
- .quarto-xref { font-variant: normal; }
132
- .critic.comment { background: #e7e7e7; color: #666; font-style: italic; }
133
- .mkhashtag { color: #666; }
134
- .mkstyledtag {
135
- display: inline-block;
136
- background: #e0e0e0;
137
- padding: 3px 9px;
138
- border-radius: 20px;
139
- font-size: 0.9em;
140
- line-height: 1.4;
141
- color: #333;
142
- margin: 0 2px;
143
- }
144
- </style>
145
- <meta name="paginate" content="symbols"/>
146
- <meta name="highlight-language-only" content="true"/>
147
- <meta name="code-line-numbers" content="false"/>
148
- <meta name="code-highlight" content="pygments"/>
149
- <meta name="sup-sub" content="true"/>
150
- <meta name="relaxed-tables" content="true"/>
151
- <meta name="includes" content="true"/>
152
- <meta name="autolink" content="true"/>
153
- <meta name="pretty" content="false"/>
154
- <meta name="standalone" content="false"/>
155
- <meta name="mode" content="unified"/>
156
- <meta name="markdown-in-html" content="true"/>
157
- <meta name="image-captions" content="true"/>
158
- <meta name="wikilink-extension" content="html"/>
159
- <meta name="wikilink-space" content="hyphen"/>
160
- <meta name="wikilinks" content="true"/>
161
- <meta name="widont" content="true"/>
162
- <meta name="plugins" content="true"/>
163
- <meta name="id-format" content="gfm"/>
164
-
165
- <style>
166
- :root {
167
- /* border-box width of the fixed sidebar; body offset includes a small gap */
168
- --sidebar-width: 250px;
169
- --sidebar-offset: 270px;
170
- }
171
-
172
- /* Base styles — override Apex standalone centering (max-width + margin: auto) */
173
- body {
174
- -webkit-font-smoothing: antialiased;
175
- -moz-osx-font-smoothing: grayscale;
176
- font-size: 17px;
177
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
178
- "Helvetica Neue", Arial, sans-serif;
179
- line-height: 1.65;
180
- color: #1e293b;
181
- background-color: #fff;
182
- max-width: none;
183
- width: auto;
184
- margin: 2rem 2rem 2rem var(--sidebar-offset);
185
- padding: 0 1rem;
186
- box-sizing: border-box;
187
- }
188
-
189
- /* Sidebar / Main TOC - wider on larger screens */
190
- .main-toc,
191
- .sidebar {
192
- position: fixed;
193
- left: 0;
194
- top: 0;
195
- box-sizing: border-box;
196
- width: var(--sidebar-width);
197
- min-width: var(--sidebar-width);
198
- max-width: var(--sidebar-width);
199
- height: 100vh;
200
- overflow-y: auto;
201
- background: #1e293b;
202
- color: rgba(255, 255, 255, 0.9);
203
- border-right: 2px solid rgba(255, 255, 255, 0.1);
204
- padding: 24px 20px 130px;
205
- font-size: 14px;
206
- z-index: 100;
207
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
208
- transition: transform 0.3s ease;
209
- }
210
-
211
- .main-toc ul,
212
- .sidebar ul {
213
- list-style: none;
214
- padding-left: 0;
215
- margin: 0;
216
- padding-bottom: 80px;
217
- }
218
-
219
- .main-toc ul::after,
220
- .sidebar ul::after {
221
- content: "";
222
- display: block;
223
- height: 80px;
224
- }
225
-
226
- .main-toc li,
227
- .sidebar li {
228
- margin: 0.25em 0;
229
- }
230
-
231
- .main-toc a,
232
- .sidebar a {
233
- color: rgba(255, 255, 255, 0.85);
234
- text-decoration: none;
235
- display: block;
236
- padding: 6px 12px;
237
- border-radius: 4px;
238
- transition: all 0.15s ease;
239
- white-space: nowrap;
240
- overflow: hidden;
241
- text-overflow: ellipsis;
242
- }
243
-
244
- .main-toc a:hover,
245
- .sidebar a:hover {
246
- background: #334155;
247
- color: #fff;
248
- }
249
-
250
- .sidebar a.active {
251
- color: #0ea5e9;
252
- font-weight: 500;
253
- }
254
-
255
- /* Hamburger menu button */
256
- .hamburger-menu {
257
- display: none;
258
- position: fixed;
259
- top: 12px;
260
- left: 12px;
261
- z-index: 200;
262
- background: #1e293b;
263
- border: 2px solid rgba(255, 255, 255, 0.1);
264
- border-radius: 6px;
265
- padding: 10px;
266
- cursor: pointer;
267
- color: rgba(255, 255, 255, 0.9);
268
- font-size: 20px;
269
- line-height: 1;
270
- box-sizing: border-box;
271
- width: 44px;
272
- height: 44px;
273
- align-items: center;
274
- justify-content: center;
275
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
276
- transition: all 0.2s ease;
277
- opacity: 0.2;
278
- }
279
-
280
- .hamburger-menu:hover {
281
- background: #334155;
282
- color: #fff;
283
- opacity: 1;
284
- }
285
-
286
- /* Move hamburger to the right of the sidebar when menu is open */
287
- .hamburger-menu.active {
288
- left: calc(var(--sidebar-width) + 12px);
289
- }
290
-
291
- .hamburger-menu.active {
292
- background: #0ea5e9;
293
- }
294
-
295
- .hamburger-menu::before {
296
- content: "☰";
297
- }
298
-
299
- .hamburger-menu.active::before {
300
- content: "✕";
301
- }
302
-
303
- /* Mobile menu overlay */
304
- .mobile-menu-overlay {
305
- display: none;
306
- position: fixed;
307
- top: 0;
308
- left: 0;
309
- right: 0;
310
- bottom: 0;
311
- background: rgba(0, 0, 0, 0.5);
312
- z-index: 150;
313
- opacity: 0;
314
- visibility: hidden;
315
- transition: opacity 0.3s ease, visibility 0.3s ease;
316
- }
317
-
318
- .mobile-menu-overlay.active {
319
- opacity: 1;
320
- visibility: visible;
321
- }
322
-
323
- /* Page TOC */
324
- .page-toc {
325
- background: #f9f9f9;
326
- border: 1px solid #ddd;
327
- border-radius: 4px;
328
- padding: 1rem;
329
- margin: 1.5rem 0;
330
- }
331
-
332
- .page-toc ul {
333
- list-style: none;
334
- padding-left: 0;
335
- margin: 0;
336
- }
337
-
338
- .page-toc > ul {
339
- padding-left: 0;
340
- }
341
-
342
- .page-toc li {
343
- margin: 0.25em 0;
344
- }
345
-
346
- .page-toc a {
347
- color: #0066cc;
348
- text-decoration: none;
349
- display: block;
350
- padding: 0.25em 0.5em;
351
- border-radius: 3px;
352
- }
353
-
354
- .page-toc a:hover {
355
- background: #e0e0e0;
356
- color: #004499;
357
- }
358
-
359
- .page-toc ul ul {
360
- list-style: none;
361
- padding-left: 1.5em;
362
- margin-top: 0.25em;
363
- margin-left: 0;
364
- }
365
-
366
- .page-toc ul ul ul {
367
- padding-left: 1.5em;
368
- }
369
-
370
- .page-toc ul ul a {
371
- font-size: 0.9em;
372
- color: #555;
373
- }
374
-
375
- .page-toc ul ul ul a {
376
- font-size: 0.85em;
377
- color: #666;
378
- }
379
-
380
- /* Floating TOC */
381
- .floating-toc {
382
- position: fixed;
383
- top: 0;
384
- left: var(--sidebar-offset);
385
- right: 0;
386
- z-index: 50;
387
- opacity: 0;
388
- visibility: hidden;
389
- transition: opacity 0.2s ease, visibility 0.2s ease;
390
- pointer-events: none;
391
- display: flex;
392
- justify-content: flex-end;
393
- padding-right: 2rem;
394
- }
395
-
396
- .floating-toc.visible {
397
- opacity: 1;
398
- visibility: visible;
399
- pointer-events: auto;
400
- }
401
-
402
- .floating-toc-container {
403
- background: rgba(255, 255, 255, 0.95);
404
- backdrop-filter: blur(10px);
405
- border-bottom: 1px solid #ddd;
406
- border-radius: 0 0 12px 12px;
407
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
408
- width: fit-content;
409
- max-width: 400px;
410
- min-width: 200px;
411
- overflow: hidden;
412
- transition: max-height 0.3s ease;
413
- }
414
-
415
- .floating-toc-header {
416
- padding: 8px 16px;
417
- cursor: pointer;
418
- user-select: none;
419
- font-size: 14px;
420
- font-weight: 500;
421
- color: #1e293b;
422
- display: flex;
423
- align-items: center;
424
- justify-content: space-between;
425
- }
426
-
427
- .floating-toc-header:hover {
428
- background: rgba(0, 0, 0, 0.02);
429
- }
430
-
431
- .floating-toc-content {
432
- max-height: 0;
433
- overflow: hidden;
434
- transition: max-height 0.3s ease;
435
- }
436
-
437
- .floating-toc-container:hover .floating-toc-content {
438
- max-height: 70vh;
439
- overflow-y: auto;
440
- }
441
-
442
- .floating-toc-content ul {
443
- list-style: none;
444
- padding: 8px 16px 16px;
445
- margin: 0;
446
- }
447
-
448
- .floating-toc-content li {
449
- margin: 0.1em 0;
450
- }
451
-
452
- .floating-toc-content a {
453
- color: #0066cc;
454
- text-decoration: none;
455
- display: block;
456
- padding: 0.2em 0.5em;
457
- border-radius: 4px;
458
- font-size: 13px;
459
- transition: background 0.15s ease;
460
- }
461
-
462
- .floating-toc-content a:hover {
463
- background: #e0e0e0;
464
- color: #004499;
465
- }
466
-
467
- .floating-toc-content ul ul {
468
- padding-left: 1.2em;
469
- margin-top: 0;
470
- margin-bottom: 0;
471
- }
472
-
473
- .floating-toc-content ul ul ul {
474
- margin-top: 0;
475
- margin-bottom: 0;
476
- }
477
-
478
- .floating-toc-content ul ul a {
479
- font-size: 12px;
480
- color: #555;
481
- }
482
-
483
- .floating-toc-content ul ul ul a {
484
- font-size: 11px;
485
- color: #666;
486
- }
487
-
488
- /* Smooth scrolling */
489
- html {
490
- scroll-behavior: smooth;
491
- }
492
-
493
- /* Code blocks */
494
- code {
495
- background: #f0f0f0;
496
- padding: 0.2em 0.4em;
497
- border-radius: 3px;
498
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
499
- font-size: 0.9em;
500
- margin: 0 0.1em;
501
- }
502
-
503
- pre {
504
- background: #f5f5f5;
505
- padding: 1rem;
506
- overflow-x: auto;
507
- border-radius: 4px;
508
- margin: 1em 0;
509
- }
510
-
511
- pre code {
512
- background: none;
513
- padding: 0;
514
- margin: 0;
515
- }
516
-
517
- /* Rouge syntax highlighting - GitHub theme, scoped to .highlight containers */
518
- .highlight {
519
- color: #24292e;
520
- }
521
-
522
- .highlight .c {
523
- color: #6a737d;
524
- font-style: italic;
525
- } /* Comment */
526
- .highlight .err {
527
- color: #a61717;
528
- background-color: #e3d2d2;
529
- } /* Error */
530
- .highlight .k {
531
- color: #d73a49;
532
- font-weight: bold;
533
- } /* Keyword */
534
- .highlight .l {
535
- color: #032f62;
536
- } /* Literal */
537
- .highlight .n {
538
- color: #24292e;
539
- } /* Name */
540
- .highlight .o {
541
- color: #d73a49;
542
- } /* Operator */
543
- .highlight .p {
544
- color: #24292e;
545
- } /* Punctuation */
546
- .highlight .cm {
547
- color: #6a737d;
548
- font-style: italic;
549
- } /* Comment.Multiline */
550
- .highlight .cp {
551
- color: #6a737d;
552
- font-weight: bold;
553
- } /* Comment.Preproc */
554
- .highlight .c1 {
555
- color: #6a737d;
556
- font-style: italic;
557
- } /* Comment.Single */
558
- .highlight .cs {
559
- color: #6a737d;
560
- font-weight: bold;
561
- font-style: italic;
562
- } /* Comment.Special */
563
- .highlight .gd {
564
- color: #24292e;
565
- background-color: #ffeef0;
566
- } /* Generic.Deleted */
567
- .highlight .ge {
568
- color: #24292e;
569
- font-style: italic;
570
- } /* Generic.Emph */
571
- .highlight .gr {
572
- color: #aa0000;
573
- } /* Generic.Error */
574
- .highlight .gh {
575
- color: #999999;
576
- font-weight: bold;
577
- } /* Generic.Heading */
578
- .highlight .gi {
579
- color: #24292e;
580
- background-color: #f0fff4;
581
- } /* Generic.Inserted */
582
- .highlight .go {
583
- color: #888888;
584
- } /* Generic.Output */
585
- .highlight .gp {
586
- color: #555555;
587
- } /* Generic.Prompt */
588
- .highlight .gs {
589
- font-weight: bold;
590
- } /* Generic.Strong */
591
- .highlight .gu {
592
- color: #aaaaaa;
593
- } /* Generic.Subheading */
594
- .highlight .gt {
595
- color: #aa0000;
596
- } /* Generic.Traceback */
597
- .highlight .kc {
598
- color: #d73a49;
599
- font-weight: bold;
600
- } /* Keyword.Constant */
601
- .highlight .kd {
602
- color: #d73a49;
603
- font-weight: bold;
604
- } /* Keyword.Declaration */
605
- .highlight .kn {
606
- color: #d73a49;
607
- font-weight: bold;
608
- } /* Keyword.Namespace */
609
- .highlight .kp {
610
- color: #d73a49;
611
- font-weight: bold;
612
- } /* Keyword.Pseudo */
613
- .highlight .kr {
614
- color: #d73a49;
615
- font-weight: bold;
616
- } /* Keyword.Reserved */
617
- .highlight .kt {
618
- color: #d73a49;
619
- font-weight: bold;
620
- } /* Keyword.Type */
621
- .highlight .ld {
622
- color: #032f62;
623
- } /* Literal.Date */
624
- .highlight .m {
625
- color: #005cc5;
626
- } /* Literal.Number */
627
- .highlight .s {
628
- color: #032f62;
629
- } /* Literal.String */
630
- .highlight .na {
631
- color: #6f42c1;
632
- } /* Name.Attribute */
633
- .highlight .nb {
634
- color: #005cc5;
635
- } /* Name.Builtin */
636
- .highlight .nc {
637
- color: #6f42c1;
638
- font-weight: bold;
639
- } /* Name.Class */
640
- .highlight .no {
641
- color: #005cc5;
642
- } /* Name.Constant */
643
- .highlight .nd {
644
- color: #6f42c1;
645
- font-weight: bold;
646
- } /* Name.Decorator */
647
- .highlight .ni {
648
- color: #800080;
649
- } /* Name.Entity */
650
- .highlight .ne {
651
- color: #990000;
652
- font-weight: bold;
653
- } /* Name.Exception */
654
- .highlight .nf {
655
- color: #6f42c1;
656
- } /* Name.Function */
657
- .highlight .nl {
658
- color: #990000;
659
- } /* Name.Label */
660
- .highlight .nn {
661
- color: #555555;
662
- } /* Name.Namespace */
663
- .highlight .nx {
664
- color: #6f42c1;
665
- } /* Name.Other */
666
- .highlight .py {
667
- color: #990000;
668
- } /* Name.Property */
669
- .highlight .nt {
670
- color: #22863a;
671
- } /* Name.Tag */
672
- .highlight .nv {
673
- color: #e36209;
674
- } /* Name.Variable */
675
- .highlight .ow {
676
- color: #d73a49;
677
- font-weight: bold;
678
- } /* Operator.Word */
679
- .highlight .w {
680
- color: #bbbbbb;
681
- } /* Text.Whitespace */
682
- .highlight .mf {
683
- color: #005cc5;
684
- } /* Literal.Number.Float */
685
- .highlight .mh {
686
- color: #005cc5;
687
- } /* Literal.Number.Hex */
688
- .highlight .mi {
689
- color: #005cc5;
690
- } /* Literal.Number.Integer */
691
- .highlight .mo {
692
- color: #005cc5;
693
- } /* Literal.Number.Oct */
694
- .highlight .sb {
695
- color: #032f62;
696
- } /* Literal.String.Backtick */
697
- .highlight .sc {
698
- color: #032f62;
699
- } /* Literal.String.Char */
700
- .highlight .sd {
701
- color: #032f62;
702
- } /* Literal.String.Doc */
703
- .highlight .s2 {
704
- color: #032f62;
705
- } /* Literal.String.Double */
706
- .highlight .se {
707
- color: #032f62;
708
- } /* Literal.String.Escape */
709
- .highlight .sh {
710
- color: #032f62;
711
- } /* Literal.String.Heredoc */
712
- .highlight .si {
713
- color: #032f62;
714
- } /* Literal.String.Interpol */
715
- .highlight .sx {
716
- color: #032f62;
717
- } /* Literal.String.Other */
718
- .highlight .sr {
719
- color: #22863a;
720
- } /* Literal.String.Regex */
721
- .highlight .s1 {
722
- color: #032f62;
723
- } /* Literal.String.Single */
724
- .highlight .ss {
725
- color: #032f62;
726
- } /* Literal.String.Symbol */
727
- .highlight .bp {
728
- color: #005cc5;
729
- } /* Name.Builtin.Pseudo */
730
- .highlight .vc {
731
- color: #e36209;
732
- } /* Name.Variable.Class */
733
- .highlight .vg {
734
- color: #e36209;
735
- } /* Name.Variable.Global */
736
- .highlight .vi {
737
- color: #e36209;
738
- } /* Name.Variable.Instance */
739
- .highlight .il {
740
- color: #005cc5;
741
- } /* Literal.Number.Integer.Long */
742
-
743
- /* Additional Rouge token classes that may be used */
744
- .highlight .token {
745
- color: #5670a0;
746
- }
747
- .highlight .token.list {
748
- color: #546e9f;
749
- }
750
- .highlight .token.punctuation {
751
- color: #3e8dad;
752
- }
753
- .highlight .token.list.punctuation {
754
- color: #e05b78;
755
- }
756
- .highlight .token.content {
757
- padding: 0;
758
- }
759
-
760
- /* Nested lists in page content */
761
- ul ul,
762
- ol ol,
763
- ul ol,
764
- ol ul {
765
- padding-left: 1.5em;
766
- margin-top: 0.25em;
767
- }
768
-
769
- /* Page footer */
770
- .page-footer {
771
- background: #f5f5f5;
772
- border-top: 1px solid #ddd;
773
- padding: 1.5rem;
774
- margin-top: 3rem;
775
- color: #666;
776
- font-size: 0.9em;
777
- }
778
-
779
- .page-footer p {
780
- margin: 0.5em 0;
781
- }
782
-
783
- .page-footer a {
784
- color: #0066cc;
785
- text-decoration: none;
786
- }
787
-
788
- .page-footer a:hover {
789
- text-decoration: underline;
790
- }
791
-
792
- /* Mobile responsive */
793
- @media (max-width: 768px) {
794
- .hamburger-menu {
795
- display: flex;
796
- }
797
-
798
- .main-toc,
799
- .sidebar {
800
- transform: translateX(-100%);
801
- z-index: 175;
802
- }
803
-
804
- .main-toc.mobile-open,
805
- .sidebar.mobile-open {
806
- transform: translateX(0);
807
- }
808
-
809
- body {
810
- margin: 2rem 1rem;
811
- }
812
-
813
- .floating-toc {
814
- left: 0;
815
- }
816
- }
817
-
818
- </style></head>
819
-
820
- <body class="code-highlighted">
821
- <div class="floating-toc" id="floating-toc">
822
- <div class="floating-toc-container">
823
- <div class="floating-toc-header">
824
- <span>Table of Contents 🔻</span>
825
- </div>
826
- <div class="floating-toc-content" id="floating-toc-content">
827
- <!-- Content will be populated by JavaScript -->
828
- </div>
829
- </div>
830
- </div>
831
-
832
- <button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
833
- <div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
834
-
835
- <nav class="main-toc"><ul><li><a href="Home.html">Home</a></li><li><a href="Getting-Started.html">Getting Started</a></li><li><a href="Installation.html">Installation</a></li><li><a href="Usage.html">Usage</a></li><li><a href="Syntax.html">Syntax</a></li><li><a href="Callouts.html">Callouts</a></li><li><a href="Tables.html">Tables</a></li><li><a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a></li><li><a href="Modes.html">Modes</a></li><li><a href="Quarto-Mode.html">Quarto Mode</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Rendering-Markdown-In-Terminal.html">Rendering Markdown in the Terminal</a></li><li><a href="Generating-Man-Pages.html">Generating Man Pages</a></li><li><a href="Multi-File-Documents.html">Multi-file Documents</a></li><li><a href="Citations.html">Citations</a></li><li><a href="Indices.html">Indices</a></li><li><a href="Metadata-Transforms.html">Metadata Transforms</a></li><li><a href="Pandoc-Integration.html">Integrating with Pandoc</a></li><li><a href="Using-Apex-with-Jekyll.html">Using Apex with Jekyll</a></li><li><a href="Header-IDs.html">Header IDs</a></li><li><a href="C-API.html">C API</a></li><li><a href="Writing-Tests.html">Writing Tests</a></li><li><a href="Xcode-Integration.html">Xcode Integration</a></li><li><a href="Examples.html">Examples</a></li><li><a href="Plugins.html">Plugins</a></li><li><a href="Filters.html">Filters</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
836
-
837
- <h1 id="inline-attribute-lists-ials-and-attribute-list-definitions-alds">
838
- Inline Attribute Lists (IALs) and Attribute List Definitions&nbsp;(ALDs)
839
- </h1>
840
- <nav class="page-toc" id="page-toc-top"><ul><li><a href="#inline-attribute-lists-ials-and-attribute-list-definitions-alds">Inline Attribute Lists (IALs) and Attribute List Definitions&nbsp;(ALDs)</a><ul><li><a href="#overview">Overview</a></li><li><a href="#block-level-ials">Block-Level&nbsp;IALs</a><ul><li><a href="#paragraphs">Paragraphs</a></li><li><a href="#headings">Headings</a></li><li><a href="#lists">Lists</a></li><li><a href="#blockquotes">Blockquotes</a></li><li><a href="#tables">Tables</a></li></ul></li><li><a href="#inline-ials">Inline&nbsp;IALs</a><ul><li><a href="#links">Links</a></li><li><a href="#images">Images</a></li><li><a href="#multimarkdown-style-image-attributes">MultiMarkdown-style image&nbsp;attributes</a><ul><li><a href="#inline-images">Inline&nbsp;images</a></li><li><a href="#reference-style-images">Reference-style&nbsp;images</a></li></ul></li><li><a href="#bear-image-attribute-comments">Bear image attribute&nbsp;comments</a><ul><li><a href="#reference-images">Reference&nbsp;images</a></li><li><a href="#supported-values-and-safety">Supported values&nbsp;and&nbsp;safety</a></li><li><a href="#url-handling-and-attributes">URL handling and&nbsp;attributes</a></li><li><a href="#width-and-height-handling">Width and height&nbsp;handling</a></li></ul></li><li><a href="#emphasis-and-strong">Emphasis&nbsp;and&nbsp;Strong</a></li><li><a href="#code-spans">Code&nbsp;Spans</a></li></ul></li><li><a href="#attribute-syntax">Attribute&nbsp;Syntax</a><ul><li><a href="#1-ids">1.&nbsp;IDs</a></li><li><a href="#2-classes">2.&nbsp;Classes</a></li><li><a href="#3-key-value-pairs">3. Key-Value&nbsp;Pairs</a></li><li><a href="#combining-attributes">Combining&nbsp;Attributes</a></li></ul></li><li><a href="#attribute-list-definitions-alds">Attribute List Definitions&nbsp;(ALDs)</a><ul><li><a href="#defining-alds">Defining&nbsp;ALDs</a></li><li><a href="#ald-syntax">ALD&nbsp;Syntax</a></li><li><a href="#referencing-alds">Referencing&nbsp;ALDs</a></li><li><a href="#mixed-usage">Mixed&nbsp;Usage</a></li></ul></li><li><a href="#important-notes">Important&nbsp;Notes</a><ul><li><a href="#block-level-ial-positioning">Block-Level IAL&nbsp;Positioning</a></li><li><a href="#inline-ial-positioning">Inline IAL&nbsp;Positioning</a></li><li><a href="#multiple-elements-with-same-attributes">Multiple Elements with Same&nbsp;Attributes</a></li><li><a href="#nested-elements">Nested&nbsp;Elements</a></li></ul></li><li><a href="#examples">Examples</a><ul><li><a href="#complete-example">Complete&nbsp;Example</a></li><li><a href="#using-alds-for-consistent-styling">Using ALDs for Consistent&nbsp;Styling</a></li></ul></li><li><a href="#related">Related</a></li></ul></li></ul></nav>
841
-
842
- <p>
843
- Inline Attribute Lists (IALs) allow you to add HTML attributes (IDs, classes, and custom key-value pairs) to Markdown elements. Attribute List Definitions (ALDs) let you define reusable attribute sets that can be referenced multiple times.
844
- This feature is available in <strong>Kramdown</strong> and <strong>unified</strong> modes.
845
- </p>
846
-
847
- <h2 id="overview">
848
- Overview
849
- </h2>
850
-
851
- <p>
852
- IALs use the syntax <code>{: attributes}</code> (Kramdown-style) or <code>{#id .class}</code> (Pandoc-style) and can be applied to:
853
- </p>
854
-
855
- <ul>
856
-
857
- <li>
858
- <strong>Block-level elements</strong>: Headings, paragraphs, lists, blockquotes, code blocks, tables
859
- </li>
860
-
861
- <li>
862
- <strong>Span-level elements</strong>: Links, images, emphasis (italic), strong (bold), code spans
863
- Apex supports both formats:
864
- </li>
865
-
866
- <li>
867
- <strong>Kramdown-style</strong>: <code>{: #id .class key=&quot;value&quot;}</code> - requires a colon after the opening brace
868
- </li>
869
-
870
- <li>
871
- <strong>Pandoc-style</strong>: <code>{#id .class key=&quot;value&quot;}</code> - no colon required
872
- Both formats work identically. For example, <code>{#my-id .my-class}</code> is equivalent to <code>{:#my-id .my-class}</code>.
873
- ALDs define reusable attribute sets with the syntax <code>{<span class=\"emoji\">:ref-name:</span> attributes}</code> and can be referenced in IALs using <code>{:ref-name}</code>.
874
- </li>
875
-
876
- </ul>
877
-
878
- <h2 id="block-level-ials">
879
- Block-Level&nbsp;IALs
880
- </h2>
881
-
882
- <p>
883
- For block-level elements, IALs appear on a separate line immediately after the element (no blank line).
884
- </p>
885
-
886
- <h3 id="paragraphs">
887
- Paragraphs
888
- </h3>
889
-
890
- <div class="highlight">
891
- <pre><span></span>This is a paragraph with an ID and classes.
892
-
893
- {: <span class="ni">#para</span>-id .important .note}
894
-
895
- This is a paragraph using Pandoc-style IAL.
896
-
897
- {#para-id-2 .important .note}
898
-
899
- Another paragraph with custom attributes.
900
-
901
- {: title=&quot;Important Note&quot; lang=&quot;en&quot;}
902
- </pre>
903
- </div>
904
-
905
- <p>
906
- Output:
907
- </p>
908
-
909
- <div class="highlight">
910
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;para-id&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;important note&quot;</span><span class="p">&gt;</span>This is a paragraph with an ID and classes.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
911
- <span class="p">&lt;</span><span class="nt">p</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;para-id-2&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;important note&quot;</span><span class="p">&gt;</span>This is a paragraph using Pandoc-style IAL.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
912
- <span class="p">&lt;</span><span class="nt">p</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Important Note&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Another paragraph with custom attributes.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
913
- </pre>
914
- </div>
915
-
916
- <h3 id="headings">
917
- Headings
918
- </h3>
919
-
920
- <p>
921
- Headings can have IALs on the same line or the next line:
922
- <strong>Same line:</strong>
923
- </p>
924
-
925
- <div class="highlight">
926
- <pre><span></span><span class="gh"># Heading {: #custom-id}</span>
927
- <span class="gu">## Another Heading {: .highlight .large}</span>
928
- <span class="gu">## Pandoc-style Heading {#pandoc-id .highlight}</span>
929
- </pre>
930
- </div>
931
-
932
- <p>
933
- <strong>Next line:</strong>
934
- </p>
935
-
936
- <div class="highlight">
937
- <pre><span></span><span class="gh"># Heading</span>
938
-
939
- {: <span class="ni">#custom</span>-id .highlight}
940
-
941
- <span class="gh"># Pandoc-style Heading</span>
942
-
943
- {#pandoc-id-2 .highlight}
944
-
945
- <span class="gu">## Another Heading</span>
946
-
947
- {: .section-title lang=&quot;en&quot;}
948
- </pre>
949
- </div>
950
-
951
- <p>
952
- Output:
953
- </p>
954
-
955
- <div class="highlight">
956
- <pre><span></span><span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;custom-id&quot;</span><span class="p">&gt;</span>Heading<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
957
- <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;highlight large&quot;</span><span class="p">&gt;</span>Another Heading<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
958
- <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;pandoc-id&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;highlight&quot;</span><span class="p">&gt;</span>Pandoc-style Heading<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
959
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;custom-id&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;highlight&quot;</span><span class="p">&gt;</span>Heading<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
960
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;pandoc-id-2&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;highlight&quot;</span><span class="p">&gt;</span>Pandoc-style Heading<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
961
- <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;section-title&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Another Heading<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
962
- </pre>
963
- </div>
964
-
965
- <h3 id="lists">
966
- Lists
967
- </h3>
968
-
969
- <div class="highlight">
970
- <pre><span></span><span class="k">-</span><span class="w"> </span>Item 1
971
- <span class="k">-</span><span class="w"> </span>Item 2
972
- <span class="k">-</span><span class="w"> </span>Item 3
973
-
974
- {: .unordered-list .compact}
975
-
976
- <span class="k">1.</span> First
977
- <span class="k">2.</span> Second
978
- <span class="k">3.</span> Third
979
-
980
- {: <span class="ni">#ordered</span>-list .numbered}
981
- </pre>
982
- </div>
983
-
984
- <p>
985
- Output:
986
- </p>
987
-
988
- <div class="highlight">
989
- <pre><span></span><span class="p">&lt;</span><span class="nt">ul</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;unordered-list compact&quot;</span><span class="p">&gt;</span>
990
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>Item 1<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
991
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>Item 2<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
992
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>Item 3<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
993
- <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span>
994
- <span class="p">&lt;</span><span class="nt">ol</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;ordered-list&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;numbered&quot;</span><span class="p">&gt;</span>
995
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>First<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
996
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>Second<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
997
- <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>Third<span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
998
- <span class="p">&lt;/</span><span class="nt">ol</span><span class="p">&gt;</span>
999
- </pre>
1000
- </div>
1001
-
1002
- <h3 id="blockquotes">
1003
- Blockquotes
1004
- </h3>
1005
-
1006
- <div class="highlight">
1007
- <pre><span></span><span class="k">&gt; </span><span class="ge">This is a quote.</span>
1008
-
1009
- {: .quote .inspirational}
1010
-
1011
- <span class="k">&gt; </span><span class="ge">Another quote with attribution.</span>
1012
- </pre>
1013
- </div>
1014
-
1015
- <p>
1016
- Output:
1017
- </p>
1018
-
1019
- <div class="highlight">
1020
- <pre><span></span><span class="p">&lt;</span><span class="nt">blockquote</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;quote inspirational&quot;</span><span class="p">&gt;</span>
1021
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>This is a quote.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1022
- <span class="p">&lt;/</span><span class="nt">blockquote</span><span class="p">&gt;</span>
1023
- <span class="p">&lt;</span><span class="nt">blockquote</span> <span class="na">cite</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span><span class="p">&gt;</span>
1024
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Another quote with attribution.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1025
- <span class="p">&lt;/</span><span class="nt">blockquote</span><span class="p">&gt;</span>
1026
- </pre>
1027
- </div>
1028
-
1029
- <h3 id="tables">
1030
- Tables
1031
- </h3>
1032
-
1033
- <p>
1034
- Tables can have IALs applied on a separate line after the table:
1035
- </p>
1036
-
1037
- <div class="highlight">
1038
- <pre><span></span>| Key | Value |
1039
- | --- | <span class=\"emoji\">:---:</span> |
1040
- | one | 1 |
1041
- | two | 2 |
1042
-
1043
- {: <span class="ni">#data</span>-table .striped .bordered}
1044
- </pre>
1045
- </div>
1046
-
1047
- <p>
1048
- Output:
1049
- </p>
1050
-
1051
- <div class="highlight">
1052
- <pre><span></span><span class="p">&lt;</span><span class="nt">table</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;data-table&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;striped bordered&quot;</span><span class="p">&gt;</span>
1053
- <span class="cm">&lt;!-- table content --&gt;</span>
1054
- <span class="p">&lt;/</span><span class="nt">table</span><span class="p">&gt;</span>
1055
- </pre>
1056
- </div>
1057
-
1058
- <p>
1059
- <strong>Pandoc table_attributes extension:</strong>
1060
- Apex also supports Pandoc’s <code>table_attributes</code> extension, which allows IAL attributes to be specified in table captions. When using Pandoc-style captions with the <code>: Caption</code> syntax, IAL attributes in the caption are extracted and applied to the table:
1061
- </p>
1062
-
1063
- <div class="highlight">
1064
- <pre><span></span>| Key | Value |
1065
- | --- | <span class=\"emoji\">:---:</span> |
1066
- | one | 1 |
1067
- | two | 2 |
1068
-
1069
- : Key value table {#table-id .testing key=&quot;value&quot;}
1070
- </pre>
1071
- </div>
1072
-
1073
- <p>
1074
- This is equivalent to:
1075
- </p>
1076
-
1077
- <div class="highlight">
1078
- <pre><span></span>| Key | Value |
1079
- | --- | <span class=\"emoji\">:---:</span> |
1080
- | one | 1 |
1081
- | two | 2 |
1082
-
1083
- {: <span class="ni">#table</span>-id .testing key=&quot;value&quot;}
1084
- </pre>
1085
- </div>
1086
-
1087
- <p>
1088
- Both Kramdown-style IALs (<code>{: #id .class}</code>) and Pandoc-style IALs without the colon (<code>{#id .class}</code>) are supported in table captions.
1089
- <strong>Note:</strong> The <code>: Caption</code> syntax only works when adjacent to a table to avoid conflicts with definition list syntax. See <a href="Syntax.html">Syntax</a> for more details on table captions.
1090
- </p>
1091
-
1092
- <h2 id="inline-ials">
1093
- Inline&nbsp;IALs
1094
- </h2>
1095
-
1096
- <p>
1097
- Inline IALs appear immediately after the element they apply to, within the same paragraph.
1098
- </p>
1099
-
1100
- <h3 id="links">
1101
- Links
1102
- </h3>
1103
-
1104
- <div class="highlight">
1105
- <pre><span></span>This is a [<span class="nt">regular link</span>](<span class="na">https://example.com</span>) without attributes.
1106
-
1107
- Here&#39;s a [<span class="nt">styled link</span>](<span class="na">https://example.com</span>){:.button} with a button class.
1108
-
1109
- Here&#39;s a [<span class="nt">Pandoc-style link</span>](<span class="na">https://example.com</span>){#link-id .button} with attributes.
1110
-
1111
- You can have [<span class="nt">multiple links</span>](<span class="na">https://example.com</span>){:.link-primary} with [<span class="nt">different classes</span>](<span class="na">https://example.com</span>){:.link-secondary} in the same paragraph.
1112
-
1113
- A link with [<span class="nt">custom attributes</span>](<span class="na">https://example.com</span>){:rel=&quot;nofollow&quot; title=&quot;External Link&quot;}.
1114
- </pre>
1115
- </div>
1116
-
1117
- <p>
1118
- Output:
1119
- </p>
1120
-
1121
- <div class="highlight">
1122
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>This is a <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span><span class="p">&gt;</span>regular link<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> without attributes.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1123
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Here&#39;s a <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;button&quot;</span><span class="p">&gt;</span>styled link<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> with a button class.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1124
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Here&#39;s a <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;link-id&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;button&quot;</span><span class="p">&gt;</span>Pandoc-style link<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> with attributes.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1125
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>You can have <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;link-primary&quot;</span><span class="p">&gt;</span>multiple links<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> with <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;link-secondary&quot;</span><span class="p">&gt;</span>different classes<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> in the same paragraph.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1126
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>A link with <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;nofollow&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;External Link&quot;</span><span class="p">&gt;</span>custom attributes<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1127
- </pre>
1128
- </div>
1129
-
1130
- <h3 id="images">
1131
- Images
1132
- </h3>
1133
-
1134
- <div class="highlight">
1135
- <pre><span></span>![<span class="nt">Regular image</span>](<span class="na">image.png</span>)
1136
-
1137
- ![<span class="nt">Styled image</span>](<span class="na">logo.png</span>)
1138
-
1139
- ![<span class="nt">Image with ID</span>](<span class="na">icon.png</span>)
1140
-
1141
- ![<span class="nt">Image with title</span>](<span class="na">photo.jpg</span>)
1142
- </pre>
1143
- </div>
1144
-
1145
- <p>
1146
- Output:
1147
- </p>
1148
-
1149
- <div class="highlight">
1150
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;image.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Regular image&quot;</span> <span class="p">/&gt;&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1151
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;logo.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Styled image&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;logo centered&quot;</span> <span class="p">/&gt;&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1152
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;icon.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Image with ID&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;site-icon&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;icon&quot;</span> <span class="p">/&gt;&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1153
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;photo.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Image with title&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Photo Title&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Photo description&quot;</span> <span class="p">/&gt;&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1154
- </pre>
1155
- </div>
1156
-
1157
- <h3 id="multimarkdown-style-image-attributes">
1158
- MultiMarkdown-style image&nbsp;attributes
1159
- </h3>
1160
-
1161
- <p>
1162
- In <strong>MultiMarkdown</strong> and <strong>unified</strong> modes, Apex also understands
1163
- MultiMarkdown-style attributes on images, both inline and reference-style.
1164
- These attributes are parsed before the Markdown is sent to the core parser and
1165
- are applied to the resulting <code>&lt;img&gt;</code> element in the same way as IALs.
1166
- </p>
1167
-
1168
- <h4 id="inline-images">
1169
- Inline&nbsp;images
1170
- </h4>
1171
-
1172
- <p>
1173
- You can place attributes directly inside the image parentheses:
1174
- </p>
1175
-
1176
- <div class="highlight">
1177
- <pre><span></span>![<span class="nt">Inline no title</span>](<span class="na">/images/test-inline-1.jpg </span>)
1178
-
1179
- ![<span class="nt">Inline with title</span>](<span class="na">/images/test-inline-2.jpg </span>)
1180
-
1181
- ![<span class="nt">Inline percent</span>](<span class="na">/images/test-inline-3.jpg </span>)
1182
-
1183
- ![<span class="nt">Inline classes</span>](<span class="na">/images/test-inline-4.jpg </span>)
1184
- </pre>
1185
- </div>
1186
-
1187
- <p>
1188
- Produces HTML equivalent to:
1189
- </p>
1190
-
1191
- <div class="highlight">
1192
- <pre><span></span><span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;/images/test-inline-1.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Inline no title&quot;</span> <span class="na">width</span><span class="o">=</span><span class="s">&quot;200&quot;</span><span class="p">&gt;</span>
1193
- <span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;/images/test-inline-2.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Inline with title&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Falafel&quot;</span> <span class="na">width</span><span class="o">=</span><span class="s">&quot;300&quot;</span><span class="p">&gt;</span>
1194
- <span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;/images/test-inline-3.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Inline percent&quot;</span> <span class="na">style</span><span class="o">=</span><span class="s">&quot;width: 50%&quot;</span><span class="p">&gt;</span>
1195
- <span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;/images/test-inline-4.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Inline classes&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;center shadow&quot;</span> <span class="na">width</span><span class="o">=</span><span class="s">&quot;250&quot;</span> <span class="na">style</span><span class="o">=</span><span class="s">&quot;height: 60%&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Caption&quot;</span><span class="p">&gt;</span>
1196
- </pre>
1197
- </div>
1198
-
1199
- <h4 id="reference-style-images">
1200
- Reference-style&nbsp;images
1201
- </h4>
1202
-
1203
- <p>
1204
- The same attribute syntax works on reference definitions:
1205
- </p>
1206
-
1207
- <div class="highlight">
1208
- <pre><span></span>![<span class="nt">Ref with attrs</span>](<span class="na">/images/test-ref-1.jpg</span>)
1209
-
1210
- ![<span class="nt">Ref with title</span>](<span class="na">/images/test-ref-2.jpg</span>)
1211
-
1212
- ![<span class="nt">Ref percent</span>](<span class="na">/images/test-ref-3.jpg</span>)
1213
-
1214
- ![<span class="nt">Ref classes</span>](<span class="na">/images/test-ref-4.jpg</span>)
1215
- </pre>
1216
- </div>
1217
-
1218
- <p>
1219
- Here Apex stores the attributes on the reference definition and applies them to
1220
- every image that uses that reference, including images inside fenced divs
1221
- (::: … :::) and other HTML elements with markdown=“1”.
1222
- </p>
1223
-
1224
- <h3 id="bear-image-attribute-comments">
1225
- Bear image attribute&nbsp;comments
1226
- </h3>
1227
-
1228
- <p>
1229
- Bear stores image metadata in a JSON comment immediately after the image.
1230
- Apex reads supported values from the comment while preserving the comment in
1231
- the rendered output:
1232
- </p>
1233
-
1234
- <div class="highlight">
1235
- <pre><span></span>![](emperor-1.jpg)&lt;!-- {&quot;width&quot;:259} --&gt;
1236
- </pre>
1237
- </div>
1238
-
1239
- <p>
1240
- With raw HTML enabled:
1241
- </p>
1242
-
1243
- <div class="highlight">
1244
- <pre><span></span><span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;emperor-1.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;&quot;</span> <span class="na">width</span><span class="o">=</span><span class="s">&quot;259&quot;</span><span class="p">&gt;</span><span class="cm">&lt;!-- {&quot;width&quot;:259} --&gt;</span>
1245
- </pre>
1246
- </div>
1247
-
1248
- <p>
1249
- The comment must appear on the same line and immediately follow the image,
1250
- apart from optional spaces or tabs:
1251
- </p>
1252
-
1253
- <div class="highlight">
1254
- <pre><span></span>![](emperor-1.jpg) &lt;!-- {&quot;width&quot;:259,&quot;class&quot;:&quot;portrait&quot;} --&gt;
1255
- </pre>
1256
- </div>
1257
-
1258
- <p>
1259
- The syntax is recognized in CommonMark, GFM, MultiMarkdown, and unified
1260
- modes. Kramdown mode does not interpret Bear comments as image attributes.
1261
- </p>
1262
-
1263
- <h4 id="reference-images">
1264
- Reference&nbsp;images
1265
- </h4>
1266
-
1267
- <p>
1268
- A Bear comment on an explicit reference image applies only to that use:
1269
- </p>
1270
-
1271
- <div class="highlight">
1272
- <pre><span></span>![<span class="nt">Small portrait</span>](<span class="na">emperor-1.jpg</span>)
1273
- ![<span class="nt">Large portrait</span>](<span class="na">emperor-1.jpg</span>)&lt;!-- {&quot;width&quot;:520} --&gt;
1274
-
1275
- [<span class="nl">emperor</span>]: <span class="na">emperor-1.jpg</span>
1276
- </pre>
1277
- </div>
1278
-
1279
- <p>
1280
- A comment on the reference definition supplies attributes to every image
1281
- that uses the reference:
1282
- </p>
1283
-
1284
- <div class="highlight">
1285
- <pre><span></span>![<span class="nt">Portrait</span>](<span class="na">emperor-1.jpg</span>)
1286
- ![<span class="nt">Portrait again</span>](<span class="na">emperor-1.jpg</span>)
1287
-
1288
- &lt;!-- {&quot;width&quot;:259,&quot;height&quot;:194} --&gt;
1289
- </pre>
1290
- </div>
1291
-
1292
- <p>
1293
- Definition attributes are the baseline. When an explicit
1294
- <code>![alt][reference]</code> use has its own Bear comment, its values override
1295
- conflicting definition attributes for that image only. Existing image
1296
- attribute syntaxes are merged first, so an adjacent Bear comment wins when
1297
- the same key is specified more than once.
1298
- </p>
1299
-
1300
- <h4 id="supported-values-and-safety">
1301
- Supported values&nbsp;and&nbsp;safety
1302
- </h4>
1303
-
1304
- <p>
1305
- Apex allows the same image attributes accepted by its existing IAL and
1306
- MultiMarkdown handling:
1307
- </p>
1308
-
1309
- <ul>
1310
-
1311
- <li>
1312
- <code>width</code>
1313
- </li>
1314
-
1315
- <li>
1316
- <code>height</code>
1317
- </li>
1318
-
1319
- <li>
1320
- <code>style</code>
1321
- </li>
1322
-
1323
- <li>
1324
- <code>class</code>
1325
- </li>
1326
-
1327
- <li>
1328
- <code>id</code>
1329
- </li>
1330
-
1331
- <li>
1332
- <code>rel</code>
1333
- </li>
1334
-
1335
- <li>
1336
- <code>title</code>
1337
- Unknown keys and object or array values are ignored. <code>width</code> and <code>height</code>
1338
- accept strings or numbers; the other allowed keys accept strings only.
1339
- Boolean and <code>null</code> values do not add attributes. Invalid JSON does not add
1340
- any Bear attributes.
1341
- With raw HTML enabled, the source comment remains in the output. A comment on
1342
- a reference definition is rendered once, not once per image use. In safe
1343
- CommonMark output, Apex still applies the supported attributes, but cmark’s
1344
- normal safe-HTML behavior replaces the comment with
1345
- <code>&lt;!-- raw HTML omitted --&gt;</code>.
1346
- </li>
1347
-
1348
- </ul>
1349
-
1350
- <h4 id="url-handling-and-attributes">
1351
- URL handling and&nbsp;attributes
1352
- </h4>
1353
-
1354
- <p>
1355
- In both inline and reference-style image syntax, a <strong>space after the URL</strong>
1356
- separates the URL from attributes. The URL is everything before that space (or
1357
- before the first <code>key=value</code> or <code>@2x</code>). URLs that contain a protocol
1358
- (http://, https://) are not URL-encoded by Apex, so query parameters
1359
- (e.g. <code>?size=250x83</code>) and ampersands in the URL are preserved in the output.
1360
- You can safely use long or parameterized image URLs and add attributes
1361
- after a space:
1362
- </p>
1363
-
1364
- <div class="highlight">
1365
- <pre><span></span>
1366
- </pre>
1367
- </div>
1368
-
1369
- <h4 id="width-and-height-handling">
1370
- Width and height&nbsp;handling
1371
- </h4>
1372
-
1373
- <p>
1374
- When MultiMarkdown-style attributes or IALs specify <code>width</code> or <code>height</code>, Apex
1375
- normalizes them as follows (in all modes that support image attributes):
1376
- </p>
1377
-
1378
- <ul>
1379
-
1380
- <li>
1381
- Percentages such as <code>width=50%</code> become <code>style=&quot;width: 50%&quot;</code>.
1382
- </li>
1383
-
1384
- <li>
1385
- Integer pixel values such as <code>width=300px</code> become <code>width=&quot;300&quot;</code>.
1386
- </li>
1387
-
1388
- <li>
1389
- Bare integers such as <code>width=300</code> become <code>width=&quot;300&quot;</code>.
1390
- </li>
1391
-
1392
- <li>
1393
- Other units (em, rem, vw, vh, etc.) are added to the <code>style</code> attribute
1394
- (for example <code>width=5em height=10rem</code> becomes
1395
- <code>style=&quot;width: 5em; height: 10rem&quot;</code>).
1396
- </li>
1397
-
1398
- </ul>
1399
-
1400
- <h3 id="emphasis-and-strong">
1401
- Emphasis&nbsp;and&nbsp;Strong
1402
- </h3>
1403
-
1404
- <div class="highlight">
1405
- <pre><span></span>This paragraph has <span class="gs">**bold text**</span>{:.bold-style} with a custom class and <span class="ge">*italic text*</span>{:.italic-style} with another class.
1406
-
1407
- You can combine <span class="gs">**bold**</span>{:.bold} and <span class="ge">*italic*</span>{:.italic} in the same paragraph with different styles.
1408
-
1409
- Nested **bold with <span class="ge">*italic*</span>{:.nested-italic} inside**{:.bold-wrapper} works too.
1410
- </pre>
1411
- </div>
1412
-
1413
- <p>
1414
- Output:
1415
- </p>
1416
-
1417
- <div class="highlight">
1418
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>This paragraph has <span class="p">&lt;</span><span class="nt">strong</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;bold-style&quot;</span><span class="p">&gt;</span>bold text<span class="p">&lt;/</span><span class="nt">strong</span><span class="p">&gt;</span> with a custom class and <span class="p">&lt;</span><span class="nt">em</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;italic-style&quot;</span><span class="p">&gt;</span>italic text<span class="p">&lt;/</span><span class="nt">em</span><span class="p">&gt;</span> with another class.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1419
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>You can combine <span class="p">&lt;</span><span class="nt">strong</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;bold&quot;</span><span class="p">&gt;</span>bold<span class="p">&lt;/</span><span class="nt">strong</span><span class="p">&gt;</span> and <span class="p">&lt;</span><span class="nt">em</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;italic&quot;</span><span class="p">&gt;</span>italic<span class="p">&lt;/</span><span class="nt">em</span><span class="p">&gt;</span> in the same paragraph with different styles.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1420
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nested <span class="p">&lt;</span><span class="nt">strong</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;bold-wrapper&quot;</span><span class="p">&gt;</span>bold with <span class="p">&lt;</span><span class="nt">em</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;nested-italic&quot;</span><span class="p">&gt;</span>italic<span class="p">&lt;/</span><span class="nt">em</span><span class="p">&gt;</span> inside<span class="p">&lt;/</span><span class="nt">strong</span><span class="p">&gt;</span> works too.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1421
- </pre>
1422
- </div>
1423
-
1424
- <h3 id="code-spans">
1425
- Code&nbsp;Spans
1426
- </h3>
1427
-
1428
- <div class="highlight">
1429
- <pre><span></span>Use <span class="sb">`inline code`</span>{:.code-inline} for code snippets with styling.
1430
-
1431
- You can have multiple <span class="sb">`code spans`</span>{:.code-1} and <span class="sb">`more code`</span>{:.code-2} with different classes.
1432
- </pre>
1433
- </div>
1434
-
1435
- <p>
1436
- Output:
1437
- </p>
1438
-
1439
- <div class="highlight">
1440
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Use <span class="p">&lt;</span><span class="nt">code</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;code-inline&quot;</span><span class="p">&gt;</span>inline code<span class="p">&lt;/</span><span class="nt">code</span><span class="p">&gt;</span> for code snippets with styling.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1441
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>You can have multiple <span class="p">&lt;</span><span class="nt">code</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;code-1&quot;</span><span class="p">&gt;</span>code spans<span class="p">&lt;/</span><span class="nt">code</span><span class="p">&gt;</span> and <span class="p">&lt;</span><span class="nt">code</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;code-2&quot;</span><span class="p">&gt;</span>more code<span class="p">&lt;/</span><span class="nt">code</span><span class="p">&gt;</span> with different classes.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1442
- </pre>
1443
- </div>
1444
-
1445
- <h2 id="attribute-syntax">
1446
- Attribute&nbsp;Syntax
1447
- </h2>
1448
-
1449
- <p>
1450
- IALs support three types of attributes:
1451
- </p>
1452
-
1453
- <h3 id="1-ids">
1454
- 1.&nbsp;IDs
1455
- </h3>
1456
-
1457
- <p>
1458
- Use <code>#</code> followed by the ID name:
1459
- </p>
1460
-
1461
- <div class="highlight">
1462
- <pre><span></span><span class="gh"># Heading {: #section-1}</span>
1463
- </pre>
1464
- </div>
1465
-
1466
- <p>
1467
- Output: <code>&lt;h1 id=&quot;section-1&quot;&gt;Heading&lt;/h1&gt;</code>
1468
- </p>
1469
-
1470
- <h3 id="2-classes">
1471
- 2.&nbsp;Classes
1472
- </h3>
1473
-
1474
- <p>
1475
- Use <code>.</code> followed by the class name. Multiple classes can be specified:
1476
- </p>
1477
-
1478
- <div class="highlight">
1479
- <pre><span></span>Paragraph.
1480
-
1481
- {: .important .note .highlight}
1482
- </pre>
1483
- </div>
1484
-
1485
- <p>
1486
- Output: <code>&lt;p class=&quot;important note highlight&quot;&gt;Paragraph.&lt;/p&gt;</code>
1487
- <strong>Note:</strong> Multiple <code>.class</code> specifiers are equivalent to a single <code>class</code> attribute with space-separated values.
1488
- </p>
1489
-
1490
- <h3 id="3-key-value-pairs">
1491
- 3. Key-Value&nbsp;Pairs
1492
- </h3>
1493
-
1494
- <p>
1495
- Use <code>key=&quot;value&quot;</code> or <code>key='value'</code> for custom attributes. Values can be quoted (single or double quotes) or unquoted:
1496
- </p>
1497
-
1498
- <div class="highlight">
1499
- <pre><span></span>Paragraph.
1500
-
1501
- {: title=&quot;Important Note&quot; lang=&quot;en&quot; data-id=&quot;123&quot;}
1502
-
1503
- Link with attributes.
1504
- [<span class="nt">Click here</span>](<span class="na">url</span>){:rel=&quot;nofollow&quot; target=&quot;_blank&quot;}
1505
- </pre>
1506
- </div>
1507
-
1508
- <p>
1509
- Output:
1510
- </p>
1511
-
1512
- <div class="highlight">
1513
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Important Note&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span> <span class="na">data-id</span><span class="o">=</span><span class="s">&quot;123&quot;</span><span class="p">&gt;</span>Paragraph.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1514
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Link with attributes.
1515
- <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;url&quot;</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;nofollow&quot;</span> <span class="na">target</span><span class="o">=</span><span class="s">&quot;_blank&quot;</span><span class="p">&gt;</span>Click here<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1516
- </pre>
1517
- </div>
1518
-
1519
- <p>
1520
- <strong>Quoted values:</strong> Use quotes when values contain spaces or special characters:
1521
- </p>
1522
-
1523
- <div class="highlight">
1524
- <pre><span></span>{: title=&quot;This is a title with spaces&quot; lang=&quot;en-US&quot;}
1525
- </pre>
1526
- </div>
1527
-
1528
- <p>
1529
- <strong>Unquoted values:</strong> Simple values without spaces can be unquoted:
1530
- </p>
1531
-
1532
- <div class="highlight">
1533
- <pre><span></span>{: lang=en data-visible=true}
1534
- </pre>
1535
- </div>
1536
-
1537
- <p>
1538
- <strong>Escaping quotes:</strong> Inside quoted values, escape quotes with backslash:
1539
- </p>
1540
-
1541
- <div class="highlight">
1542
- <pre><span></span>{: title=&quot;He said \&quot;Hello\&quot;&quot;}
1543
- </pre>
1544
- </div>
1545
-
1546
- <h3 id="combining-attributes">
1547
- Combining&nbsp;Attributes
1548
- </h3>
1549
-
1550
- <p>
1551
- All three types can be combined in a single IAL:
1552
- </p>
1553
-
1554
- <div class="highlight">
1555
- <pre><span></span><span class="gh"># Heading</span>
1556
-
1557
- {: <span class="ni">#section</span>-1 .important .highlight title=&quot;Section Title&quot; lang=&quot;en&quot;}
1558
- </pre>
1559
- </div>
1560
-
1561
- <p>
1562
- Output: <code>&lt;h1 id=&quot;section-1&quot; class=&quot;important highlight&quot; title=&quot;Section Title&quot; lang=&quot;en&quot;&gt;Heading&lt;/h1&gt;</code>
1563
- </p>
1564
-
1565
- <h2 id="attribute-list-definitions-alds">
1566
- Attribute List Definitions&nbsp;(ALDs)
1567
- </h2>
1568
-
1569
- <p>
1570
- ALDs let you define reusable attribute sets that can be referenced multiple times. This is useful for maintaining consistent styling across a document.
1571
- </p>
1572
-
1573
- <h3 id="defining-alds">
1574
- Defining&nbsp;ALDs
1575
- </h3>
1576
-
1577
- <p>
1578
- ALDs use the syntax <code>{<span class=\"emoji\">:ref-name:</span> attributes}</code> and can appear anywhere in your document (though typically at the end for organization):
1579
- </p>
1580
-
1581
- <div class="highlight">
1582
- <pre><span></span><span class="gh"># Header 1</span>
1583
-
1584
- {:header-style}
1585
-
1586
- <span class="gh"># Header 2</span>
1587
-
1588
- {:header-style}
1589
-
1590
- <span class="gh"># Header 3</span>
1591
-
1592
- {:header-style}
1593
- </pre>
1594
- </div>
1595
-
1596
- <p>
1597
- Output:
1598
- </p>
1599
-
1600
- <div class="highlight">
1601
- <pre><span></span><span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;section-title&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;large bold&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Header 1<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1602
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;section-title&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;large bold&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Header 2<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1603
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;section-title&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;large bold&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Header 3<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1604
- </pre>
1605
- </div>
1606
-
1607
- <h3 id="ald-syntax">
1608
- ALD&nbsp;Syntax
1609
- </h3>
1610
-
1611
- <p>
1612
- ALD definitions follow the same attribute syntax as IALs:
1613
- </p>
1614
-
1615
- <div class="highlight">
1616
- <pre><span></span>
1617
- </pre>
1618
- </div>
1619
-
1620
- <h3 id="referencing-alds">
1621
- Referencing&nbsp;ALDs
1622
- </h3>
1623
-
1624
- <p>
1625
- Reference an ALD in an IAL using just the reference name:
1626
- </p>
1627
-
1628
- <div class="highlight">
1629
- <pre><span></span><span class="gh"># Heading</span>
1630
-
1631
- {:my-style}
1632
-
1633
- Paragraph.
1634
-
1635
- {:my-style}
1636
- </pre>
1637
- </div>
1638
-
1639
- <p>
1640
- If the ALD <code>{<span class=\"emoji\">:my-style:</span> ...}</code> is defined, both elements will receive those attributes.
1641
- </p>
1642
-
1643
- <h3 id="mixed-usage">
1644
- Mixed&nbsp;Usage
1645
- </h3>
1646
-
1647
- <p>
1648
- You can mix ALD references with additional attributes in the same IAL. The additional attributes override or extend the ALD:
1649
- </p>
1650
-
1651
- <div class="highlight">
1652
- <pre><span></span><span class="gh"># Heading 1</span>
1653
-
1654
- {:base-style}
1655
-
1656
- <span class="gh"># Heading 2</span>
1657
-
1658
- {:base-style .class3}
1659
-
1660
- <span class="gh"># Heading 3</span>
1661
-
1662
- {:base-style <span class="ni">#override</span>-id}
1663
-
1664
- <span class="gh"># Heading 4</span>
1665
-
1666
- {:base-style .class3 rel=&quot;nofollow&quot;}
1667
- </pre>
1668
- </div>
1669
-
1670
- <p>
1671
- Output:
1672
- </p>
1673
-
1674
- <div class="highlight">
1675
- <pre><span></span><span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;main&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;class1 class2&quot;</span><span class="p">&gt;</span>Heading 1<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1676
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;main&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;class1 class2 class3&quot;</span><span class="p">&gt;</span>Heading 2<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1677
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;override-id&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;class1 class2&quot;</span><span class="p">&gt;</span>Heading 3<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1678
- <span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;main&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;class1 class2 class3&quot;</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;nofollow&quot;</span><span class="p">&gt;</span>Heading 4<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1679
- </pre>
1680
- </div>
1681
-
1682
- <p>
1683
- <strong>Behavior:</strong>
1684
- </p>
1685
-
1686
- <ul>
1687
-
1688
- <li>
1689
- <strong>Classes</strong>: Additional classes are appended to the ALD classes
1690
- </li>
1691
-
1692
- <li>
1693
- <strong>IDs</strong>: If an ID is specified in the IAL, it overrides the ALD’s ID
1694
- </li>
1695
-
1696
- <li>
1697
- <strong>Key-value attributes</strong>: If a key exists in both ALD and IAL, the IAL value overrides the ALD value
1698
- </li>
1699
-
1700
- </ul>
1701
-
1702
- <h2 id="important-notes">
1703
- Important&nbsp;Notes
1704
- </h2>
1705
-
1706
- <h3 id="block-level-ial-positioning">
1707
- Block-Level IAL&nbsp;Positioning
1708
- </h3>
1709
-
1710
- <p>
1711
- For block-level elements, the IAL <strong>must</strong> appear immediately after the element with <strong>no blank line</strong> between them:
1712
- <strong>Correct:</strong>
1713
- </p>
1714
-
1715
- <div class="highlight">
1716
- <pre><span></span>Paragraph text.
1717
-
1718
- {: .class}
1719
- </pre>
1720
- </div>
1721
-
1722
- <p>
1723
- <strong>Incorrect:</strong>
1724
- </p>
1725
-
1726
- <div class="highlight">
1727
- <pre><span></span>Paragraph text.
1728
-
1729
- {: .class}
1730
- </pre>
1731
- </div>
1732
-
1733
- <p>
1734
- The blank line will cause the IAL to be treated as a separate paragraph.
1735
- </p>
1736
-
1737
- <h3 id="inline-ial-positioning">
1738
- Inline IAL&nbsp;Positioning
1739
- </h3>
1740
-
1741
- <p>
1742
- For inline elements, the IAL must appear immediately after the element, with optional whitespace:
1743
- </p>
1744
-
1745
- <div class="highlight">
1746
- <pre><span></span>[<span class="nt">link</span>](<span class="na">url</span>){:.class} text after
1747
- <span class="gs">**bold**</span>{:.bold-style} more text
1748
- </pre>
1749
- </div>
1750
-
1751
- <h3 id="multiple-elements-with-same-attributes">
1752
- Multiple Elements with Same&nbsp;Attributes
1753
- </h3>
1754
-
1755
- <p>
1756
- When multiple links share the same URL, IALs are correctly matched using element indexing:
1757
- </p>
1758
-
1759
- <div class="highlight">
1760
- <pre><span></span>Here&#39;s a [<span class="nt">regular link</span>](<span class="na">https://example.com</span>) and [<span class="nt">another link</span>](<span class="na">https://example.com</span>){:.button}.
1761
- </pre>
1762
- </div>
1763
-
1764
- <p>
1765
- Both links point to the same URL, but only the second one receives the <code>button</code> class.
1766
- </p>
1767
-
1768
- <h3 id="nested-elements">
1769
- Nested&nbsp;Elements
1770
- </h3>
1771
-
1772
- <p>
1773
- IALs work with nested inline elements:
1774
- </p>
1775
-
1776
- <div class="highlight">
1777
- <pre><span></span>**Bold text with <span class="ge">*italic*</span>{:.nested} inside**{:.wrapper}
1778
- </pre>
1779
- </div>
1780
-
1781
- <p>
1782
- The italic element gets the <code>nested</code> class, and the bold element gets the <code>wrapper</code> class.
1783
- </p>
1784
-
1785
- <h2 id="examples">
1786
- Examples
1787
- </h2>
1788
-
1789
- <h3 id="complete-example">
1790
- Complete&nbsp;Example
1791
- </h3>
1792
-
1793
- <div class="highlight">
1794
- <pre><span></span><span class="gh"># Main Title</span>
1795
-
1796
- {: <span class="ni">#main</span>-title .page-title}
1797
-
1798
- <span class="gu">## Section 1</span>
1799
-
1800
- {:section-heading}
1801
-
1802
- This paragraph has [<span class="nt">a link</span>](<span class="na">https://example.com</span>){:.external-link} with styling.
1803
-
1804
- Another paragraph with <span class="gs">**bold text**</span>{:.highlight}.
1805
-
1806
- <span class="gu">## Section 2</span>
1807
-
1808
- {:section-heading}
1809
-
1810
- More content here.
1811
- </pre>
1812
- </div>
1813
-
1814
- <p>
1815
- Output:
1816
- </p>
1817
-
1818
- <div class="highlight">
1819
- <pre><span></span><span class="p">&lt;</span><span class="nt">h1</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;main-title&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;page-title&quot;</span><span class="p">&gt;</span>Main Title<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
1820
- <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;section important&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Section 1<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
1821
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>This paragraph has <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://example.com&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;external-link&quot;</span><span class="p">&gt;</span>a link<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> with styling.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1822
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Another paragraph with <span class="p">&lt;</span><span class="nt">strong</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;highlight&quot;</span><span class="p">&gt;</span>bold text<span class="p">&lt;/</span><span class="nt">strong</span><span class="p">&gt;</span>.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1823
- <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;section important&quot;</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>Section 2<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
1824
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>More content here.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
1825
- </pre>
1826
- </div>
1827
-
1828
- <h3 id="using-alds-for-consistent-styling">
1829
- Using ALDs for Consistent&nbsp;Styling
1830
- </h3>
1831
-
1832
- <div class="highlight">
1833
- <pre><span></span><span class="gh"># Introduction</span>
1834
-
1835
- {:intro}
1836
-
1837
- <span class="gu">## Overview</span>
1838
-
1839
- {:intro}
1840
-
1841
- <span class="gu">## Details</span>
1842
-
1843
- {:intro}
1844
-
1845
- <span class="gh"># Conclusion</span>
1846
-
1847
- {:conclusion}
1848
-
1849
- <span class="gu">## Summary</span>
1850
-
1851
- {:conclusion}
1852
- </pre>
1853
- </div>
1854
-
1855
- <p>
1856
- This allows you to maintain consistent styling across multiple elements by defining the attributes once and referencing them multiple times.
1857
- </p>
1858
-
1859
- <h2 id="related">
1860
- Related
1861
- </h2>
1862
-
1863
- <ul>
1864
-
1865
- <li>
1866
- <a href="Syntax.html">Syntax</a> - Complete syntax reference
1867
- </li>
1868
-
1869
- <li>
1870
- <a href="Modes.html">Modes</a> - Understanding processor modes (IALs available in Kramdown and unified modes)
1871
- </li>
1872
-
1873
- </ul>
1874
-
1875
- <script>
1876
- // Hamburger menu functionality
1877
- (function() {
1878
- function initHamburgerMenu() {
1879
- var hamburger = document.getElementById('hamburger-menu');
1880
- var sidebar = document.querySelector('.main-toc, .sidebar');
1881
- var overlay = document.getElementById('mobile-menu-overlay');
1882
-
1883
- if (!hamburger || !sidebar) return;
1884
-
1885
- function toggleMenu() {
1886
- var isOpen = sidebar.classList.contains('mobile-open');
1887
- if (isOpen) {
1888
- sidebar.classList.remove('mobile-open');
1889
- hamburger.classList.remove('active');
1890
- if (overlay) overlay.classList.remove('active');
1891
- } else {
1892
- sidebar.classList.add('mobile-open');
1893
- hamburger.classList.add('active');
1894
- if (overlay) overlay.classList.add('active');
1895
- }
1896
- }
1897
-
1898
- hamburger.addEventListener('click', function(e) {
1899
- e.stopPropagation();
1900
- toggleMenu();
1901
- });
1902
-
1903
- if (overlay) {
1904
- overlay.addEventListener('click', function() {
1905
- toggleMenu();
1906
- });
1907
- }
1908
-
1909
- // Close menu when clicking on a sidebar link (mobile only)
1910
- if (window.innerWidth <= 768) {
1911
- var sidebarLinks = sidebar.querySelectorAll('a');
1912
- sidebarLinks.forEach(function(link) {
1913
- link.addEventListener('click', function() {
1914
- setTimeout(function() {
1915
- sidebar.classList.remove('mobile-open');
1916
- hamburger.classList.remove('active');
1917
- if (overlay) overlay.classList.remove('active');
1918
- }, 100);
1919
- });
1920
- });
1921
- }
1922
-
1923
- // Close menu on window resize if going to desktop
1924
- window.addEventListener('resize', function() {
1925
- if (window.innerWidth > 768) {
1926
- sidebar.classList.remove('mobile-open');
1927
- hamburger.classList.remove('active');
1928
- if (overlay) overlay.classList.remove('active');
1929
- }
1930
- });
1931
- }
1932
-
1933
- // Initialize when DOM is ready
1934
- if (document.readyState === 'loading') {
1935
- document.addEventListener('DOMContentLoaded', initHamburgerMenu);
1936
- } else {
1937
- initHamburgerMenu();
1938
- }
1939
- })();
1940
-
1941
- </script>
1942
- <script>
1943
- (function() {
1944
- // Clone the page TOC for floating TOC
1945
- function initFloatingTOC() {
1946
- var pageTOC = document.getElementById('page-toc-top');
1947
- var floatingTOCContent = document.getElementById('floating-toc-content');
1948
- var floatingTOC = document.getElementById('floating-toc');
1949
-
1950
- if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
1951
-
1952
- // Clone the TOC structure
1953
- var tocClone = pageTOC.cloneNode(true);
1954
- tocClone.id = 'floating-toc-clone';
1955
- floatingTOCContent.appendChild(tocClone);
1956
-
1957
- // Update all links to use smooth scrolling
1958
- var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
1959
- allTOCLinks.forEach(function(link) {
1960
- link.addEventListener('click', function(e) {
1961
- var href = this.getAttribute('href');
1962
- if (href && href.startsWith('#')) {
1963
- e.preventDefault();
1964
- var targetId = href.substring(1);
1965
- var targetElement = document.getElementById(targetId);
1966
- if (targetElement) {
1967
- var offset = 20; // Offset from top
1968
-
1969
- // Function to calculate absolute position from document top
1970
- function getAbsoluteTop(element) {
1971
- var top = 0;
1972
- while (element) {
1973
- top += element.offsetTop;
1974
- element = element.offsetParent;
1975
- }
1976
- return top;
1977
- }
1978
-
1979
- var absoluteTop = getAbsoluteTop(targetElement);
1980
- var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
1981
- var offsetPosition = absoluteTop - offset;
1982
-
1983
- // Only scroll if we're not already at the target position
1984
- if (Math.abs(scrollTop - offsetPosition) > 10) {
1985
- window.scrollTo({
1986
- top: Math.max(0, offsetPosition),
1987
- behavior: 'smooth'
1988
- });
1989
- }
1990
-
1991
- // Update URL hash without triggering scroll
1992
- if (history.pushState) {
1993
- history.pushState(null, null, href);
1994
- }
1995
- }
1996
- }
1997
- });
1998
- });
1999
-
2000
- // Handle scroll to show/hide floating TOC
2001
- var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
2002
- var tocBottom = tocTop + pageTOC.offsetHeight;
2003
-
2004
- function updateFloatingTOC() {
2005
- var scrollY = window.pageYOffset || document.documentElement.scrollTop;
2006
-
2007
- if (scrollY > tocBottom) {
2008
- floatingTOC.classList.add('visible');
2009
- } else {
2010
- floatingTOC.classList.remove('visible');
2011
- }
2012
- }
2013
-
2014
- // Throttle scroll events
2015
- var ticking = false;
2016
- window.addEventListener('scroll', function() {
2017
- if (!ticking) {
2018
- window.requestAnimationFrame(function() {
2019
- updateFloatingTOC();
2020
- ticking = false;
2021
- });
2022
- ticking = true;
2023
- }
2024
- });
2025
-
2026
- // Initial check
2027
- updateFloatingTOC();
2028
- }
2029
-
2030
- // Initialize when DOM is ready
2031
- if (document.readyState === 'loading') {
2032
- document.addEventListener('DOMContentLoaded', initFloatingTOC);
2033
- } else {
2034
- initFloatingTOC();
2035
- }
2036
- })();
2037
- </script>
2038
- <footer class="page-footer"><p>Copyright 2025 Brett Terpstra, All Rights Reserved | MIT License</p></footer></body>
2039
-
2040
- </html>
2041
-