summaryrefslogtreecommitdiff
path: root/tissue/tissue.scm
diff options
context:
space:
mode:
authorArun Isaac2022-12-24 23:38:55 +0000
committerArun Isaac2022-12-25 23:32:15 +0000
commit6858a6b3d1236bbffaf32376699c3e193ffad324 (patch)
treedf2aed6d8f31d2a46cc3303c9887f444cb3a9d0a /tissue/tissue.scm
parentcfc072a57916c99d8304d6f478acd6860cb49d10 (diff)
downloadtissue-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.scm21
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))