SourceFourth » 履歴 » バージョン 2
Yuumi Yoshida, 2008-06-29 19:18
| 1 | 1 | Yuumi Yoshida | * リスト1 |
|---|---|---|---|
| 2 | 2 | Yuumi Yoshida | <pre> |
| 3 | 1 | Yuumi Yoshida | <html> |
| 4 | <body> |
||
| 5 | <h2>Asia League Ice Hockey</h2> |
||
| 6 | <table border="1"> |
||
| 7 | <%25 (for-each (lambda (row) %25> |
||
| 8 | <tr> |
||
| 9 | <td><%25= (getter row "no") %25></td> |
||
| 10 | <td><%25= (getter row "name") %25></td> |
||
| 11 | <td><%25= (getter row "g") %25></td> |
||
| 12 | </tr> |
||
| 13 | <%25 ) res) %25> |
||
| 14 | </table> |
||
| 15 | </body> |
||
| 16 | </html> |
||
| 17 | 2 | Yuumi Yoshida | </pre> |
| 18 | 1 | Yuumi Yoshida | |
| 19 | * リスト2 |
||
| 20 | 2 | Yuumi Yoshida | <pre> |
| 21 | 1 | Yuumi Yoshida | (define (render path params) |
| 22 | (let* ((conn (dbi-connect "dbi:sqlite3:alih.db")) |
||
| 23 | (pos (cgi-get-parameter "pos" params)) |
||
| 24 | (res |
||
| 25 | (if (and pos (rxmatch #/^[DFG]$/ pos)) |
||
| 26 | (dbi-do conn "SELECT no, name, g FROM player where pos=? order by no" |
||
| 27 | '() pos) |
||
| 28 | (dbi-do conn "SELECT no, name, g FROM player order by no"))) |
||
| 29 | (getter (relation-accessor res))) |
||
| 30 | (dbi-close conn) |
||
| 31 | (template "list.tmpl" res getter))) |
||
| 32 | |||
| 33 | (define-macro (template tmpl-file . args) |
||
| 34 | 2 | Yuumi Yoshida | @(templ-render ,tmpl-file (quote ,args) (list ,@args))) |
| 35 | 1 | Yuumi Yoshida | |
| 36 | (define (templ-render templ-file vars args) |
||
| 37 | (apply (eval (read-from-string (templ-func templ-file vars)) (interaction-environment)) |
||
| 38 | args)) |
||
| 39 | |||
| 40 | (define (templ-func templ-file vars) |
||
| 41 | (read-from-string |
||
| 42 | 2 | Yuumi Yoshida | #@"(lambda ,vars |
| 43 | 1 | Yuumi Yoshida | (let1 port (open-output-string) |
| 44 | ,(expand-templ (file->string templ-file)) |
||
| 45 | (get-output-string port)))")) |
||
| 46 | |||
| 47 | (define (expand-templ templ) |
||
| 48 | (cond ((#/(.*?)<%25=(.*?)%25>(.*)/ templ) |
||
| 49 | => (lambda(m) |
||
| 50 | 2 | Yuumi Yoshida | #@",(expand-templ (m 1)) (display ,(m 2) port) ,(expand-templ (m 3))")) |
| 51 | 1 | Yuumi Yoshida | ((#/(.*?)<%25(.*?)%25>(.*)/ templ) |
| 52 | => (lambda(m) |
||
| 53 | 2 | Yuumi Yoshida | #@",(expand-templ (m 1)) ,(m 2) ,(expand-templ (m 3))")) |
| 54 | 1 | Yuumi Yoshida | (else (format "(display ~s port)" templ)))) |
| 55 | 2 | Yuumi Yoshida | </pre> |