diff options
author | Arun Isaac | 2022-12-24 23:38:55 +0000 |
---|---|---|
committer | Arun Isaac | 2022-12-25 23:32:15 +0000 |
commit | 6858a6b3d1236bbffaf32376699c3e193ffad324 (patch) | |
tree | df2aed6d8f31d2a46cc3303c9887f444cb3a9d0a /tissue/tissue.scm | |
parent | cfc072a57916c99d8304d6f478acd6860cb49d10 (diff) | |
download | tissue-6858a6b3d1236bbffaf32376699c3e193ffad324.tar.gz tissue-6858a6b3d1236bbffaf32376699c3e193ffad324.tar.lz tissue-6858a6b3d1236bbffaf32376699c3e193ffad324.zip |
web: Implement themes for the search page.
We factor out all display related code to a theming module, and
support powerful user customization of the theme thanks to generic
functions.
* tissue/commit.scm (document->sxml): Move to (tissue web themes
default).
* tissue/document.scm (document->sxml): Move to (tissue web themes
default).
* tissue/file-document.scm (document->sxml): Move to (tissue web
themes default).
* tissue/issue.scm (sanitize-string, document->sxml): Move to (tissue
web themes default).
* tissue/tissue.scm: Import (tissue web themes default).
(<tissue-configuration>)[web-search-renderer]: New field.
(tissue-configuration-web-search-renderer): New function.
(tissue-configuration): Accept web-search-renderer argument.
* tissue/web/server.scm: Import (oop goops) and (tissue web
themes). Do not import (tissue document).
(%css, make-search-page, search-handler): Move to (tissue web themes
default).
* tissue/web/themes.scm, tissue/web/themes/default.scm: New files.
* Makefile (sources): Add $(top_level_module_dir)/web/themes/*.scm.
Diffstat (limited to 'tissue/tissue.scm')
-rw-r--r-- | tissue/tissue.scm | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/tissue/tissue.scm b/tissue/tissue.scm index e42420a..2e901d2 100644 --- a/tissue/tissue.scm +++ b/tissue/tissue.scm @@ -22,23 +22,26 @@ #:use-module (srfi srfi-71) #:use-module (ice-9 match) #:use-module (tissue git) + #:use-module (tissue web themes default) #:export (tissue-configuration tissue-configuration? tissue-configuration-project tissue-configuration-aliases tissue-configuration-indexed-documents tissue-configuration-web-css + tissue-configuration-web-search-renderer tissue-configuration-web-files gemtext-files-in-directory)) (define-record-type <tissue-configuration> (make-tissue-configuration project aliases indexed-documents - web-css web-files) + web-css web-search-renderer web-files) tissue-configuration? (project delayed-tissue-configuration-project) (aliases delayed-tissue-configuration-aliases) (indexed-documents delayed-tissue-configuration-indexed-documents) (web-css delayed-tissue-configuration-web-css) + (web-search-renderer delayed-tissue-configuration-web-search-renderer) (web-files delayed-tissue-configuration-web-files)) (define tissue-configuration-project @@ -53,6 +56,9 @@ (define tissue-configuration-web-css (compose force delayed-tissue-configuration-web-css)) +(define tissue-configuration-web-search-renderer + (compose force delayed-tissue-configuration-web-search-renderer)) + (define tissue-configuration-web-files (compose force delayed-tissue-configuration-web-files)) @@ -96,7 +102,10 @@ directory they are in." #`(delay #,arg))) #'(args :::))))))))))))) -(define-lazy (tissue-configuration #:key project (aliases '()) (indexed-documents '()) web-css (web-files '())) +(define-lazy (tissue-configuration #:key project (aliases '()) (indexed-documents '()) + web-css + (web-search-renderer render-sxml) + (web-files '())) "Construct a <tissue-configuration> object. All arguments are evaluated lazily. @@ -115,6 +124,12 @@ documents to index. document root and must begin with a @code{\"/\"}. If it is @code{#f}, no stylesheet is used in the generated web pages. +@var{web-search-renderer} is a function that accepts two arguments---a +@code{<search-page>} object describing the search page and a +@code{<tissue-configuration>} object describing the project. It must +return the rendered SXML. + @var{web-files} is a list of @code{<file>} objects representing files to be written to the web output." - (make-tissue-configuration project aliases indexed-documents web-css web-files)) + (make-tissue-configuration project aliases indexed-documents + web-css web-search-renderer web-files)) |