[chronometrist] simplify key-value display
This commit is contained in:
parent
dfacd9ded4
commit
6bcafade0e
64
init.org
64
init.org
|
@ -684,61 +684,19 @@ Return nil (and run `magit-status') if the user answers no."
|
|||
(seq-filter #'identity args))
|
||||
separator))
|
||||
|
||||
(defun contrapunctus-display-key-values-helper (objects)
|
||||
(cl-loop for object in objects
|
||||
collect (cl-typecase object
|
||||
(string object)
|
||||
(list (contrapunctus-display-key-values-helper object))
|
||||
(cons (format "%s %s" (car object) (cdr object)))
|
||||
(t "")) into strings
|
||||
finally return (mapconcat #'identity (seq-filter #'identity strings) ", ")))
|
||||
|
||||
(defun contrapunctus-display-key-values-function (plist)
|
||||
"Function used to print key-values in `chronometrist-details' buffers."
|
||||
(let ((key-values (chronometrist-plist-key-values plist)))
|
||||
(pcase (plist-get plist :name)
|
||||
("Programming"
|
||||
(-let [(&plist :project project
|
||||
:feature feature
|
||||
:component component) plist]
|
||||
(contrapunctus-objects-to-string " - " project component feature)))
|
||||
("Guitar"
|
||||
(-let* (((&plist :piece
|
||||
(&plist :name name
|
||||
:bwv bwv :opus opus
|
||||
:movement movement))
|
||||
plist)
|
||||
(catalog-name (cond (opus "Op.") (bwv "BWV ") (t "")))
|
||||
(catalog (if (or opus bwv)
|
||||
(format "(%s%s)" catalog-name (or opus bwv))))
|
||||
(movement (cond ((not movement) "")
|
||||
((chronometrist-plist-pp-alist-p movement)
|
||||
(contrapunctus-objects-to-string ", " " - " (mapcar #'cdr movement)))
|
||||
(t (format "- %s" (cdr movement))))))
|
||||
(contrapunctus-objects-to-string " " name catalog movement)))
|
||||
("Cooking"
|
||||
(let ((recipe (plist-get plist :recipe)))
|
||||
(cond ((null recipe) "")
|
||||
((chronometrist-plist-p recipe)
|
||||
(plist-get recipe :name))
|
||||
((listp recipe)
|
||||
(contrapunctus-objects-to-string ", " recipe))
|
||||
(t recipe))))
|
||||
("Video editing"
|
||||
(-let [(&plist :episode ep) plist]
|
||||
(contrapunctus-objects-to-string " " "episode" ep)))
|
||||
("Exercise"
|
||||
(-let* (((&plist :warm-up warm-up
|
||||
:syllabus syllabus
|
||||
:abdomen abdomen) plist)
|
||||
(key (cond (warm-up :warm-up)
|
||||
(syllabus :syllabus)
|
||||
(abdomen :abdomen)))
|
||||
(content (or warm-up syllabus abdomen))
|
||||
(key-string (format "%s - " (s-chop-prefix ":" (symbol-name key))))
|
||||
(content-string (if (chronometrist-plist-pp-alist-p content)
|
||||
(cl-loop for elt in content
|
||||
if (and (consp elt)
|
||||
(atom (car elt))
|
||||
(atom (cdr elt)))
|
||||
collect (format "%s %s" (car elt) (cdr elt))
|
||||
else collect (format "%s" elt)))))
|
||||
(concat key-string (contrapunctus-objects-to-string ", " content-string))))
|
||||
("Reading"
|
||||
(-let [(&plist :play play :book book) plist]
|
||||
(or play book)))
|
||||
(_ "Task not implemented"))))
|
||||
(let ((values (seq-remove #'keywordp (chronometrist-plist-key-values plist))))
|
||||
(contrapunctus-display-key-values-helper values)))
|
||||
|
||||
#+END_SRC
|
||||
|
||||
|
|
Loading…
Reference in New Issue