summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jakob/utils/org-mode.scm29
-rw-r--r--static/css/style.css29
2 files changed, 53 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)))
diff --git a/static/css/style.css b/static/css/style.css
index b4d8d4f..283a633 100644
--- a/static/css/style.css
+++ b/static/css/style.css
@@ -130,6 +130,31 @@ a:hover {
margin: 0
}
+.nav-list ul {
+ list-style-type: none;
+ padding-left: 12px;
+ margin: 4px 0
+}
+
+.nav-list ul li {
+ position: relative;
+ padding-left: 10px;
+ margin-bottom: 2px
+}
+
+.nav-list ul li::before {
+ content: "↳";
+ position: absolute;
+ left: -5px;
+ color: #999;
+ font-size: 8px
+}
+
+.nav-list ul li a {
+ font-weight: 400;
+ border-bottom: 1px dotted #ccc
+}
+
.nav-list li {
margin-bottom: 4px
}
@@ -578,6 +603,10 @@ a[href*="wikipedia.org"]::after {
line-height: 1.6
}
+.toc-module div.module-title-has-icon {
+ background-image: url('/static/image/icons-shadowless/book-open.png');
+}
+
@media (max-width:740px) {
.toc-module {
max-width: 100%