Simple database: Difference between revisions
Content added Content deleted
(→{{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: | Line 169: | ||
(main (argv))</lang> |
(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}}== |
=={{header|Pike}}== |