git.iko.soy/typeable/html-parse
on master help sign in
Refactor.
4707642Matthias Fischmann
Text/HTML/Parser.hs+10−7
@@ -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 []))
115
113
116-- | /§8.2.4.10/: Tag name state: close case
114-- | /§8.2.4.10/: Tag name state: close case
117−--
118−-- deviation: no lower-casing
119tagNameClose :: Parser Token
115tagNameClose :: Parser Token
120tagNameClose = do
116tagNameClose = do
117+ tag <- tagName'
118+ char '>' >> return (TagClose tag)
119+
120+-- | /§8.2.4.10/: Tag name state: common code
121+--
122+-- deviation: no lower-casing
123+tagName' :: Parser Text
124+tagName' = do
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)
125
128
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