apex-ruby 1.0.29 → 1.0.31

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