From 70da89d392d5c9649157e53944db9a49d2149da3 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 1 Nov 2009 14:26:20 -0500 Subject: Initial form for paper assignment --- src/c/urweb.c | 31 +++++++++++++++++++++++++++++++ src/jscomp.sml | 2 ++ src/monoize.sml | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) (limited to 'src') 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 "
"), loc)), loc)), loc), (L'.EStrcat (xml, -- cgit v1.2.3