[GanameDemo: added a form page
flux@modeemi.fi**20090925071649] {
hunk ./ganameDemo.ml 20
+let o (cgi : Netcgi.cgi) fmt = Printf.ksprintf cgi#out_channel#output_string fmt
+
hunk ./ganameDemo.ml 27
-let operation_page (cgi : Netcgi.cgi) =
- let o s = Printf.ksprintf cgi#out_channel#output_string s in
- try
- let examples = List.map (fun s -> String.split s "=") (String.nsplit (cgi#argument "examples")#value ",") in
- let inputs = String.nsplit (cgi#argument "input")#value "," in
- o "
";
- let mapping = Genome.generate_mapping ~output:cgi#out_channel#output_string examples inputs in
- o "
";
- ( match mapping with
- | None -> o "Cannot produce mapping
"
- | Some mapping ->
- o "Mapping:";
- o "";
- List.iter (fun (s1, s2) -> o "%s | %s |
" (quote s1) (quote s2)) mapping;
- o "
";
+let perform_operations (cgi : Netcgi.cgi) examples inputs =
+ o cgi "";
+ let mapping = Genome.generate_mapping ~output:cgi#out_channel#output_string examples inputs in
+ o cgi "
";
+ ( match mapping with
+ | None -> o cgi "Cannot produce mapping
"
+ | Some mapping ->
+ o cgi "Mapping:";
+ o cgi "";
+ List.iter (fun (s1, s2) -> o cgi "%s | %s |
" (quote s1) (quote s2)) mapping;
+ o cgi "
";
+
+ );
+ o cgi ""
hunk ./ganameDemo.ml 42
- );
- o "";
- cgi#out_channel#commit_work ()
- with exn ->
- o "Error: %s" (Printexc.to_string exn);
- cgi#out_channel#commit_work ()
+let query_page (cgi : Netcgi.cgi) =
+ o cgi "\
+
+Ganame Demo Page
+
+"
hunk ./ganameDemo.ml 63
- if incr_operations_if_zero () then
- Std.finally decr_operations operation_page cgi
+ if cgi#argument_exists "input" && cgi#argument_exists "examples" then
+ if incr_operations_if_zero () then
+ Std.finally decr_operations
+ (fun () ->
+ try
+ let examples = List.map (fun s -> String.split s "=") (String.nsplit (cgi#argument "examples")#value "\r\n") in
+ let inputs = String.nsplit (cgi#argument "input")#value "\r\n" in
+ perform_operations cgi examples inputs;
+ with exn ->
+ o cgi "Error: %s" (Printexc.to_string exn);
+ ) ()
+ else
+ busy_page cgi
hunk ./ganameDemo.ml 77
- busy_page cgi
+ query_page cgi;
+ cgi#out_channel#commit_work ()
+
}