Simple database: Difference between revisions

→‎{{header|Common Lisp}}: add support for tags
(→‎{{header|Common Lisp}}: improve handling of series title)
(→‎{{header|Common Lisp}}: add support for tags)
Line 38:
<lang lisp>(defvar db nil)
 
(defun make-episode (&key series title episode date tags)
`((series . ,series) (episode . ,episode) (title . ,title) (date . ,date) (tags . ,tags)))
 
(defun print-episode (episode)
(format t " ~30a ~10a ~30aa~@[ ~70T(~{~a~^.~})~]~@[ (~{~a~^ ~})~]~%"
(cdr (assoc 'series episode)) (cdr (assoc 'episode episode))
(cdr (assoc 'title episode)) (cdr (assoc 'date episode)) (cdr (assoc 'tags episode))))
 
(defun print-episodes (episodes series)
Line 79:
(defun parse-date (date)
(mapcar #'parse-integer (split "." date)))
 
(defun parse-tags (tags)
(mapcar #'intern (split " " (string-upcase tags))))
 
(defun prompt-for-episode (&optional last)
Line 85 ⟶ 88:
:title (prompt-read "Title")
:episode (prompt-read "Episode")
:date (parse-date (prompt-read "Date watched"))))
:tags (parse-tags (prompt-read "Tags"))))
 
(defun save-db (filename database)
Anonymous user