formatting & adjustments

This commit is contained in:
Alan Daniels 2025-12-19 19:09:03 +11:00
parent 487bab0ad3
commit c10511a418
3 changed files with 135 additions and 190 deletions

View file

@ -1,9 +1,6 @@
(load (sb-ext:posix-getenv "ASDF"))
(asdf:load-system 'str)
(asdf:load-system 'alexandria)
(asdf:load-system 'cl-dates)
;; week is 7 days
;; 52 weeks in a year
;; 13 weeks in a quarter
@ -23,20 +20,21 @@
(defun week-number (date)
(mod (cl-dates:week-number date) 52))
(defun write-page-cycle (stream cl-date year-number quarter-number cycle-number)
(format stream "
(defun write-page-header (stream header-text)
(format stream "
#set page(
paper: \"a4\",
flipped: true,
header: [
Y~d
#h(1fr)
Q~d
#h(1fr)
C~d
],
margin: 0.5cm)
" year-number quarter-number cycle-number)
header: align(bottom)[~A],
margin: (
top: 1.5cm,
bottom: 0.5cm,
x: 0.5cm
))
" header-text)
)
(defun write-page-cycle (stream cl-date year-number quarter-number cycle-number)
(write-page-header stream (format nil "Y~d #h(1fr) Q~d #h(1fr) C~d" year-number quarter-number cycle-number))
(format stream "#table(
columns: (auto ,1fr, 1fr, 1fr, 1fr, 1fr, 1fr, 1fr),
rows: (auto, 1fr),
@ -51,35 +49,21 @@
(format stream ",[#h(1fr) ~d]" dd))))))
(format stream ")~%"))
(defun write-page-reset-week (stream cl-date year-number quarter-number)
(format stream "
#set page(
paper: \"a4\",
flipped: true,
header: [
Y~d
#h(1fr)
Q~d
#h(1fr)
Reset Week
],
margin: 0.5cm)
" year-number quarter-number)
(format stream "#table(
columns: (1fr, 1fr, 1fr),
rows: (1fr),
align(center)[_Going In_]
")
(loop for day from 0 to 6
do (let* ((week-day (+ cl-date day))
(day-of-week (cl-dates:dow->string (cl-dates:day-of-week week-day))))
(multiple-value-bind (yy mm dd) (cl-dates:date->ymd week-day)
(if (= 1 dd)
(format stream ",[~A #h(1fr) ~A]~%" day-of-week (cl-dates:month->string mm))
(format stream ",[~A #h(1fr) ~d]~%" day-of-week dd))
)))
(format stream ",align(center)[_Coming Out_]")
(format stream ")~%")
)
(write-page-header stream (format nil "Y~d #h(1fr) Q~d #h(1fr) Reset Week" year-number quarter-number))
(format stream "#table(
columns: (1fr, 1fr, 1fr),
rows: (1fr),
align(center)[_Going In_]")
(loop for day from 0 to 6
do (let* ((week-day (+ cl-date day))
(day-of-week (cl-dates:dow->string (cl-dates:day-of-week week-day))))
(multiple-value-bind (yy mm dd) (cl-dates:date->ymd week-day)
(if (= 1 dd)
(format stream ",[~A #h(1fr) ~A]~%" day-of-week (cl-dates:month->string mm))
(format stream ",[~A #h(1fr) ~d]~%" day-of-week dd))
)))
(format stream ",align(center)[_Coming Out_]")
(format stream ")~%"))
(defun write-pages-quarter (stream cl-date year-number quarter-number)
(loop for c from 0 to 2 do (write-page-cycle stream (add-weeks cl-date (* c 4)) year-number quarter-number (+ c 1)))
(write-page-reset-week stream (add-weeks cl-date 12) year-number quarter-number))