git.iko.soy/typeable/html-parse
on master help sign in
Fixup
commit77735245de164f68b0518f04560acaf4d5e8a30b authorMatthias Fischmann <mf@zerobuzz.net> dateSat 31 Dec 2016, 09:45 (10 years ago) parent0d5475f
1 file changed+18−8
Text/HTML/Parser.hs+18−8
Text/HTML/Parser.hs+18−8
@@ -97,29 +97,39 @@ tagOpen =
9797 tryStartTag = do
9898 c <- peekChar'
9999 guard $ isAsciiUpper c || isAsciiLower c
100− tagName
100+ tagNameOpen
101101
102102 other = do
103103 return $ ContentChar '<'
104104
105105-- | /§8.2.4.9/: End tag open state
106−-- TODO: This isn't right
107106endTagOpen :: Parser Token
108107endTagOpen = do
109− name <- takeWhile $ notInClass "\x09\x0a\x0c />"
110− char '>'
111− return $ TagClose name
108+ tryEndTag
109+ where
110+ tryEndTag = do
111+ c <- peekChar'
112+ guard $ isAsciiUpper c || isAsciiLower c
113+ tagNameClose
112114
113−-- | /§8.2.4.10/: Tag name state
115+-- | /§8.2.4.10/: Tag name state: the open case
114116--
115117-- deviation: no lower-casing
116−tagName :: Parser Token
117−tagName = do
118+tagNameOpen :: Parser Token
119+tagNameOpen = do
118120 tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
119121 id $ (satisfy (inClass "\x09\x0a\x0c ") >> beforeAttrName tag [])
120122 <|> (char '/' >> selfClosingStartTag tag [])
121123 <|> (char '>' >> return (TagOpen tag []))
122124
125+-- | /§8.2.4.10/: Tag name state: close case
126+--
127+-- deviation: no lower-casing
128+tagNameClose :: Parser Token
129+tagNameClose = do
130+ tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
131+ char '>' >> return (TagClose tag)
132+
123133-- | /§8.2.4.43/: Self-closing start tag state
124134selfClosingStartTag :: TagName -> [Attr] -> Parser Token
125135selfClosingStartTag tag attrs = do