flist.scm
30分シリーズ、15。ファイルリスト生成プログラム。
常にネタ切れ感に苛まれているのですが・・・。
今回は、今で書いたプログラムの一覧を生成するプログラム。作ってから思ったけど、はてな記法で生成するべきだったかも。
$ gosh flist.scm *.{pl,py,rb,scm} <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head><link rel="STYLESHEET" href="flist.css" type="text/css" /></head ><body><table><tr><td><a href="rpn.pl">rpn.pl</a ></td ><td><a href="http://d.hatena.ne.jp/mzp/20070416/"><img src="hatena.png" /></a ></td ></tr ><tr><td><a href="unlambda.py">unlambda.py</a ></td ......
#!/opt/local/bin/gosh ;; file list generator (use srfi-19) (use file.util) (use text.html-lite) (use text.tree) (define (sort-file . files) (sort files (lambda (lhs rhs) (< (file-mtime lhs) (file-mtime rhs))))) (define (time->date time) (time-utc->date (make-time 'time-utc 0 time))) (define (date->hatena date) (date->string date "http://d.hatena.ne.jp/mzp/~Y~m~d/")) (define (files->html . files) (cons (html-doctype) (html:html (html:head (html:link :rel "STYLESHEET" :href "flist.css" :type "text/css")) (html:body (html:table (map (lambda(item) (html:tr (html:td (html:a :href item item)) (html:td (html:a :href (date->hatena (time->date (file-mtime item))) (html:img :src "hatena.png"))))) files)))))) (define (main args) (write-tree (apply files->html (apply sort-file (cdr args)))))
- HTMLが美意識に反する。まあ、どうしようもないことなんだけれど
- たしかに、直でHTMLを書くよりtext.html-liteを使ったほうが楽
- file-mtimeはUNIX時間を返す。それを、timeオブジェクトに変換してから、dateオブジェクトに変換する。無駄じゃね?
- 要約が欲しいところだけど、どうしようもない。今日からコメントを入れることにしよう
- 生成したHTMLがやたら殺風景
- 無駄にapplyしすぎ