@@ -106,22 +106,25 @@ endTagOpen = tagNameClose
106-- deviation: no lower-casing
106-- deviation: no lower-casing
107tagNameOpen :: Parser Token
107tagNameOpen :: Parser Token
108tagNameOpen = do
108tagNameOpen = do
109− c <- peekChar'
109+ tag <- tagName'
110− guard $ isAsciiUpper c || isAsciiLower c
111− tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
112 id $ (satisfy (inClass "\x09\x0a\x0c ") >> beforeAttrName tag [])
110 id $ (satisfy (inClass "\x09\x0a\x0c ") >> beforeAttrName tag [])
113 <|> (char '/' >> selfClosingStartTag tag [])
111 <|> (char '/' >> selfClosingStartTag tag [])
114 <|> (char '>' >> return (TagOpen tag []))
112 <|> (char '>' >> return (TagOpen tag []))
116-- | /§8.2.4.10/: Tag name state: close case
114-- | /§8.2.4.10/: Tag name state: close case
118−-- deviation: no lower-casing
119tagNameClose :: Parser Token
115tagNameClose :: Parser Token
120tagNameClose = do
116tagNameClose = do
118+ char '>' >> return (TagClose tag)
120+-- | /§8.2.4.10/: Tag name state: common code
122+-- deviation: no lower-casing
123+tagName' :: Parser Text
121 c <- peekChar'
125 c <- peekChar'
122 guard $ isAsciiUpper c || isAsciiLower c
126 guard $ isAsciiUpper c || isAsciiLower c
123− tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
127+ takeWhile $ notInClass "\x09\x0a\x0c />"
124− char '>' >> return (TagClose tag)
126-- | /§8.2.4.43/: Self-closing start tag state
129-- | /§8.2.4.43/: Self-closing start tag state
127selfClosingStartTag :: TagName -> [Attr] -> Parser Token
130selfClosingStartTag :: TagName -> [Attr] -> Parser Token