git.iko.soy/typeable/html-parse
on master help sign in
Fixup
7773524Matthias Fischmann
Text/HTML/Parser.hs+18−8
@@ -97,29 +97,39 @@ tagOpen =
97 tryStartTag = do
97 tryStartTag = do
98 c <- peekChar'
98 c <- peekChar'
99 guard $ isAsciiUpper c || isAsciiLower c
99 guard $ isAsciiUpper c || isAsciiLower c
100− tagName
100+ tagNameOpen
101
101
102 other = do
102 other = do
103 return $ ContentChar '<'
103 return $ ContentChar '<'
104
104
105-- | /§8.2.4.9/: End tag open state
105-- | /§8.2.4.9/: End tag open state
106−-- TODO: This isn't right
107endTagOpen :: Parser Token
106endTagOpen :: Parser Token
108endTagOpen = do
107endTagOpen = do
109− name <- takeWhile $ notInClass "\x09\x0a\x0c />"
108+ tryEndTag
110− char '>'
109+ where
111− return $ TagClose name
110+ tryEndTag = do
111+ c <- peekChar'
112+ guard $ isAsciiUpper c || isAsciiLower c
113+ tagNameClose
112
114
113−-- | /§8.2.4.10/: Tag name state
115+-- | /§8.2.4.10/: Tag name state: the open case
114--
116--
115-- deviation: no lower-casing
117-- deviation: no lower-casing
116−tagName :: Parser Token
118+tagNameOpen :: Parser Token
117−tagName = do
119+tagNameOpen = do
118 tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
120 tag <- takeWhile $ notInClass "\x09\x0a\x0c />"
119 id $ (satisfy (inClass "\x09\x0a\x0c ") >> beforeAttrName tag [])
121 id $ (satisfy (inClass "\x09\x0a\x0c ") >> beforeAttrName tag [])
120 <|> (char '/' >> selfClosingStartTag tag [])
122 <|> (char '/' >> selfClosingStartTag tag [])
121 <|> (char '>' >> return (TagOpen tag []))
123 <|> (char '>' >> return (TagOpen tag []))
122
124
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+
123-- | /§8.2.4.43/: Self-closing start tag state
133-- | /§8.2.4.43/: Self-closing start tag state
124selfClosingStartTag :: TagName -> [Attr] -> Parser Token
134selfClosingStartTag :: TagName -> [Attr] -> Parser Token
125selfClosingStartTag tag attrs = do
135selfClosingStartTag tag attrs = do