diff --git a/extra/modern/modern.factor b/extra/modern/modern.factor
index 600c27bbf4..026464b862 100644
--- a/extra/modern/modern.factor
+++ b/extra/modern/modern.factor
@@ -280,16 +280,19 @@ ERROR: colon-word-must-be-all-uppercase-or-lowercase n string word ;
[ ]
} cond ;
-: read-acute ( n string slice -- n' string acute )
+: read-acute-html ( n string slice -- n' string acute )
{
+ !
{ [ dup html-self-close? ] [
! do nothing special
] }
+ !
{ [ dup html-full-open? ] [
dup [
rest-slice
@@ -297,6 +300,7 @@ ERROR: colon-word-must-be-all-uppercase-or-lowercase n string word ;
"" ">" surround 1array lex-until unclip-last
] dip -rot 3array
] }
+ ! " "/>" } lex-until ] dip
@@ -309,13 +313,16 @@ ERROR: colon-word-must-be-all-uppercase-or-lowercase n string word ;
swap unclip-last 3array
] if
] }
-
+ !
{ [ dup html-close? ] [
! Do nothing
] }
[ [ slice-til-whitespace drop ] dip span-slices ]
} cond ;
+: read-acute ( n string slice -- n' string acute )
+ [ matching-section-delimiter 1array lex-until ] keep swap unclip-last 3array ;
+
! Words like append! and suffix! are allowed for now.
: read-exclamation ( n string slice -- n' string obj )
dup { [ "!" sequence= ] [ "#!" sequence= ] } 1||
@@ -424,7 +431,8 @@ DEFER: lex-factor-top*
! if we are in a FOO: and we hit a