summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-11-01 14:26:20 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-11-01 14:26:20 -0500
commit70da89d392d5c9649157e53944db9a49d2149da3 (patch)
tree554465c7355d6fe0d310a16f4a7fa5a4e0675870 /src
parent7aaaa9a22a7eede386cda3cfbb3fc906619415d9 (diff)
Initial form for paper assignment
Diffstat (limited to 'src')
-rw-r--r--src/c/urweb.c31
-rw-r--r--src/jscomp.sml2
-rw-r--r--src/monoize.sml2
3 files changed, 34 insertions, 1 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c
index 3cf8fd47..8d63d174 100644
--- a/src/c/urweb.c
+++ b/src/c/urweb.c
@@ -1232,6 +1232,37 @@ uw_Basis_string uw_Basis_jsifyString(uw_context ctx, uw_Basis_string s) {
return r;
}
+uw_Basis_string uw_Basis_jsifyChar(uw_context ctx, uw_Basis_char c) {
+ char *r, *s2;
+
+ uw_check_heap(ctx, 6);
+
+ r = s2 = ctx->heap.front;
+ *s2++ = '"';
+
+ switch (c) {
+ case '"':
+ strcpy(s2, "\\\"");
+ s2 += 2;
+ break;
+ case '\\':
+ strcpy(s2, "\\\\");
+ s2 += 2;
+ break;
+ default:
+ if (isprint(c))
+ *s2++ = c;
+ else {
+ sprintf(s2, "\\%3o", c);
+ s2 += 4;
+ }
+ }
+
+ strcpy(s2, "\"");
+ ctx->heap.front = s2 + 2;
+ return r;
+}
+
uw_Basis_string uw_Basis_jsifyString_ws(uw_context ctx, uw_Basis_string s) {
char *r, *s2;
diff --git a/src/jscomp.sml b/src/jscomp.sml
index c6b8e7b9..8b946b39 100644
--- a/src/jscomp.sml
+++ b/src/jscomp.sml
@@ -122,6 +122,7 @@ fun process file =
end
| TFfi ("Basis", "string") => ((EFfiApp ("Basis", "jsifyString", [e]), loc), st)
+ | TFfi ("Basis", "char") => ((EFfiApp ("Basis", "jsifyChar", [e]), loc), st)
| TFfi ("Basis", "int") => ((EFfiApp ("Basis", "htmlifyInt", [e]), loc), st)
| TFfi ("Basis", "float") => ((EFfiApp ("Basis", "htmlifyFloat", [e]), loc), st)
| TFfi ("Basis", "channel") => ((EFfiApp ("Basis", "jsifyChannel", [e]), loc), st)
@@ -307,6 +308,7 @@ fun process file =
end
| TFfi ("Basis", "string") => ("uu(t[i++])", st)
+ | TFfi ("Basis", "char") => ("uu(t[i++])", st)
| TFfi ("Basis", "int") => ("parseInt(t[i++])", st)
| TFfi ("Basis", "float") => ("parseFloat(t[i++])", st)
| TFfi ("Basis", "channel") => ("(t[i++].length > 0 ? parseInt(t[i]) : null)", st)
diff --git a/src/monoize.sml b/src/monoize.sml
index 4e337388..3e3cc54f 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -3006,7 +3006,7 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
action
in
- ((L'.EStrcat ((L'.EStrcat ((L'.EPrim (Prim.String "<form method=\"post\""), loc),
+ ((L'.EStrcat ((L'.EStrcat ((L'.EPrim (Prim.String "<form method=\"get\""), loc),
(L'.EStrcat (action,
(L'.EPrim (Prim.String ">"), loc)), loc)), loc),
(L'.EStrcat (xml,