Mercurial > urweb
comparison src/prepare.sml @ 2048:4d64af730e35
Differentiate between HTML and normal string literals
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Fri, 01 Aug 2014 15:44:17 -0400 |
parents | 98895243b5b6 |
children |
comparison
equal
deleted
inserted
replaced
2047:6be31671911b | 2048:4d64af730e35 |
---|---|
63 let | 63 let |
64 fun doOne t = | 64 fun doOne t = |
65 SOME (#p_blank (Settings.currentDbms ()) (n + 1, t) :: ss, n + 1) | 65 SOME (#p_blank (Settings.currentDbms ()) (n + 1, t) :: ss, n + 1) |
66 in | 66 in |
67 case #1 e of | 67 case #1 e of |
68 EPrim (Prim.String s) => | 68 EPrim (Prim.String (_, s)) => |
69 SOME (s :: ss, n) | 69 SOME (s :: ss, n) |
70 | EFfiApp ("Basis", "strcat", [(e1, _), (e2, _)]) => | 70 | EFfiApp ("Basis", "strcat", [(e1, _), (e2, _)]) => |
71 (case prepString' (e1, ss, n) of | 71 (case prepString' (e1, ss, n) of |
72 NONE => NONE | 72 NONE => NONE |
73 | SOME (ss, n) => prepString' (e2, ss, n)) | 73 | SOME (ss, n) => prepString' (e2, ss, n)) |
80 | EFfiApp ("Basis", "sqlifyChannel", [_]) => doOne Channel | 80 | EFfiApp ("Basis", "sqlifyChannel", [_]) => doOne Channel |
81 | EFfiApp ("Basis", "sqlifyClient", [_]) => doOne Client | 81 | EFfiApp ("Basis", "sqlifyClient", [_]) => doOne Client |
82 | 82 |
83 | ECase (e, | 83 | ECase (e, |
84 [((PNone _, _), | 84 [((PNone _, _), |
85 (EPrim (Prim.String "NULL"), _)), | 85 (EPrim (Prim.String (_, "NULL")), _)), |
86 ((PSome (_, (PVar _, _)), _), | 86 ((PSome (_, (PVar _, _)), _), |
87 (EFfiApp (m, x, [((ERel 0, _), _)]), _))], | 87 (EFfiApp (m, x, [((ERel 0, _), _)]), _))], |
88 {disc = t, ...}) => prepString' ((EFfiApp (m, x, [(e, t)]), #2 e), ss, n) | 88 {disc = t, ...}) => prepString' ((EFfiApp (m, x, [(e, t)]), #2 e), ss, n) |
89 | 89 |
90 | ECase (e, | 90 | ECase (e, |
91 [((PCon (_, PConFfi {mod = "Basis", con = "True", ...}, _), _), | 91 [((PCon (_, PConFfi {mod = "Basis", con = "True", ...}, _), _), |
92 (EPrim (Prim.String "TRUE"), _)), | 92 (EPrim (Prim.String (_, "TRUE")), _)), |
93 ((PCon (_, PConFfi {mod = "Basis", con = "False", ...}, _), _), | 93 ((PCon (_, PConFfi {mod = "Basis", con = "False", ...}, _), _), |
94 (EPrim (Prim.String "FALSE"), _))], | 94 (EPrim (Prim.String (_, "FALSE")), _))], |
95 _) => doOne Bool | 95 _) => doOne Bool |
96 | 96 |
97 | _ => NONE | 97 | _ => NONE |
98 end | 98 end |
99 in | 99 in |
266 | 266 |
267 | ENextval {seq, ...} => | 267 | ENextval {seq, ...} => |
268 if #supportsNextval (Settings.currentDbms ()) then | 268 if #supportsNextval (Settings.currentDbms ()) then |
269 let | 269 let |
270 val s = case seq of | 270 val s = case seq of |
271 (EPrim (Prim.String s), loc) => | 271 (EPrim (Prim.String (_, s)), loc) => |
272 (EPrim (Prim.String ("SELECT NEXTVAL('" ^ s ^ "')")), loc) | 272 (EPrim (Prim.String (Prim.Normal, "SELECT NEXTVAL('" ^ s ^ "')")), loc) |
273 | _ => | 273 | _ => |
274 let | 274 let |
275 val t = (TFfi ("Basis", "string"), loc) | 275 val t = (TFfi ("Basis", "string"), loc) |
276 val s' = (EFfiApp ("Basis", "strcat", [(seq, t), ((EPrim (Prim.String "')"), loc), t)]), loc) | 276 val s' = (EFfiApp ("Basis", "strcat", [(seq, t), ((EPrim (Prim.String (Prim.Normal, "')")), loc), t)]), loc) |
277 in | 277 in |
278 (EFfiApp ("Basis", "strcat", [((EPrim (Prim.String "SELECT NEXTVAL('"), loc), t), (s', t)]), loc) | 278 (EFfiApp ("Basis", "strcat", [((EPrim (Prim.String (Prim.Normal, "SELECT NEXTVAL('")), loc), t), (s', t)]), loc) |
279 end | 279 end |
280 in | 280 in |
281 case prepString (s, st) of | 281 case prepString (s, st) of |
282 NONE => (e, st) | 282 NONE => (e, st) |
283 | SOME (id, s, st) => | 283 | SOME (id, s, st) => |