Simple database: Difference between revisions

Added PicoLisp
(→‎{{header|Common Lisp}}: add functions to list series titles in last watched order as well as all episodes of a selected series)
(Added PicoLisp)
Line 169:
 
(main (argv))</lang>
 
=={{header|PicoLisp}}==
The '[http://software-lab.de/doc/refR.html#rc rc]' resource file handling function is used typically for such tasks. It also takes care of proper locking and protection.
<lang PicoLisp>#!/usr/bin/pil
 
(de usage ()
(prinl
"Usage:^J\
sdb <file> add <title> <cat> <date> ... Add a new entry^J\
sdb <file> get <title> Retrieve an entry^J\
sdb <file> latest Print the latest entry^J\
sdb <file> categories Print the latest for each cat^J\
sdb <file> Print all, sorted by date" ) )
 
(de printEntry (E)
(apply println (cdddr E) (car E) (cadr E) (datStr (caddr E))) )
 
(ifn (setq *File (opt))
(usage)
(case (opt)
(add
(let (Ttl (opt) Cat (opt))
(if (strDat (opt))
(rc *File Ttl (cons Cat @ (argv)))
(prinl "Bad date") ) ) )
(get
(let Ttl (opt)
(when (rc *File Ttl)
(printEntry (cons Ttl @)) ) ) )
(latest
(printEntry (maxi caddr (in *File (read)))) )
(categories
(for Cat (by cadr group (in *File (read)))
(printEntry (maxi caddr Cat)) ) )
(NIL
(mapc printEntry (by caddr sort (in *File (read)))) )
(T (usage)) ) )
 
(bye)</lang>
Test:
<pre>$ sdb CDs add "Title 1" "Category 1" 2011-11-13
$ sdb CDs add "Title 2" "Category 2" 2011-11-12
$ sdb CDs add "Title 3" "Category 1" 2011-11-14 foo bar
$ sdb CDs add "Title 4" "Category 2" 2011-11-15 mumble
 
$ sdb CDs get "Title 3"
"Title 3" "Category 1" "2011-11-14" "foo" "bar"
 
$ sdb CDs latest
"Title 4" "Category 2" "2011-11-15" "mumble"
 
$ sdb CDs categories
"Title 4" "Category 2" "2011-11-15" "mumble"
"Title 3" "Category 1" "2011-11-14" "foo" "bar"
 
$ sdb CDs
"Title 2" "Category 2" "2011-11-12"
"Title 1" "Category 1" "2011-11-13"
"Title 3" "Category 1" "2011-11-14" "foo" "bar"
"Title 4" "Category 2" "2011-11-15" "mumble"</pre>
 
=={{header|Pike}}==
Anonymous user