aboutsummaryrefslogtreecommitdiffhomepage
path: root/demo/nested.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-11-04 09:33:35 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-11-04 09:33:35 -0500
commit627c93b9779f632bd8d90e7e2de26a5a9c197f08 (patch)
treee40f2a8767966c59e146479de02ec297958fc3c3 /demo/nested.ur
parent24483b49c81a6ac1c99cd28ca3505150b5999863 (diff)
Nested demo
Diffstat (limited to 'demo/nested.ur')
-rw-r--r--demo/nested.ur62
1 files changed, 62 insertions, 0 deletions
diff --git a/demo/nested.ur b/demo/nested.ur
new file mode 100644
index 00000000..31c9e1e8
--- /dev/null
+++ b/demo/nested.ur
@@ -0,0 +1,62 @@
+fun pageA () = return <xml>
+ <head>
+ <title>A</title>
+ </head>
+ <body>
+ <form>
+ <table>
+ <tr>
+ <td>Forename:</td>
+ <td><textbox{#Forename}/></td>
+ </tr>
+ <tr>
+ <td>Enter a Surname?</td>
+ <td><checkbox{#EnterSurname}/></td>
+ </tr>
+ </table>
+ <submit action={fromA} />
+ </form>
+ </body>
+</xml>
+
+and fromA r =
+ let
+ val forename = r.Forename
+
+ fun pageB () = return <xml>
+ <head>
+ <title>B</title>
+ </head>
+ <body>
+ <form>
+ Surname:
+ <textbox{#Surname}/>
+ <submit action={pageC'} />
+ </form>
+ <a link={pageA ()}>Previous</a>
+ </body>
+ </xml>
+
+ and pageC' r = pageC (Some r.Surname)
+
+ and pageC surname = return <xml>
+ <head>
+ <title>C</title>
+ </head>
+ <body>
+ <p>Hello {[forename]}{case surname of
+ None => <xml/>
+ | Some s => <xml> {[s]}</xml>}</p>
+ {case surname of
+ None => <xml><a link={pageA ()}>Previous</a></xml>
+ | Some _ => <xml><a link={pageB ()}>Previous</a></xml>}
+ </body>
+ </xml>
+ in
+ if r.EnterSurname then
+ pageB ()
+ else
+ pageC None
+ end
+
+val main = pageA