Simple database: Difference between revisions

→‎{{header|Common Lisp}}: fix dump-db and remove unused functions
(→‎{{header|Common Lisp}}: fix dump-db and remove unused functions)
Line 37:
this code is also available under the GNU GPLv3.
 
<lang lisp>(defundefvar make-episodedb (series title episode date-watchednil)
 
(defun printmake-episode (series title episode date-watched)
`((series . ,series) (episode . ,episode) (title . ,title) (date . ,date-watched)))
 
(defun print-episode (episode)
(defvar db nil)
(format t " ~30a ~10a ~30a (~{~a~^.~})~%"
(format t "~30a ~10a ~30a (~{~a~^.~})~%" (cdr (assoc 'series episode)) (cdr (assoc 'episode episode)) (cdr (assoc 'title episode)) (cdr (assoc 'date episode))))
(cdr (assoc 'title episode)) (cdr (assoc 'date episode))))
 
(defun hasprint-series (name listseries)
(format t "~30a ~10a~%" (cdr (assoc 'series series)) (cdr (assoc 'status series)))
(mapcar #'print-episode (cdr (assoc 'episodes series))))
 
(defun dump-db (database)
(formatdolist t "~{~{~a:~10t~a~%~}~%~}"(series database))
(print-series (cdr series))))
 
(defun print-episode (episode)
(format t "~30a ~10a ~30a (~{~a~^.~})~%" (cdr (assoc 'series episode)) (cdr (assoc 'episode episode)) (cdr (assoc 'title episode)) (cdr (assoc 'date episode))))
 
(defun get-latest (database)
Line 86 ⟶ 93:
(prompt-read "Episode")
(parse-date (prompt-read "Date watched"))))
 
(defun add-episodes ()
(loop (push (prompt-for-episode) db)
(if (not (y-or-n-p "Another? [y/n]: ")) (return))))
 
(defun save-db (filename database)
Line 105 ⟶ 108:
(with-standard-io-syntax
(setf database (read in)))))
 
(defun has-series (name list)
(assoc name list :test #'equal))
 
(defun get-series (name list)
Line 115:
(cdr (assoc 'episodes (get-series series list))))
 
(defun watch-addnew-series (name status)
(cdar (push `(,name (series . ,name) (status . ,status) (episodes)) db)))
 
Line 121:
(or (get-series name database)
(if (y-or-n-p "Add new series? [y/n]: ")
(watch-addnew-series name 'active) nil)))
 
(defun watch-add ()
Anonymous user