diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2026-02-14 10:36:06 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2026-02-14 10:36:06 -0500 |
| commit | 803f046285e14c1f2be786b5d4a23574f8a47f75 (patch) | |
| tree | 0a322731687fb72ff8bbfe8dd6692b16e4011bc3 /jakob | |
| parent | a6352d249fd6a705aad002717f02fb23b20e7bb0 (diff) | |
Stylize table of contents
Diffstat (limited to 'jakob')
| -rw-r--r-- | jakob/utils/org-mode.scm | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/jakob/utils/org-mode.scm b/jakob/utils/org-mode.scm index 648f9d6..f5ac800 100644 --- a/jakob/utils/org-mode.scm +++ b/jakob/utils/org-mode.scm @@ -194,21 +194,40 @@ daemon. Assumes that FORM does not write to `standard-output'." ;;; Rewriting engine (define (rewrite-org-mode tree) - (define filters (list rewrite-code-blocks-as-figures)) + (define filters (list rewrite-code-blocks-as-figures + rewrite-table-of-contents)) (fold (lambda (f value) (f value)) tree filters)) (define (rewrite-code-blocks-as-figures tree) (match tree (('div ('@ ('class "org-src-container")) "\n" - ('pre ('@ ('class class)) - code ...) + ('pre ('@ ('class class)) + code ...) rest ...) `(figure (@ (class "code-container")) (figcaption (@ (class "code-header")) ;; (span (@ (class "code-filename"))) (span (@ (class "code-lang")) ,class)) - (pre (code ,code))) - ) + (pre (code ,code)))) ((xs ...) (map rewrite-code-blocks-as-figures xs)) (elem elem))) + +(define (rewrite-table-of-contents tree) + (match tree + (('nav ('@ ('role "doc-toc") ('id "table-of-contents")) "\n" + ('h2 title) "\n" + ('div ('@ ('role "doc-toc") ('id "text-table-of-contents")) "\n" + (ul rest ...) "\n") + _ ...) + `(nav (@ (id "table-of-contents") + (class "module toc-module") + (aria-label "Table of Contents") + (role "doc-toc")) + (div (@ (class "module-title module-title-has-icon")) + ,title) + (ul (@ (class "nav-list")) + ,@rest))) + ((xs ...) + (map rewrite-table-of-contents xs)) + (elem elem))) |