diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-09-07 10:48:51 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-09-07 10:48:51 -0400 |
commit | e5636bb18cfe24bb8aa8dd0df64dfe781622371c (patch) | |
tree | 73dd7a8f6b59a3bf6347d879b7bdb46bc8747ed6 /src/mono_opt.sml | |
parent | dbb9192edae68feb230b5b231fcaf10fd68103e8 (diff) |
'show' type class; htmlification optimizations
Diffstat (limited to 'src/mono_opt.sml')
-rw-r--r-- | src/mono_opt.sml | 27 |
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 #"\"" => """ val urlifyInt = attrifyInt val urlifyFloat = attrifyFloat +val htmlifyInt = attrifyInt +val htmlifyFloat = attrifyFloat val htmlifyString = String.translate (fn ch => case ch of #"<" => "<" | #"&" => "&" @@ -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) => |