Simple database: Difference between revisions

m
→‎{{header|Common Lisp}}: small improvements: prompt more and better defaults for make-episode, improve output formatting
m (→‎{{header|Common Lisp}}: small improvements: prompt more and better defaults for make-episode, improve output formatting)
Line 253:
(format stream (if *print-escape*
"#s(episode~@{~*~@[ :~1:*~a ~s~]~})"
"~&~3432< ~*~a~; ~*~@[~d-~]~*~d~> ~45<~*~@[~a ~]~*~@[(~a) ~]~;~*~@[(~a)~]~>~*~@[ (~{~a~^ ~})~]")
:series (episode-series ep)
:season (episode-season ep)
Line 324:
(when (not last)
(setf last (make-episode)))
(let* ((series (prompt-read "Series Title" (episode-series last)))
(make-episode
:series (title (prompt-read "Series Title" (episode-series last))
:title (season (parse-number (prompt-read "TitleSeason" (episode-season last))))
:season (episode (parse-number (prompt-read "SeasonEpisode" (episode-season last)))
:episode (parse-number (prompt-read "Episode" (1+if (oreq (episode-episodeseason last) 0)))season)
:part (parse-number (prompt-read "Part" (when1+ (episode-partepisode last))
(1+ (episode-part last) 1))))
:date (part (parse-datenumber (prompt-read "Date watchedPart" (format-ymd (get-current-date))))
(when (and (episode-part last)
:tags (parse-tags (prompt-read "Tags"))))
(or (eq (episode-season last) season)
(eq (episode-part last) 1)))
(1+ (episode-part last))))))
(date (parse-date (prompt-read "Date watched" (format-ymd (get-current-date)))))
: (tags (parse-tags (prompt-read "Tags"))))
(make-episode
:series series
:title title
:season season
:episode episode
:part part
:date date
:tags tags)))
 
(defun parse-integer-quietly (&rest args)
Line 375 ⟶ 388:
(format t "~30a ~a ~@[ (~{~a~^ ~})~]~%"
(car series) (series-description (cdr series)) (series-tags (cdr series)))
(format t "~{~& ~a~%~}" (series-episodes series)))
 
(defun watch-series (title)
Line 381 ⟶ 394:
(format t "~30a ~@[ (~{~a~^ ~})~]~%~@[ ~a~%~]" title (series-tags series)
(series-description series))
(format t "~{~& ~a~%~}" (reverse (series-episodes series)))))
 
(defun dump-db (database)
Line 388 ⟶ 401:
 
(defun watch-latest ()
(format t "~{~& ~a~%~}" (sort (get-latest *db*) #'compare-by-date)))
 
(defun watch-all ()
(format t "~{~& ~a~%~}" (sort (get-all *db*) #'compare-by-date)))
 
(defun watch-new-series (&key name description tags)
Line 411 ⟶ 424:
 
(defun watch-series-names ()
(format T "~{~& ~a~%~}"
(sort (mapcar #'car *db*)
(lambda (series1 series2)
Line 419 ⟶ 432:
(defun watch-load (dbfile)
(setf *db* (load-db dbfile)))
 
 
(defun argv ()
Anonymous user