xml-conduit 1.1.0.4 → 1.1.0.5
raw patch · 2 files changed
+33/−28 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Text/XML/Stream/Parse.hs +32/−27
- xml-conduit.cabal +1/−1
Text/XML/Stream/Parse.hs view
@@ -153,11 +153,10 @@ | Just t <- lookup e es = ContentText t resolve c = c n' = if isClosed then n else l' : n- fixAttName level (name', val) = (tnameToName True level name', val)- begin = EventBeginElement (tnameToName False l' name)- $ map (fixAttName l')- $ as' []- end = EventEndElement $ tnameToName False l' name+ fixAttName (name', val) = (tnameToName True l' name', val)+ elementName = tnameToName False l' name+ begin = EventBeginElement elementName $ map fixAttName $ as' []+ end = EventEndElement elementName tokenToEvent es n (TokenEndElement name) = (es, n', [EventEndElement $ tnameToName False l name]) where@@ -200,9 +199,8 @@ getEncoding front bs' | S.length bs < 4 = Left (bs `S.append`)- | otherwise = do- let decode = CT.decode codec- in Right (bsOut, decode)+ | otherwise =+ Right (bsOut, CT.decode codec) where bs = front bs' bsOut = S.append (S.drop toDrop x) y@@ -282,7 +280,7 @@ await >>= maybe (return ()) push where push (position, token) =- mapM_ (yield . ((,) (Just position))) events >> go es' levels'+ mapM_ (yield . (,) (Just position)) events >> go es' levels' where (es', levels', events) = tokenToEvent es levels token @@ -302,10 +300,10 @@ parseToken de = (char '<' >> parseLt) <|> TokenContent <$> parseContent de False False where parseLt =- (char '?' >> parseInstr) <|>- (char '!' >> (parseComment <|> parseCdata <|> parseDoctype)) <|>+ parseBegin <|> (char '/' >> parseEnd) <|>- parseBegin+ (char '!' >> (parseComment <|> parseCdata <|> parseDoctype)) <|>+ (char '?' >> parseInstr) parseInstr = do name <- parseIdent if name == "xml"@@ -405,21 +403,15 @@ val <- squoted <|> dquoted return (key, val) where- squoted = do- char' '\''- manyTill (parseContent de False True) (char '\'')- dquoted = do- char' '"'- manyTill (parseContent de True False) (char '"')+ squoted = char '\'' *> manyTill (parseContent de False True) (char '\'')+ dquoted = char '"' *> manyTill (parseContent de True False) (char '"') parseName :: Parser TName-parseName = do- i1 <- parseIdent- mi2 <- (char ':' >> fmap Just parseIdent) <|> return Nothing- return $- case mi2 of- Nothing -> TName Nothing i1- Just i2 -> TName (Just i1) i2+parseName =+ name <$> parseIdent <*> A.optional (char ':' >> parseIdent)+ where+ name i1 Nothing = TName Nothing i1+ name i1 (Just i2) = TName (Just i1) i2 parseIdent :: Parser Text parseIdent =@@ -434,7 +426,7 @@ valid '"' = False valid '\'' = False valid '/' = False- valid c = not $ isSpace c+ valid c = not $ isXMLSpace c parseContent :: DecodeEntities -> Bool -- break on double quote@@ -458,7 +450,20 @@ valid _ = True skipSpace :: Parser ()-skipSpace = skipWhile isSpace+skipSpace = skipWhile isXMLSpace++-- | Determines whether a character is an XML white space. The list of+-- white spaces is given by+--+-- > S ::= (#x20 | #x9 | #xD | #xA)++--+-- in <http://www.w3.org/TR/2008/REC-xml-20081126/#sec-common-syn>.+isXMLSpace :: Char -> Bool+isXMLSpace ' ' = True+isXMLSpace '\t' = True+isXMLSpace '\r' = True+isXMLSpace '\n' = True+isXMLSpace _ = False newline :: Parser () newline = ((char '\r' >> char '\n') <|> char '\n') >> return ()
xml-conduit.cabal view
@@ -1,5 +1,5 @@ name: xml-conduit-version: 1.1.0.4+version: 1.1.0.5 license: BSD3 license-file: LICENSE author: Michael Snoyman <michaels@suite-sol.com>, Aristid Breitkreuz <aristidb@googlemail.com>