From e0cffe169199f745ae269fb294912dc95d0318d9 Mon Sep 17 00:00:00 2001 From: Marek Paśnikowski Date: Sat, 20 Jan 2024 13:21:09 +0100 Subject: Abstract away the user logic from the user interface --- www/build-site.el | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'www/build-site.el') diff --git a/www/build-site.el b/www/build-site.el index f2e8b7d..92f6339 100644 --- a/www/build-site.el +++ b/www/build-site.el @@ -20,7 +20,6 @@ :object-report ( lambda ( ) - ( print object-projects ) ( print org-publish-project-alist ) ( print success-report ) ( ) ) ) ) ) @@ -28,21 +27,28 @@ ;;; The Object Interface ( defun object-compose ( publication-instance ) - ( plist-get publication-instance :object-compose ) ) + ( funcall ( plist-get publication-instance :object-compose ) ) ) -( defun object-get-projects ( publication-instance ) - ( plist-get publication-instance :object-get-projects ) ) +( defun object-get-projects ( publication-instance data-projects ) + ( funcall + ( plist-get publication-instance :object-get-projects ) data-projects ) ) ( defun object-report ( publication-instance ) - ( plist-get publication-instance :object-report ) ) + ( funcall ( plist-get publication-instance :object-report ) ) ) ;;; The User Logic +( defun export-project-alist ( publication-instance ) + ( object-compose publication-instance ) + ( object-report publication-instance ) ) + +( defun import-data ( publication-instance project-data ) + ( let ( ( data-projects ( plist-get project-data :data-projects ) ) ) + ( object-get-projects publication-instance data-projects ) ) ) + ;;; The User Interface ( defun publish ( publication-instance &rest project-data ) - ( let ( ( data-projects ( plist-get project-data :data-projects ) ) ) - ( funcall ( object-get-projects publication-instance ) data-projects ) - ( funcall ( object-compose publication-instance ) ) - ( funcall ( object-report publication-instance ) ) - ( ) ) ) + ( import-data publication-instance project-data ) + ( export-project-alist publication-instance ) + ( ) ) -- cgit v1.2.3