packages feed

html-conduit 1.2.1.2 → 1.3.0

raw patch · 3 files changed

+32/−25 lines, 3 filesdep −conduit-extradep ~conduitdep ~resourcetPVP ok

version bump matches the API change (PVP)

Dependencies removed: conduit-extra

Dependency ranges changed: conduit, resourcet

API changes (from Hackage documentation)

- Text.HTML.DOM: eventConduit :: Monad m => Conduit ByteString m Event
+ Text.HTML.DOM: eventConduit :: Monad m => ConduitT ByteString Event m ()
- Text.HTML.DOM: eventConduitText :: Monad m => Conduit Text m Event
+ Text.HTML.DOM: eventConduitText :: Monad m => ConduitT Text Event m ()
- Text.HTML.DOM: sinkDoc :: MonadThrow m => Sink ByteString m Document
+ Text.HTML.DOM: sinkDoc :: MonadThrow m => ConduitT ByteString o m Document
- Text.HTML.DOM: sinkDocText :: MonadThrow m => Sink Text m Document
+ Text.HTML.DOM: sinkDocText :: MonadThrow m => ConduitT Text o m Document

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.3.0++* Upgrade to conduit 1.3+ ## 1.2.1.2  * Remove an upper bound
Text/HTML/DOM.hs view
@@ -17,34 +17,29 @@ import qualified Text.HTML.TagStream.Text as TS import qualified Text.HTML.TagStream as TS import qualified Data.XML.Types as XT-import Data.Conduit-import Data.Conduit.Text (decodeUtf8Lenient) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.Conduit.List as CL import Control.Arrow ((***)) import qualified Data.Set as Set import qualified Text.XML as X-import Text.XML.Stream.Parse (decodeHtmlEntities)-import Data.Conduit.Binary (sourceFile)+import Conduit import qualified Data.ByteString.Lazy as L-import Control.Monad.Trans.Resource (runExceptionT_)-import Data.Functor.Identity (runIdentity) import Data.Maybe (mapMaybe)  -- | Converts a stream of bytes to a stream of properly balanced @Event@s. -- -- Note that there may be multiple (or not) root elements. @sinkDoc@ addresses -- that case.-eventConduit :: Monad m => Conduit S.ByteString m XT.Event-eventConduit = decodeUtf8Lenient =$= eventConduit' +eventConduit :: Monad m => ConduitT S.ByteString XT.Event m ()+eventConduit = decodeUtf8LenientC .| eventConduit' -eventConduitText :: Monad m => Conduit T.Text m XT.Event+eventConduitText :: Monad m => ConduitT T.Text XT.Event m () eventConduitText = eventConduit' -eventConduit' :: Monad m => Conduit T.Text m XT.Event-eventConduit' = -    TS.tokenStream =$= go []+eventConduit' :: Monad m => ConduitT T.Text XT.Event m ()+eventConduit' =+    TS.tokenStream .| go []   where     go stack = do         mx <- await@@ -101,15 +96,18 @@         , "wbr"         ] -sinkDoc :: MonadThrow m => Sink S.ByteString m X.Document-sinkDoc = sinkDoc' eventConduit +sinkDoc :: MonadThrow m => ConduitT S.ByteString o m X.Document+sinkDoc = sinkDoc' eventConduit -sinkDocText :: MonadThrow m => Sink T.Text m X.Document+sinkDocText :: MonadThrow m => ConduitT T.Text o m X.Document sinkDocText = sinkDoc' eventConduitText -sinkDoc' :: (Monad m, MonadThrow m) => Conduit a m XT.Event -> Sink a m X.Document-sinkDoc' f = -    fmap stripDummy $ mapOutput ((,) Nothing) f =$ addDummyWrapper =$ X.fromEvents+sinkDoc'+  :: MonadThrow m+  => ConduitT a XT.Event m ()+  -> ConduitT a o m X.Document+sinkDoc' f =+    fmap stripDummy $ mapOutput ((,) Nothing) f .| addDummyWrapper .| X.fromEvents   where     addDummyWrapper = do         yield (Nothing, XT.EventBeginElement "html" [])@@ -125,17 +123,23 @@     toElement _ = Nothing  readFile :: FilePath -> IO X.Document-readFile fp = runResourceT $ sourceFile fp $$ sinkDoc+readFile fp = withSourceFile fp $ \src -> runConduit $ src .| sinkDoc  parseLBS :: L.ByteString -> X.Document parseLBS = parseBSChunks . L.toChunks  parseBSChunks :: [S.ByteString] -> X.Document-parseBSChunks tss = runIdentity $ runExceptionT_ $ CL.sourceList tss $$ sinkDoc+parseBSChunks tss =+  case runConduit $ CL.sourceList tss .| sinkDoc of+    Left e -> error $ "Unexpected exception in parseBSChunks: " ++ show e+    Right x -> x  parseLT :: TL.Text -> X.Document parseLT = parseSTChunks . TL.toChunks  parseSTChunks :: [T.Text] -> X.Document-parseSTChunks tss = runIdentity $ runExceptionT_ $ CL.sourceList tss $$ sinkDocText +parseSTChunks tss =+  case runConduit $ CL.sourceList tss .| sinkDocText of+    Left e -> error $ "Unexpected exception in parseSTChunks: " ++ show e+    Right x -> x 
html-conduit.cabal view
@@ -1,5 +1,5 @@ Name:                html-conduit-Version:             1.2.1.2+Version:             1.3.0 Synopsis:            Parse HTML documents using xml-conduit datatypes. Description:         This package uses tagstream-conduit for its parser. It automatically balances mismatched tags, so that there shouldn't be any parse failures. It does not handle a full HTML document rendering, such as adding missing html and head tags. Homepage:            https://github.com/snoyberg/xml@@ -19,9 +19,8 @@                      , bytestring                      , containers                      , text-                     , resourcet                        >= 0.3            && < 1.2-                     , conduit                          >= 1.0            && < 1.3-                     , conduit-extra                    >= 1.1.1+                     , resourcet                        >= 1.2+                     , conduit                          >= 1.3                      , xml-conduit                      >= 1.3                      , tagstream-conduit                >= 0.5.5.3        && < 0.6                      , xml-types                        >= 0.3            && < 0.4