Simple database: Difference between revisions

→‎{{header|Common Lisp}}: add functions to list series titles in last watched order as well as all episodes of a selected series
m (→‎{{header|Common Lisp}}: ooops, copy-paste error)
(→‎{{header|Common Lisp}}: add functions to list series titles in last watched order as well as all episodes of a selected series)
Line 69:
(defun compare-by-date (a b)
(compare-date (reverse (cdr (assoc 'date a))) (reverse (cdr (assoc 'date b)))))
 
(defun watch-list ()
(mapcar #'print-episode (sort (get-latest db) #'compare-by-date)))
 
(defun prompt-read (prompt)
Line 112 ⟶ 109:
(read in))))
 
(defun get-series (name listdatabase)
(cdr (assoc name listdatabase :test #'equal)))
 
(defun get-episode-list (series listdatabase)
(cdr (assoc 'episodes (get-series series listdatabase))))
 
(defun watch-listlatest ()
(mapcar #'print-episode (sort (get-latest db) #'compare-by-date)))
 
(defun watch-series (series)
(mapcar #'print-episode (reverse (get-episode-list series db))))
 
(defun watch-new-series (name status)
Line 133 ⟶ 136:
(rplacd (assoc 'episodes series)
(cons episode (get-episode-list series-name db))))))
 
(defun watch-series-names ()
(format T "~{~a~%~}"
(sort (mapcar #'car db)
#'(lambda (series1 series2)
(compare-by-date (cadr (assoc 'episodes (cdr (assoc series1 db))))
(cadr (assoc 'episodes (cdr (assoc series2 db)))))))))
 
(defun watch-load ()
Line 153 ⟶ 163:
(watch-load)
(cond ((equal (cadr argv) "add") (watch-add) (watch-save))
(T(equal (watch-listcadr argv) "latest") (watch-latest))
((null (cadr argv)) (watch-latest))
((equal (cadr argv) "series") (watch-series-names))
(T (watch-series (cadr argv)))))
 
(main (argv))</lang>
Anonymous user