aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/mono_opt.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-09-07 10:48:51 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-09-07 10:48:51 -0400
commite5636bb18cfe24bb8aa8dd0df64dfe781622371c (patch)
tree73dd7a8f6b59a3bf6347d879b7bdb46bc8747ed6 /src/mono_opt.sml
parentdbb9192edae68feb230b5b231fcaf10fd68103e8 (diff)
'show' type class; htmlification optimizations
Diffstat (limited to 'src/mono_opt.sml')
-rw-r--r--src/mono_opt.sml27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mono_opt.sml b/src/mono_opt.sml
index 8be532aa..510f4c56 100644
--- a/src/mono_opt.sml
+++ b/src/mono_opt.sml
@@ -55,6 +55,8 @@ val attrifyString = String.translate (fn #"\"" => "&quot;"
val urlifyInt = attrifyInt
val urlifyFloat = attrifyFloat
+val htmlifyInt = attrifyInt
+val htmlifyFloat = attrifyFloat
val htmlifyString = String.translate (fn ch => case ch of
#"<" => "&lt;"
| #"&" => "&amp;"
@@ -149,6 +151,31 @@ fun exp e =
ESeq ((EWrite (EPrim (Prim.String (s1 ^ s2)), loc), loc),
e)
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "intToString", [(EPrim (Prim.Int n), _)]), _)]) =>
+ EPrim (Prim.String (htmlifyInt n))
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "intToString", es), _)]) =>
+ EFfiApp ("Basis", "htmlifyInt", es)
+ | EWrite (EFfiApp ("Basis", "htmlifyInt", [e]), _) =>
+ EFfiApp ("Basis", "htmlifyInt_w", [e])
+
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "floatToString", [(EPrim (Prim.Float n), _)]), _)]) =>
+ EPrim (Prim.String (htmlifyFloat n))
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "floatToString", es), _)]) =>
+ EFfiApp ("Basis", "htmlifyFloat", es)
+ | EWrite (EFfiApp ("Basis", "htmlifyFloat", [e]), _) =>
+ EFfiApp ("Basis", "htmlifyFloat_w", [e])
+
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "boolToString",
+ [(ECon (Enum, PConFfi {con = "True", ...}, NONE), _)]), _)]) =>
+ EPrim (Prim.String "True")
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "boolToString",
+ [(ECon (Enum, PConFfi {con = "False", ...}, NONE), _)]), _)]) =>
+ EPrim (Prim.String "False")
+ | EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "boolToString", es), _)]) =>
+ EFfiApp ("Basis", "htmlifyBool", es)
+ | EWrite (EFfiApp ("Basis", "htmlifyBool", [e]), _) =>
+ EFfiApp ("Basis", "htmlifyBool_w", [e])
+
| EFfiApp ("Basis", "htmlifyString", [(EPrim (Prim.String s), _)]) =>
EPrim (Prim.String (htmlifyString s))
| EWrite (EFfiApp ("Basis", "htmlifyString", [(EPrim (Prim.String s), _)]), loc) =>