Mercurial > urweb
annotate tests/div.ur @ 1941:9f3597979e98
Tweaking handling of database transactions
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Wed, 25 Dec 2013 13:11:43 -0500 |
parents | 15e0c935c91b |
children |
rev | line source |
---|---|
adam@1619 | 1 functor Make(M : sig |
adam@1619 | 2 type t |
adam@1619 | 3 val read_t : read t |
adam@1619 | 4 val show_t : show t |
adam@1619 | 5 val num_t : num t |
adam@1619 | 6 end) = struct |
adam@1619 | 7 fun calculate (n1, n2) = return <xml><body> |
adam@1619 | 8 {[readError n1 / readError n2 : M.t]}<br/> |
adam@1619 | 9 {[readError n1 % readError n2 : M.t]}<br/> |
adam@1619 | 10 </body></xml> |
adam@1619 | 11 |
adam@1619 | 12 fun main () = |
adam@1619 | 13 s1 <- source ""; |
adam@1619 | 14 s2 <- source ""; |
adam@1619 | 15 s3 <- source ""; |
adam@1619 | 16 s4 <- source ""; |
adam@1619 | 17 return <xml><body> |
adam@1619 | 18 <h1>Client-side</h1> |
adam@1619 | 19 |
adam@1619 | 20 <ctextbox source={s1}/> / <ctextbox source={s2}/> |
adam@1619 | 21 <button value="=" onclick={n1 <- get s1; |
adam@1619 | 22 n2 <- get s2; |
adam@1619 | 23 set s3 (show (readError n1 / readError n2 : M.t)); |
adam@1619 | 24 set s4 (show (readError n1 % readError n2 : M.t))}/> |
adam@1619 | 25 <dyn signal={n <- signal s3; return (txt n)}/>, |
adam@1619 | 26 <dyn signal={n <- signal s4; return (txt n)}/> |
adam@1619 | 27 |
adam@1619 | 28 <h1>Server-side</h1> |
adam@1619 | 29 |
adam@1619 | 30 <form> |
adam@1619 | 31 <textbox{#1}/> / <textbox{#2}/> |
adam@1619 | 32 <submit value="=" action={calculate}/> |
adam@1619 | 33 </form> |
adam@1619 | 34 </body></xml> |
adam@1619 | 35 end |
adam@1619 | 36 |
adam@1619 | 37 structure Int = Make(struct type t = int end) |
adam@1619 | 38 structure Float = Make(struct type t = float end) |
adam@1619 | 39 |
adam@1619 | 40 fun main () : transaction page = return <xml><body> |
adam@1619 | 41 <li><a link={Int.main ()}>Int</a></li> |
adam@1619 | 42 <li><a link={Float.main ()}>Float</a></li> |
adam@1619 | 43 </body></xml> |