Gaucheのtext.html-liteをポーティングできた
私がRubyで書いているLisp方言、 [Nendo]について。
Gaucheから持ってきた text.html-lite が動いた。感動! (Gaucheのリファレンスマニュアル: Gauche ユーザリファレンス: 11.36 text.html-lite - シンプルなHTMLドキュメントの構築) いざポーティングしようとすると、[Nendo]にnullリスト関連のバグがたくさん見つかったが。 ついでに text.tree も必要だったのでポーティングした。
しかし、まだ[Nendo]からRubyのHashにアクセスできないので、まだちゃんとしたCGIスクリプトが書けない… 現状でできる範囲のサンプルはこんな感じ。
#!/bin/sh
:; #-*- mode: nendo; syntax: scheme -*-;;
:; exec /usr/local/bin/nendo $0 $*
(load-library "text/html-lite")
(load-library "text/tree")
(require "cgi")
(define (params-list-page cgi)
`(
,(html-doctype)
,(html:head
(html:title "CGI parameter list"))
,(html:body
(html:h1 "CGI parameter list")
(html:table :border 1
(for-each
(lambda (x)
(html:tr
(html:td x)))
(to-list (cgi.params.keys)))))))
(let1 cgi (CGI.new)
(cgi.print
(cgi.header))
(cgi.print
(tree->string
(params-list-page cgi))))
Rubyの大量のライブラリ(gem)が使えるとなったら、いろいろ試したいことがある。 例えば、Excelファイルをアップロード/ダウンロードするとか、ImageMagickで画像を生成して返すとか。 やっと、S式でRubyプログラミングの雰囲気が出てきたぞ。