packages feed

libxml-enumerator 0.3 → 0.4

raw patch · 2 files changed

+25/−33 lines, 2 filesdep ~xml-typesPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: xml-types

API changes (from Hackage documentation)

- Text.XML.LibXML.Enumerator: EventBeginDocument :: Event
- Text.XML.LibXML.Enumerator: EventBeginElement :: Name -> [Attribute] -> Event
- Text.XML.LibXML.Enumerator: EventCharacters :: Text -> Event
- Text.XML.LibXML.Enumerator: EventComment :: Text -> Event
- Text.XML.LibXML.Enumerator: EventEndDocument :: Event
- Text.XML.LibXML.Enumerator: EventEndElement :: Name -> Event
- Text.XML.LibXML.Enumerator: EventInstruction :: Instruction -> Event
- Text.XML.LibXML.Enumerator: data Event
- Text.XML.LibXML.Enumerator: instance Eq Event
- Text.XML.LibXML.Enumerator: instance Show Event

Files

Text/XML/LibXML/Enumerator.hs view
@@ -9,8 +9,7 @@ -- ----------------------------------------------------------------------------- module Text.XML.LibXML.Enumerator-	( Event (..)-	, parseBytesIO+	( parseBytesIO 	, parseTextIO 	, parseBytesST 	, parseTextST@@ -19,6 +18,7 @@ import qualified Data.Enumerator as E import Data.Enumerator ((>>==)) import qualified Data.Text as T+import qualified Data.Text.Lazy as TL import qualified Data.XML.Types as X import qualified Text.XML.LibXML.SAX as SAX @@ -29,17 +29,7 @@ import qualified Data.STRef as ST import qualified Data.IORef as IO -data Event-	= EventBeginDocument-	| EventEndDocument-	| EventBeginElement X.Name [X.Attribute]-	| EventEndElement X.Name-	| EventCharacters T.Text-	| EventComment T.Text-	| EventInstruction X.Instruction-	deriving (Show, Eq)--newParserIO :: Maybe T.Text -> IO (SAX.Parser IO, IO.IORef [Event], IO.IORef (Maybe T.Text))+newParserIO :: Maybe T.Text -> IO (SAX.Parser IO, IO.IORef [X.Event], IO.IORef (Maybe T.Text)) newParserIO name = do 	errRef <- IO.newIORef Nothing 	p <- SAX.newParserIO (\msg -> IO.writeIORef errRef (Just msg)) name@@ -48,7 +38,7 @@ 	setCallbacks p addEvent 	return (p, eventRef, errRef) -newParserST :: Maybe T.Text -> ST s (SAX.Parser (ST s), ST.STRef s [Event], ST.STRef s (Maybe T.Text))+newParserST :: Maybe T.Text -> ST s (SAX.Parser (ST s), ST.STRef s [X.Event], ST.STRef s (Maybe T.Text)) newParserST name = do 	errRef <- ST.newSTRef Nothing 	p <- SAX.newParserST (\msg -> ST.writeSTRef errRef (Just msg)) name@@ -57,28 +47,30 @@ 	setCallbacks p addEvent 	return (p, eventRef, errRef) -setCallbacks :: Monad m => SAX.Parser m -> (Event -> m Bool) -> m ()+setCallbacks :: Monad m => SAX.Parser m -> (X.Event -> m Bool) -> m () setCallbacks p addEvent = do 	let set cb st = SAX.setCallback p cb st 	-	set SAX.parsedBeginDocument (addEvent EventBeginDocument)-	set SAX.parsedEndDocument (addEvent EventEndDocument)-	set SAX.parsedBeginElement ((addEvent .) . EventBeginElement)-	set SAX.parsedEndElement (addEvent . EventEndElement)-	set SAX.parsedCharacters (addEvent . EventCharacters)-	set SAX.parsedComment (addEvent . EventComment)-	set SAX.parsedInstruction (addEvent . EventInstruction)+	let fromStrict txt = TL.fromChunks [txt]+	+	set SAX.parsedBeginDocument (addEvent X.EventBeginDocument)+	set SAX.parsedEndDocument (addEvent X.EventEndDocument)+	set SAX.parsedBeginElement ((addEvent .) . X.EventBeginElement)+	set SAX.parsedEndElement (addEvent . X.EventEndElement)+	set SAX.parsedCharacters (addEvent . X.EventContent . X.ContentText . fromStrict)+	set SAX.parsedComment (addEvent . X.EventComment . fromStrict)+	set SAX.parsedInstruction (addEvent . X.EventInstruction) -parseBytesIO :: MonadIO m => Maybe T.Text -> E.Enumeratee B.ByteString Event m b+parseBytesIO :: MonadIO m => Maybe T.Text -> E.Enumeratee B.ByteString X.Event m b parseBytesIO = parseIO SAX.parseBytes -parseTextIO :: MonadIO m => Maybe T.Text -> E.Enumeratee T.Text Event m b+parseTextIO :: MonadIO m => Maybe T.Text -> E.Enumeratee T.Text X.Event m b parseTextIO = parseIO SAX.parseText  parseIO :: MonadIO m         => (SAX.Parser IO -> a -> IO ())         -> Maybe T.Text-        -> E.Enumeratee a Event m b+        -> E.Enumeratee a X.Event m b parseIO parseFn name s = E.Iteratee $ do 	(p, eventRef, errRef) <- liftIO $ newParserIO name 	@@ -94,15 +86,15 @@ 	let complete = withEvents (SAX.parseComplete p) 	E.runIteratee $ eneeParser parseChunk complete s -parseBytesST :: Maybe T.Text -> E.Enumeratee B.ByteString Event (ST s) b+parseBytesST :: Maybe T.Text -> E.Enumeratee B.ByteString X.Event (ST s) b parseBytesST = parseST SAX.parseBytes -parseTextST :: Maybe T.Text -> E.Enumeratee T.Text Event (ST s) b+parseTextST :: Maybe T.Text -> E.Enumeratee T.Text X.Event (ST s) b parseTextST = parseST SAX.parseText  parseST :: (SAX.Parser (ST s) -> a -> ST s ())         -> Maybe T.Text-        -> E.Enumeratee a Event (ST s) b+        -> E.Enumeratee a X.Event (ST s) b parseST parseFn name s = E.Iteratee $ do 	(p, eventRef, errRef) <- newParserST name 	@@ -119,9 +111,9 @@ 	E.runIteratee $ eneeParser parseChunk complete s  eneeParser :: Monad m-           => (a -> m ([Event], Maybe T.Text))-           -> m ([Event], Maybe T.Text)-           -> E.Enumeratee a Event m b+           => (a -> m ([X.Event], Maybe T.Text))+           -> m ([X.Event], Maybe T.Text)+           -> E.Enumeratee a X.Event m b eneeParser parseChunk parseComplete = E.checkDone (E.continue . step) where 	step k E.EOF = checkEvents k parseComplete (\k' -> E.yield (E.Continue k') E.EOF) 	step k (E.Chunks xs) = parseLoop k xs
libxml-enumerator.cabal view
@@ -1,5 +1,5 @@ name: libxml-enumerator-version: 0.3+version: 0.4 synopsis: Enumerator-based API for libXML's SAX interface license: MIT license-file: license.txt@@ -23,7 +23,7 @@     , enumerator >= 0.4 && < 0.5     , transformers >= 0.2 && < 0.3     , libxml-sax >= 0.6 && < 0.7-    , xml-types >= 0.1 && < 0.2+    , xml-types >= 0.1.1 && < 0.2    exposed-modules:     Text.XML.LibXML.Enumerator