apex-ruby 1.0.17 → 1.0.20

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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -3
  3. data/ext/apex_ext/apex_ext.c +260 -91
  4. data/ext/apex_ext/apex_src/CHANGELOG.md +440 -0
  5. data/ext/apex_ext/apex_src/CMakeLists.txt +15 -1
  6. data/ext/apex_ext/apex_src/Formula/apex.rb +7 -2
  7. data/ext/apex_ext/apex_src/Package.swift +15 -4
  8. data/ext/apex_ext/apex_src/README.md +94 -35
  9. data/ext/apex_ext/apex_src/VERSION +1 -1
  10. data/ext/apex_ext/apex_src/apex-debug.log +4 -0
  11. data/ext/apex_ext/apex_src/apex.code-workspace +38 -0
  12. data/ext/apex_ext/apex_src/apex.taskpaper +12 -0
  13. data/ext/apex_ext/apex_src/apex_deflist_debug.log +25 -0
  14. data/ext/apex_ext/apex_src/buildnotes.md +1435 -0
  15. data/ext/apex_ext/apex_src/cli/main.c +262 -33
  16. data/ext/apex_ext/apex_src/debug.log +7 -0
  17. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +274 -0
  18. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +749 -0
  19. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +744 -0
  20. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +382 -0
  21. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +351 -0
  22. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +745 -0
  23. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +829 -0
  24. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +1148 -0
  25. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +161 -0
  26. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +184 -0
  27. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +211 -0
  28. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +67 -0
  29. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +340 -0
  30. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +11 -0
  31. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +234 -0
  32. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +516 -0
  33. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +461 -0
  34. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +193 -0
  35. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +201 -0
  36. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +678 -0
  37. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +1367 -0
  38. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +6 -0
  39. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +774 -300
  40. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +1194 -0
  41. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +416 -216
  42. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3544 -1094
  43. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +371 -97
  44. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +153 -23
  45. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +358 -124
  46. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +1656 -0
  47. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +1226 -0
  48. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +201 -56
  49. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +279 -109
  50. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +200 -53
  51. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +2327 -0
  52. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +690 -271
  53. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +201 -55
  54. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +238 -68
  55. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +421 -221
  56. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +340 -78
  57. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +251 -86
  58. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +1362 -0
  59. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +277 -90
  60. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +673 -346
  61. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +1405 -0
  62. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +1902 -0
  63. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +1939 -1698
  64. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +1781 -0
  65. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +315 -140
  66. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +307 -113
  67. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +1132 -0
  68. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +1754 -0
  69. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +872 -376
  70. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  71. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  72. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +8746 -0
  73. data/ext/apex_ext/apex_src/documentation/shared_styles.css +20 -15
  74. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +55 -0
  75. data/ext/apex_ext/apex_src/escaping-repro.md +103 -0
  76. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +8 -0
  77. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  78. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +547 -0
  79. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  80. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +33 -0
  81. data/ext/apex_ext/apex_src/include/apex/apex.h +92 -6
  82. data/ext/apex_ext/apex_src/include/apex/ast_rtf.h +23 -0
  83. data/ext/apex_ext/apex_src/include/apex/ast_terminal.h +6 -0
  84. data/ext/apex_ext/apex_src/include/apex/module.modulemap +5 -0
  85. data/ext/apex_ext/apex_src/include/apex/plugins.h +105 -0
  86. data/ext/apex_ext/apex_src/include/apexc.h +1 -0
  87. data/ext/apex_ext/apex_src/man/apex.1 +82 -78
  88. data/ext/apex_ext/apex_src/man/apex.1.md +81 -4
  89. data/ext/apex_ext/apex_src/objc/Apex.swift +73 -0
  90. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +79 -0
  91. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +83 -5
  92. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +244 -1
  93. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +76 -0
  94. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +169 -0
  95. data/ext/apex_ext/apex_src/output.html +87 -0
  96. data/ext/apex_ext/apex_src/plans/quarto-mode.md +442 -0
  97. data/ext/apex_ext/apex_src/src/_README.md +85 -32
  98. data/ext/apex_ext/apex_src/src/apex.c +770 -200
  99. data/ext/apex_ext/apex_src/src/ast_rtf.c +848 -0
  100. data/ext/apex_ext/apex_src/src/ast_terminal.c +184 -7
  101. data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +10 -3
  102. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +7 -11
  103. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.c +467 -0
  104. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.h +27 -0
  105. data/ext/apex_ext/apex_src/src/extensions/callouts.c +400 -4
  106. data/ext/apex_ext/apex_src/src/extensions/callouts.h +15 -5
  107. data/ext/apex_ext/apex_src/src/extensions/citations.c +26 -5
  108. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.c +632 -0
  109. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.h +22 -0
  110. data/ext/apex_ext/apex_src/src/extensions/concordance.c +632 -0
  111. data/ext/apex_ext/apex_src/src/extensions/definition_list.c +129 -15
  112. data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1050 -121
  113. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +569 -16
  114. data/ext/apex_ext/apex_src/src/extensions/ial.c +502 -52
  115. data/ext/apex_ext/apex_src/src/extensions/ial.h +2 -1
  116. data/ext/apex_ext/apex_src/src/extensions/includes.c +532 -33
  117. data/ext/apex_ext/apex_src/src/extensions/includes.h +7 -1
  118. data/ext/apex_ext/apex_src/src/extensions/index.c +1427 -140
  119. data/ext/apex_ext/apex_src/src/extensions/index.h +28 -0
  120. data/ext/apex_ext/apex_src/src/extensions/metadata.c +200 -161
  121. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.c +251 -0
  122. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.h +22 -0
  123. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.c +624 -0
  124. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.h +35 -0
  125. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.c +264 -0
  126. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.h +23 -0
  127. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.c +307 -0
  128. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.h +21 -0
  129. data/ext/apex_ext/apex_src/src/extensions/raw_content.c +351 -0
  130. data/ext/apex_ext/apex_src/src/extensions/raw_content.h +20 -0
  131. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +117 -3
  132. data/ext/apex_ext/apex_src/src/extensions/special_markers.c +53 -0
  133. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +23 -1
  134. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +83 -92
  135. data/ext/apex_ext/apex_src/src/extensions/toc.c +446 -25
  136. data/ext/apex_ext/apex_src/src/extensions/toc.h +26 -1
  137. data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +28 -0
  138. data/ext/apex_ext/apex_src/src/html_renderer.c +387 -17
  139. data/ext/apex_ext/apex_src/src/plugin_catalog.c +517 -0
  140. data/ext/apex_ext/apex_src/src/plugins_remote.c +88 -14
  141. data/ext/apex_ext/apex_src/src/plugins_remote.h +34 -0
  142. data/ext/apex_ext/apex_src/src/pretty_html.c +6 -1
  143. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +21 -0
  144. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +10 -0
  145. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +19 -0
  146. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +11 -0
  147. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +2 -0
  148. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +46 -0
  149. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +5 -0
  150. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +47 -0
  151. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +3 -0
  152. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +3 -0
  153. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +8 -0
  154. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +19 -0
  155. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +5 -0
  156. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +7 -0
  157. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +81 -0
  158. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +5 -0
  159. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +47 -0
  160. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +192 -0
  161. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +37 -0
  162. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +16 -0
  163. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +301 -0
  164. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +4 -0
  165. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +82 -0
  166. data/ext/apex_ext/apex_src/tests/test_extensions.c +821 -1
  167. data/ext/apex_ext/apex_src/tests/test_ial.c +7 -0
  168. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +25 -0
  169. data/ext/apex_ext/apex_src/tests/test_metadata.c +129 -0
  170. data/ext/apex_ext/apex_src/tests/test_output.c +568 -2
  171. data/ext/apex_ext/apex_src/tests/test_runner.c +11 -0
  172. data/ext/apex_ext/apex_src/tests/test_tables.c +420 -0
  173. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +1 -1
  174. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +77 -1
  175. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +135 -5
  176. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +56 -1
  177. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +38 -0
  178. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +1 -1
  179. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  180. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  181. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +69 -0
  182. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +74 -0
  183. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +22 -0
  184. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  185. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +44 -0
  186. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +128 -0
  187. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +5118 -0
  188. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  189. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  190. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +8 -0
  191. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +99 -0
  192. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +452 -0
  193. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +52 -0
  194. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +55 -0
  195. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +2455 -0
  196. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  197. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +171 -0
  198. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +55 -0
  199. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +220 -0
  200. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +43 -0
  201. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +7 -0
  202. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +76 -0
  203. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +10 -0
  204. data/ext/apex_ext/extconf.rb +35 -0
  205. data/lib/apex/version.rb +2 -2
  206. metadata +117 -2
  207. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
@@ -234,6 +234,27 @@ Use `^^` to merge cells vertically (rowspan):
234
234
  > This callout starts expanded but can be collapsed.
235
235
  > It contains multiple lines of content.
236
236
 
237
+ ### Python-Markdown Callouts (requires `--py-callouts`)
238
+
239
+ !!! note "Python Note"
240
+ This callout uses Python-Markdown syntax.
241
+ The body is indented.
242
+
243
+ !!! warning
244
+ This warning has no explicit title.
245
+
246
+ ### Quarto Callouts (requires `--quarto-callouts`)
247
+
248
+ ::: {.callout-tip}
249
+ ## Quarto Tip
250
+
251
+ This callout uses Quarto fenced syntax and heading title extraction.
252
+ :::
253
+
254
+ ::: {.callout-warning title="Quarto Warning" collapse="true"}
255
+ This callout uses explicit title and collapse attributes.
256
+ :::
257
+
237
258
  ## Definition Lists
238
259
 
239
260
  Markdown
@@ -0,0 +1,10 @@
1
+ # Bear image attributes
2
+
3
+ ![](inline.jpg)<!-- {"width":259} -->
4
+
5
+ ![First][shared]
6
+ ![Second][shared]
7
+
8
+ ![Override][shared]<!-- {"width":320} -->
9
+
10
+ [shared]: shared.jpg <!-- {"width":200,"height":100} -->
@@ -0,0 +1,19 @@
1
+ # Intro
2
+
3
+ Intro paragraph.
4
+
5
+ ## Section 1
6
+
7
+ Section 1 text.
8
+
9
+ ## Section 2
10
+
11
+ Section 2 text.
12
+
13
+ ### Section 2.1
14
+
15
+ Nested section 2.1 text.
16
+
17
+ ## Section 3
18
+
19
+ Section 3 text.
@@ -0,0 +1,11 @@
1
+ # Intro
2
+
3
+ Intro paragraph (txt).
4
+
5
+ ## Section 2
6
+
7
+ Section 2 text from TXT fixture.
8
+
9
+ ## Section 3
10
+
11
+ Section 3 text from TXT fixture.
@@ -0,0 +1,2 @@
1
+ ## Page breaks
2
+ {::pagebreak /}
@@ -0,0 +1,46 @@
1
+ ## Obsidian/Bear Callouts
2
+
3
+ > [!NOTE] Note title
4
+ > Note body
5
+
6
+ > [!ABSTRACT] Abstract title
7
+ > Abstract body
8
+
9
+ > [!INFO] Info title
10
+ > Info body
11
+
12
+ > [!TODO] Todo title
13
+ > Todo body
14
+
15
+ > [!TIP] Tip title
16
+ > Tip body
17
+
18
+ > [!SUCCESS] Success title
19
+ > Success body
20
+
21
+ > [!QUESTION] Question title
22
+ > Question body
23
+
24
+ > [!WARNING] Warning title
25
+ > Warning body
26
+
27
+ > [!FAILURE] Failure title
28
+ > Failure body
29
+
30
+ > [!DANGER] Danger title
31
+ > Danger body
32
+
33
+ > [!BUG] Bug title
34
+ > Bug body
35
+
36
+ > [!EXAMPLE] Example title
37
+ > Example body
38
+
39
+ > [!QUOTE] Quote title
40
+ > Quote body
41
+
42
+ > [!NOTE]+ Expanded collapsible
43
+ > Expanded body
44
+
45
+ > [!NOTE]- Collapsed collapsible
46
+ > Collapsed body
@@ -0,0 +1,5 @@
1
+ <blockquote class="tip" markdown="1">
2
+ Tip with [link](doc.html) and <span>HTML</span>.
3
+ </blockquote>
4
+ ## Page breaks
5
+ {::pagebreak /}
@@ -0,0 +1,47 @@
1
+ ## Python-Markdown Callouts (`--py-callouts`)
2
+
3
+ !!! note "Note title"
4
+ Note body
5
+
6
+ !!! abstract "Abstract title"
7
+ Abstract body
8
+
9
+ !!! info "Info title"
10
+ Info body
11
+
12
+ !!! todo "Todo title"
13
+ Todo body
14
+
15
+ !!! tip "Tip title"
16
+ Tip body
17
+
18
+ !!! success "Success title"
19
+ Success body
20
+
21
+ !!! question "Question title"
22
+ Question body
23
+
24
+ !!! warning "Warning title"
25
+ Warning body
26
+
27
+ !!! failure "Failure title"
28
+ Failure body
29
+
30
+ !!! danger "Danger title"
31
+ Danger body
32
+
33
+ !!! bug "Bug title"
34
+ Bug body
35
+
36
+ !!! example "Example title"
37
+ Example body
38
+
39
+ !!! quote "Quote title"
40
+ Quote body
41
+
42
+ NOTE: Label-style note body
43
+
44
+ WARNING: Label-style warning body
45
+
46
+ >? NOTE: Collapsed label-style note
47
+ > Body line for collapsed callout
@@ -0,0 +1,3 @@
1
+ ::: {.callout-note}
2
+ Quarto callout note body.
3
+ :::
@@ -0,0 +1,3 @@
1
+ ```{.python filename="run.py"}
2
+ print("hello")
3
+ ```
@@ -0,0 +1,8 @@
1
+ ```{mermaid}
2
+ flowchart LR
3
+ A --> B
4
+ ```
5
+
6
+ ```{dot}
7
+ digraph { A -> B; }
8
+ ```
@@ -0,0 +1,19 @@
1
+ (@) My first example will be numbered (1).
2
+ (@) My second example will be numbered (2).
3
+
4
+ Explanation of examples.
5
+
6
+ (@) My third example will be numbered (3).
7
+
8
+ i) Alpha
9
+ ii) Beta
10
+
11
+ | Line one
12
+ | preserved spaces
13
+ | Line three
14
+
15
+ 1. First
16
+
17
+ ::: {}
18
+
19
+ 1. Second
@@ -0,0 +1,5 @@
1
+ ```{=html}
2
+ <strong>raw html</strong>
3
+ ```
4
+
5
+ Text `<span class="x">inline</span>`{=html} after.
@@ -0,0 +1,7 @@
1
+ Page 1
2
+
3
+ {{< pagebreak >}}
4
+
5
+ Page 2
6
+
7
+ Press {{< kbd $@3 >}} to save.
@@ -0,0 +1,81 @@
1
+ # Quarto smoke test
2
+
3
+ ## Callouts
4
+
5
+ ::: {.callout-note}
6
+ Quarto callout note body.
7
+ :::
8
+
9
+ ## Spans
10
+
11
+ [smallcaps text]{.smallcaps}
12
+
13
+ [underlined text]{.underline}
14
+
15
+ [highlighted text]{.mark}
16
+
17
+ ## Figure
18
+
19
+ ![Caption](elephant.png){fig-alt="Alt text"}
20
+
21
+ ## Div
22
+
23
+ ::: {.border}
24
+ Bordered div content.
25
+ :::
26
+
27
+ ## Raw content
28
+
29
+ ```{=html}
30
+ <strong>raw html</strong>
31
+ ```
32
+
33
+ Text `<span class="x">inline</span>`{=html} after.
34
+
35
+ ## Example lists
36
+
37
+ (@) My first example will be numbered (1).
38
+ (@) My second example will be numbered (2).
39
+
40
+ Explanation of examples.
41
+
42
+ (@) My third example will be numbered (3).
43
+
44
+ ## Roman list
45
+
46
+ i) Alpha
47
+ ii) Beta
48
+
49
+ ## Line block
50
+
51
+ | Line one
52
+ | preserved spaces
53
+ | Line three
54
+
55
+ ## Code fence attributes
56
+
57
+ ```{.python filename="run.py"}
58
+ print("hello")
59
+ ```
60
+
61
+ ## Diagram fences
62
+
63
+ ```{mermaid}
64
+ flowchart LR
65
+ A --> B
66
+ ```
67
+
68
+ ```{dot}
69
+ digraph { A -> B; }
70
+ ```
71
+
72
+ ## Shortcodes
73
+
74
+ Page 1
75
+
76
+ {{< pagebreak >}}
77
+
78
+ Page 2
79
+
80
+ Press {{< kbd $@3 >}} to save.
81
+
@@ -0,0 +1,5 @@
1
+ [smallcaps text]{.smallcaps}
2
+
3
+ [underlined text]{.underline}
4
+
5
+ [highlighted text]{.mark}
@@ -0,0 +1,47 @@
1
+ ## Quarto Callouts (`--quarto-callouts`)
2
+
3
+ ::: {.callout-note}
4
+ ## Note title
5
+
6
+ Note body
7
+ :::
8
+
9
+ ::: {.callout-abstract}
10
+ ## Abstract title
11
+
12
+ Abstract body
13
+ :::
14
+
15
+ ::: {.callout-info}
16
+ ## Info title
17
+
18
+ Info body
19
+ :::
20
+
21
+ ::: {.callout-tip}
22
+ ## Tip title
23
+
24
+ Tip body
25
+ :::
26
+
27
+ ::: {.callout-important}
28
+ ## Important title
29
+
30
+ Important body
31
+ :::
32
+
33
+ ::: {.callout-warning}
34
+ ## Warning title
35
+
36
+ Warning body
37
+ :::
38
+
39
+ ::: {.callout-caution}
40
+ ## Caution title
41
+
42
+ Caution body
43
+ :::
44
+
45
+ ::: {.callout-note title="Collapsed note" collapse="true"}
46
+ Collapsed body
47
+ :::
@@ -0,0 +1,192 @@
1
+ ### Network speed history chart (`waveform`)
2
+
3
+ Run Ookla speedtest CLI and convert results to waveform widgets. Requires [the Ookla version](https://www.speedtest.net/apps/cli), not the Homebrew version.
4
+
5
+ Add medium widgets with ids "download" and "upload" to use this, and edit the bin variables at the top to match your setup. This script can be run in the background using launchd.
6
+
7
+ Append each speed test result to a history file, then render the latest 20 samples:
8
+
9
+ ```bash
10
+ #!/usr/bin/env bash
11
+ # Example: Speedtest background widget updater
12
+ # runs speedtest, logs, and updates terminal-widget waveform widgets.
13
+ # Requires: /usr/local/bin/speedtest, /opt/homebrew/bin/terminal-widget
14
+ # Add medium widgets with ids "download" and "upload" to your Desktop/iPhone.
15
+ set -e
16
+
17
+ # Set paths to executables here
18
+ SPEEDTEST_BIN="/usr/local/bin/speedtest"
19
+ TERMINAL_WIDGET_BIN="/opt/homebrew/bin/terminal-widget"
20
+
21
+ LOGDIR="$HOME/logs"
22
+ LOGFILE="$LOGDIR/speed.csv"
23
+ mkdir -p "$LOGDIR"
24
+
25
+ WIDGET_COUNT=20
26
+
27
+ # Helper to get values from log
28
+ gather_log_values() {
29
+ local count="$1"
30
+ local col="$2"
31
+ tail -n "$count" "$LOGFILE" | awk -F, -v c="$col" '{print ($c==""?0:$c)}'
32
+ }
33
+
34
+ # Run speedtest and log result
35
+ run_speedtest() {
36
+ local jsonfile
37
+ jsonfile=$(mktemp)
38
+ "$SPEEDTEST_BIN" -f json -p no >"$jsonfile"
39
+ local status=$?
40
+ if [[ $status -ne 0 ]]; then
41
+ rm -f "$jsonfile"
42
+ exit $status
43
+ fi
44
+ read -r DOWNLOAD UPLOAD < <(python3 -c '
45
+ import json,sys
46
+ with open(sys.argv[1]) as f:
47
+ data=json.load(f)
48
+ def calc(b): return int(round(b/(1024*100)))
49
+ print(calc(data["download"]["bandwidth"]), calc(data["upload"]["bandwidth"]))
50
+ ' "$jsonfile")
51
+ rm -f "$jsonfile"
52
+ TIMESTAMP=$(date -Iseconds)
53
+ echo "$TIMESTAMP,$DOWNLOAD,$UPLOAD" >>"$LOGFILE"
54
+ tmpfile=$(mktemp)
55
+ tail -n 100 "$LOGFILE" >"$tmpfile"
56
+ mv "$tmpfile" "$LOGFILE"
57
+ }
58
+
59
+ # Update terminal-widget waveform widgets for both download and upload
60
+ update_widgets() {
61
+ DOWN_VALS=($(gather_log_values "$WIDGET_COUNT" 2))
62
+ UP_VALS=($(gather_log_values "$WIDGET_COUNT" 3))
63
+ printf "%s " "${DOWN_VALS[@]}" | sed 's/ $//' | "$TERMINAL_WIDGET_BIN" --target download --text "Download Speeds" --caption --chart - --chart-format waveform --bg ffffff --fg "rgb(237, 78, 195)" --text-color 222222 --caption-color 888888
64
+ printf "%s " "${UP_VALS[@]}" | sed 's/ $//' | "$TERMINAL_WIDGET_BIN" --target upload --text "Upload Speeds" --caption --chart - --chart-format waveform --bg ffffff --fg "rgb(78, 155, 237)" --text-color 222222 --caption-color 888888
65
+ }
66
+
67
+ # Main: always run speedtest and update widgets
68
+ run_speedtest
69
+ update_widgets
70
+ ```
71
+
72
+ Here's a luanchd example for the speedtest script. This assumes you've saved the script as speed-widget.sh, and you'll need to update your path in the ProgramArguments.
73
+
74
+ ```
75
+ <?xml version="1.0" encoding="UTF-8"?>
76
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
77
+ <plist version="1.0">
78
+ <dict>
79
+ <key>Label</key>
80
+ <string>com.brettterpstra.speed</string>
81
+ <key>ProgramArguments</key>
82
+ <array>
83
+ <string>/Users/ttscoff/scripts/speed-widget.sh</string>
84
+ </array>
85
+ <key>RunAtLoad</key>
86
+ <true/>
87
+ <key>StandardErrorPath</key>
88
+ <string>/Users/ttscoff/logs/com.brettterpstra.speedtest.err</string>
89
+ <key>StandardOutPath</key>
90
+ <string>/Users/ttscoff/logs/com.brettterpstra.speedtest.out</string>
91
+ <key>StartInterval</key>
92
+ <integer>900</integer>
93
+ </dict>
94
+ </plist>
95
+
96
+ ```
97
+ ### Network speed history chart (`waveform`)
98
+
99
+ Run Ookla speedtest CLI and convert results to waveform widgets. Requires [the Ookla version](https://www.speedtest.net/apps/cli), not the Homebrew version.
100
+
101
+ Add medium widgets with ids "download" and "upload" to use this, and edit the bin variables at the top to match your setup. This script can be run in the background using launchd.
102
+
103
+ Append each speed test result to a history file, then render the latest 20 samples:
104
+
105
+ ```bash
106
+ #!/usr/bin/env bash
107
+ # Example: Speedtest background widget updater
108
+ # runs speedtest, logs, and updates terminal-widget waveform widgets.
109
+ # Requires: /usr/local/bin/speedtest, /opt/homebrew/bin/terminal-widget
110
+ # Add medium widgets with ids "download" and "upload" to your Desktop/iPhone.
111
+ set -e
112
+
113
+ # Set paths to executables here
114
+ SPEEDTEST_BIN="/usr/local/bin/speedtest"
115
+ TERMINAL_WIDGET_BIN="/opt/homebrew/bin/terminal-widget"
116
+
117
+ LOGDIR="$HOME/logs"
118
+ LOGFILE="$LOGDIR/speed.csv"
119
+ mkdir -p "$LOGDIR"
120
+
121
+ WIDGET_COUNT=20
122
+
123
+ # Helper to get values from log
124
+ gather_log_values() {
125
+ local count="$1"
126
+ local col="$2"
127
+ tail -n "$count" "$LOGFILE" | awk -F, -v c="$col" '{print ($c==""?0:$c)}'
128
+ }
129
+
130
+ # Run speedtest and log result
131
+ run_speedtest() {
132
+ local jsonfile
133
+ jsonfile=$(mktemp)
134
+ "$SPEEDTEST_BIN" -f json -p no >"$jsonfile"
135
+ local status=$?
136
+ if [[ $status -ne 0 ]]; then
137
+ rm -f "$jsonfile"
138
+ exit $status
139
+ fi
140
+ read -r DOWNLOAD UPLOAD < <(python3 -c '
141
+ import json,sys
142
+ with open(sys.argv[1]) as f:
143
+ data=json.load(f)
144
+ def calc(b): return int(round(b/(1024*100)))
145
+ print(calc(data["download"]["bandwidth"]), calc(data["upload"]["bandwidth"]))
146
+ ' "$jsonfile")
147
+ rm -f "$jsonfile"
148
+ TIMESTAMP=$(date -Iseconds)
149
+ echo "$TIMESTAMP,$DOWNLOAD,$UPLOAD" >>"$LOGFILE"
150
+ tmpfile=$(mktemp)
151
+ tail -n 100 "$LOGFILE" >"$tmpfile"
152
+ mv "$tmpfile" "$LOGFILE"
153
+ }
154
+
155
+ # Update terminal-widget waveform widgets for both download and upload
156
+ update_widgets() {
157
+ DOWN_VALS=($(gather_log_values "$WIDGET_COUNT" 2))
158
+ UP_VALS=($(gather_log_values "$WIDGET_COUNT" 3))
159
+ printf "%s " "${DOWN_VALS[@]}" | sed 's/ $//' | "$TERMINAL_WIDGET_BIN" --target download --text "Download Speeds" --caption --chart - --chart-format waveform --bg ffffff --fg "rgb(237, 78, 195)" --text-color 222222 --caption-color 888888
160
+ printf "%s " "${UP_VALS[@]}" | sed 's/ $//' | "$TERMINAL_WIDGET_BIN" --target upload --text "Upload Speeds" --caption --chart - --chart-format waveform --bg ffffff --fg "rgb(78, 155, 237)" --text-color 222222 --caption-color 888888
161
+ }
162
+
163
+ # Main: always run speedtest and update widgets
164
+ run_speedtest
165
+ update_widgets
166
+ ```
167
+
168
+ Here's a luanchd example for the speedtest script. This assumes you've saved the script as speed-widget.sh, and you'll need to update your path in the ProgramArguments.
169
+
170
+ ```
171
+ <?xml version="1.0" encoding="UTF-8"?>
172
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
173
+ <plist version="1.0">
174
+ <dict>
175
+ <key>Label</key>
176
+ <string>com.brettterpstra.speed</string>
177
+ <key>ProgramArguments</key>
178
+ <array>
179
+ <string>/Users/ttscoff/scripts/speed-widget.sh</string>
180
+ </array>
181
+ <key>RunAtLoad</key>
182
+ <true/>
183
+ <key>StandardErrorPath</key>
184
+ <string>/Users/ttscoff/logs/com.brettterpstra.speedtest.err</string>
185
+ <key>StandardOutPath</key>
186
+ <string>/Users/ttscoff/logs/com.brettterpstra.speedtest.out</string>
187
+ <key>StartInterval</key>
188
+ <integer>900</integer>
189
+ </dict>
190
+ </plist>
191
+
192
+ ```
@@ -0,0 +1,37 @@
1
+ ## Fist example
2
+
3
+ +-------------------+-------------------+
4
+ | Grid Tables | Are Beautiful |
5
+ +===================+===================+
6
+ | | In code and docs |
7
+ | Easy to read | |
8
+ | | |
9
+ +-------------------+-------------------+
10
+ | Exceptionally flexible and powerful |
11
+ +-------+-------+-------+-------+-------+
12
+ | Col 1 | Col 2 | Col 3 | Col 4 | Col 5 |
13
+ +-------+-------+-------+-------+-------+
14
+
15
+ ## Second
16
+
17
+ +---------------------+----------+
18
+ | Property | Earth |
19
+ +=============+=======+==========+
20
+ | | min | -89.2 °C |
21
+ | Temperature +-------+----------+
22
+ | 1961-1990 | mean | 14 °C |
23
+ | +-------+----------+
24
+ | | min | 56.7 °C |
25
+ +-------------+-------+----------+
26
+
27
+ ## Markdown in cells
28
+
29
+ +---------------+---------------+--------------------+
30
+ | Fruit | Price | Advantages |
31
+ +===============+===============+====================+
32
+ | Bananas | $1.34 | - built-in wrapper |
33
+ | | | - bright color |
34
+ +---------------+---------------+--------------------+
35
+ | Oranges | $2.10 | - cures scurvy |
36
+ | | | - tasty |
37
+ +---------------+---------------+--------------------+
@@ -46,6 +46,22 @@ fi
46
46
 
47
47
  echo "paginate_cli_test: paginate: true config matches baseline output with APEX_PAGER=cat."
48
48
 
49
+ echo
50
+ echo "== Testing paginate: symbols via config metadata with APEX_PAGER=cat =="
51
+
52
+ CFG_SYM="$TMPDIR/config-symbols.yml"
53
+ cat >"$CFG_SYM" <<'YAML'
54
+ paginate: symbols
55
+ YAML
56
+
57
+ SYM_OUT=$(APEX_PAGER=cat "$APEX_BIN" --meta-file "$CFG_SYM" -t terminal <<< "$DOC")
58
+ if [[ "$BASE_OUT" != "$SYM_OUT" ]]; then
59
+ echo "paginate_cli_test: paginate: symbols output differs from baseline when using APEX_PAGER=cat" >&2
60
+ exit 1
61
+ fi
62
+
63
+ echo "paginate_cli_test: paginate: symbols config matches baseline output with APEX_PAGER=cat."
64
+
49
65
  echo
50
66
  echo "== Testing that --paginate is ignored for non-terminal formats =="
51
67