From 3304bdae6d3df5ec0dd5b737743cbd2109d50423 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Sun, 25 Dec 2022 00:49:24 +0000 Subject: web: themes: Add functional way to define methods. * tissue/web/themes.scm: Import (srfi srfi-26). (add-methods): New function. --- tissue/web/themes.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'tissue') diff --git a/tissue/web/themes.scm b/tissue/web/themes.scm index f1a107c..21de09b 100644 --- a/tissue/web/themes.scm +++ b/tissue/web/themes.scm @@ -17,6 +17,7 @@ ;;; along with tissue. If not, see . (define-module (tissue web themes) + #:use-module (srfi srfi-26) #:use-module (oop goops) #:export ( search-page-uri @@ -27,7 +28,8 @@ search-page-matched-open-issues search-page-matched-closed-issues search-page-matched-documents - search-page-matched-commits)) + search-page-matched-commits + add-methods)) (define-class () (uri #:getter search-page-uri #:init-keyword #:uri) @@ -39,3 +41,12 @@ (matched-closed-issues #:getter search-page-matched-closed-issues #:init-keyword #:matched-closed-issues) (matched-documents #:getter search-page-matched-documents #:init-keyword #:matched-documents) (matched-commits #:getter search-page-matched-commits #:init-keyword #:matched-commits)) + +(define (add-methods generic . methods) + "Add @var{methods} to @var{generic} function. This is purely +functional and operates on a copy of @var{generic}. It does not mutate +@var{generic}." + (let ((clone (shallow-clone generic))) + (for-each (cut add-method! generic <>) + methods) + clone)) -- cgit v1.2.3