;; -*- lexical-binding: t; -*- ( require 'ox-publish ) ( defun publication-object ( ) ( let ( ( object-projects ( list ) ) ( org-publish-project-alist ( list ) ) ( success-report "Build complete!" ) ) ( list :object-compose ( lambda ( ) ( setq org-publish-project-alist ( list object-projects ) ) ( ) ) :object-get-projects ( lambda ( data-projects ) ( setq object-projects ( append data-projects object-projects ) ) ( ) ) :object-report ( lambda ( ) ( print object-projects ) ( print org-publish-project-alist ) ( print success-report ) ( ) ) ) ) ) ( setq publication-instance ( publication-object ) ) ( setq object-compose ( plist-get publication-instance :object-compose ) ) ( setq object-projects ( plist-get publication-instance :object-get-projects ) ) ( setq object-report ( plist-get publication-instance :object-report ) ) ( defun publish ( &rest project-data ) ( let ( ( data-projects ( plist-get project-data :data-projects ) ) ) ( funcall object-projects data-projects ) ( funcall object-compose ) ( funcall object-report ) ( ) ) ) ( publish :data-projects ( list "marekpasnikowski.pl" ) )