diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2026-02-14 10:07:36 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2026-02-14 10:07:36 -0500 |
| commit | f62a80e1a10970376973a2ee5b016a814bcd2039 (patch) | |
| tree | 90a224a7adfa4d78c76651cf3db9ae8212104637 /jakob/utils | |
| parent | 58405b074faec581cf7f74acff1397193e04138c (diff) | |
Rewrite code blocks
Diffstat (limited to 'jakob/utils')
| -rw-r--r-- | jakob/utils/org-mode.scm | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/jakob/utils/org-mode.scm b/jakob/utils/org-mode.scm index fdaaa06..648f9d6 100644 --- a/jakob/utils/org-mode.scm +++ b/jakob/utils/org-mode.scm @@ -31,6 +31,7 @@ #:use-module (ice-9 textual-ports) #:use-module (jakob utils) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (srfi-197) @@ -182,8 +183,32 @@ daemon. Assumes that FORM does not write to `standard-output'." (%cache-directory))) ((not (file-exists? (%cache-directory))) (mkdir (%cache-directory))))) - (if (and (%cache-directory) - (file-exists? (metadata-file-name hash)) - (file-exists? (sxml-file-name hash))) - (read-org-mode-file-cached hash) - (read-org-mode-file-fresh hash file-name))) + (let-values (((metadata sxml) + (if (and (%cache-directory) + (file-exists? (metadata-file-name hash)) + (file-exists? (sxml-file-name hash))) + (read-org-mode-file-cached hash) + (read-org-mode-file-fresh hash file-name)))) + (values metadata (rewrite-org-mode sxml)))) + +;;; Rewriting engine + +(define (rewrite-org-mode tree) + (define filters (list rewrite-code-blocks-as-figures)) + (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 ...) + rest ...) + `(figure (@ (class "code-container")) + (figcaption (@ (class "code-header")) + ;; (span (@ (class "code-filename"))) + (span (@ (class "code-lang")) ,class)) + (pre (code ,code))) + ) + ((xs ...) + (map rewrite-code-blocks-as-figures xs)) + (elem elem))) |