blob: 92f6339caf6e4719ac6c84908fb5c662dbb99ee1 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
;; -*- lexical-binding: t; -*-
;;; The Object Prototype
( 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 org-publish-project-alist )
( print success-report )
( ) ) ) ) )
;;; The Object Interface
( defun object-compose ( publication-instance )
( funcall ( plist-get publication-instance :object-compose ) ) )
( defun object-get-projects ( publication-instance data-projects )
( funcall
( plist-get publication-instance :object-get-projects ) data-projects ) )
( defun object-report ( publication-instance )
( 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 )
( import-data publication-instance project-data )
( export-project-alist publication-instance )
( ) )
|