@@ -105,13 +105,14 @@ anyHtmlTag = try $ do
107 tag <- many1 alphaNum
107 tag <- many1 alphaNum
108− attribs <- htmlAttributes
108+ attribs <- many htmlAttribute
110 ender <- option "" (string "/")
110 ender <- option "" (string "/")
111 let ender' = if null ender then "" else " /"
111 let ender' = if null ender then "" else " /"
114− return $ "<" ++ tag ++ attribs ++ ender' ++ ">"
114+ return $ "<" ++ tag ++
115+ concatMap (\(_, _, raw) -> (' ':raw)) attribs ++ ender' ++ ">"
116anyHtmlEndTag = try $ do
117anyHtmlEndTag = try $ do
117 char '<'
118 char '<'
@@ -141,19 +142,13 @@ quoted quoteChar = do
141 (many (noneOf [quoteChar]))
142 (many (noneOf [quoteChar]))
142 return (result, [quoteChar])
143 return (result, [quoteChar])
145− attrList <- many htmlAttribute
146− return $ concatMap (\(name, content, raw) -> raw) attrList
148htmlAttribute = htmlRegularAttribute <|> htmlMinimizedAttribute
145htmlAttribute = htmlRegularAttribute <|> htmlMinimizedAttribute
150-- minimized boolean attribute
147-- minimized boolean attribute
151htmlMinimizedAttribute = try $ do
148htmlMinimizedAttribute = try $ do
152 many1 space
149 many1 space
153 name <- many1 (choice [letter, oneOf ".-_:"])
150 name <- many1 (choice [letter, oneOf ".-_:"])
154− notFollowedBy (spaces >> char '=')
156− return (name, content, (" " ++ name))
151+ return (name, name, name)
158htmlRegularAttribute = try $ do
153htmlRegularAttribute = try $ do
159 many1 space
154 many1 space
@@ -167,7 +162,7 @@ htmlRegularAttribute = try $ do
167 a <- many (alphaNum <|> (oneOf "-._:"))
162 a <- many (alphaNum <|> (oneOf "-._:"))
168 return (a,"")) ]
163 return (a,"")) ]
169 return (name, content,
164 return (name, content,
170− (" " ++ name ++ "=" ++ quoteStr ++ content ++ quoteStr))
165+ (name ++ "=" ++ quoteStr ++ content ++ quoteStr))
172-- | Parse an end tag of type 'tag'
167-- | Parse an end tag of type 'tag'
173htmlEndTag tag = try $ do
168htmlEndTag tag = try $ do