summaryrefslogtreecommitdiff
path: root/www/build-site.el
blob: f2e8b7d752aeae52f9c1d9e7358effd90b71b63c (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
;; -*- 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 object-projects )
        ( print org-publish-project-alist )
        ( print success-report )
        ( ) ) ) ) )

;;; The Object Interface

( defun object-compose ( publication-instance )
  ( plist-get publication-instance :object-compose ) )

( defun object-get-projects ( publication-instance )
  ( plist-get publication-instance :object-get-projects ) )

( defun object-report ( publication-instance )
  ( plist-get publication-instance :object-report ) )

;;; The User Logic

;;; 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 ) )
    ( ) ) )