summaryrefslogtreecommitdiff
path: root/jakob/utils
diff options
context:
space:
mode:
Diffstat (limited to 'jakob/utils')
-rw-r--r--jakob/utils/org-mode.scm29
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)))