Anonymous user
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
(cdr (assoc name
(defun get-episode-list (series
(cdr (assoc 'episodes (get-series series
▲ (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))
(
((null (cadr argv)) (watch-latest))
((equal (cadr argv) "series") (watch-series-names))
(T (watch-series (cadr argv)))))
(main (argv))</lang>
|