summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2014-12-18 07:48:37 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2014-12-18 07:48:37 -0500
commitac637085e36c23d9963c8695e4a3294d49494b68 (patch)
tree0d19eed502bbe0d5e7e8c98e41316426441d5afd
parent9cd4c2ffdc38b34541b243c902a99150687cb16a (diff)
Fix XML syntax for closing <input> tags
-rw-r--r--src/monoize.sml4
-rw-r--r--tests/nestedInput.ur10
2 files changed, 13 insertions, 1 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index 6563da8b..392a05c1 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -3447,6 +3447,8 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
NONE => tagStart
| SOME extra => (L'.EStrcat (tagStart, extra), loc)
+ val firstWord = Substring.string o #1 o Substring.splitl (fn ch => not (Char.isSpace ch)) o Substring.full
+
fun normal () =
let
val (xml, fm) = monoExp (env, st, fm) xml
@@ -3457,7 +3459,7 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
in
((L'.EStrcat ((L'.EStrcat (tagStart, strH ">"), loc),
(L'.EStrcat (xml,
- strH (String.concat ["</", tag, ">"])), loc)),
+ strH (String.concat ["</", firstWord tag, ">"])), loc)),
loc),
fm)
end
diff --git a/tests/nestedInput.ur b/tests/nestedInput.ur
new file mode 100644
index 00000000..19a73e15
--- /dev/null
+++ b/tests/nestedInput.ur
@@ -0,0 +1,10 @@
+fun main () : transaction page =
+ let
+ fun handler _ = return <xml/>
+ in
+ return <xml><body>
+ <form>
+ <submit action={handler}>Uh oh!</submit>
+ </form>
+ </body></xml>
+ end