html中のフォームの自動処理を行う。
Gauche用なので、他の処理系では動きません。
第1引数がHTMLを文字列で渡す、第2引数がフォームのパラメータ。 パラメータはハッシュテーブルで渡す。 ハッシュテーブルのkeyとvalueは、共に文字列。 ただしcheckboxの場合は、valueが複数の文字列を持つリストでも良い。
#!/usr/bin/gosh (add-load-path ".") (use html-form-fill) (define form-param (make-hash-table 'string=?)) (hash-table-put! form-param "btn" "3") (hash-table-put! form-param "chk" (list "1" "4" "5")) (hash-table-put! form-param "select" "5") (hash-table-put! form-param "string" "test form") (hash-table-put! form-param "lines" "test\n\ntest") (display "Content-Type: text/html; charset=euc-jp\n\n") (display (html-form-fill-by-hash-table (call-with-input-file "tmpl.html" port->string) form-param))
上記の例は、PerlのHTML::FillInFormに倣ってハッシュテーブルでフォームのパラメータを渡している。 同じことを以下のようにSchemeのlet式に似た形式で書くこともできます。
#!/usr/bin/gosh (add-load-path ".") (use html-form-fill) (display "Content-Type: text/html; charset=euc-jp\n\n") (display (html-form-fill (call-with-input-file "tmpl.html" port->string) ( ("btn" "3") ("chk" (list "1" "4" "5")) ("select" "5") ("string" "test form") ("lines" "test\n\ntest"))))
html-form-fillはdefine-syntaxで定義されたマクロで、通常の関数とは異なる。 let式に似た形式で受けとったパラメータから、ハッシュテーブルを生成するよう展開され、生成したハッシュテーブルをhtml-form-fill-by-hash-table関数に渡している。
TODO