From f8c731534c1c3449510ccf9cc8d93fd760d8cb5d Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 9 May 2012 10:37:19 +0300 Subject: [PATCH] yesod-test: use html-conduit --- yesod-test/Yesod/Test/HtmlParse.hs | 57 ++---------------------------- yesod-test/yesod-test.cabal | 6 ++-- 2 files changed, 5 insertions(+), 58 deletions(-) diff --git a/yesod-test/Yesod/Test/HtmlParse.hs b/yesod-test/Yesod/Test/HtmlParse.hs index 47082c37..ca7238c8 100644 --- a/yesod-test/Yesod/Test/HtmlParse.hs +++ b/yesod-test/Yesod/Test/HtmlParse.hs @@ -6,60 +6,9 @@ module Yesod.Test.HtmlParse ( parseHtml ) where -import Text.HTML.TagStream -import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as L -import Text.XML -import Data.Conduit -import qualified Data.Conduit.List as CL -import Data.Functor.Identity (runIdentity) -import Control.Monad.Trans.Resource (runExceptionT) -import Data.XML.Types (Event (..), Content (ContentText)) -import Control.Arrow ((***)) -import Data.Text.Encoding (decodeUtf8With) -import Data.Text.Encoding.Error (lenientDecode) -import qualified Data.Set as Set +import Text.XML (Document) +import qualified Text.HTML.DOM as HD parseHtml :: L.ByteString -> Either String Document -parseHtml lbs = - either (Left . show) Right - $ runIdentity - $ runExceptionT - $ CL.sourceList (L.toChunks lbs) - $$ tokenStream =$ (CL.concatMap toEvent =$ fromEvents) - -toEvent :: Token -> [Event] -toEvent (TagOpen bsname bsattrs isClose') = - EventBeginElement name attrs : if isClose then [EventEndElement name] else [] - where - name = toName bsname - attrs = map (toName *** (return . ContentText . decodeUtf8With lenientDecode)) bsattrs - isClose = isClose' || isVoid bsname -toEvent (TagClose bsname) = [EventEndElement $ toName bsname] -toEvent (Text bs) = [EventContent $ ContentText $ decodeUtf8With lenientDecode bs] -toEvent (Comment bs) = [EventComment $ decodeUtf8With lenientDecode bs] -toEvent Special{} = [] -toEvent Incomplete{} = [] - -toName :: S.ByteString -> Name -toName bs = Name (decodeUtf8With lenientDecode bs) Nothing Nothing - -isVoid :: S.ByteString -> Bool -isVoid = flip Set.member $ Set.fromList - [ "area" - , "base" - , "br" - , "col" - , "command" - , "embed" - , "hr" - , "img" - , "input" - , "keygen" - , "link" - , "meta" - , "param" - , "source" - , "track" - , "wbr" - ] +parseHtml = Right . HD.parseLBS diff --git a/yesod-test/yesod-test.cabal b/yesod-test/yesod-test.cabal index 3078dab3..3d9c05da 100644 --- a/yesod-test/yesod-test.cabal +++ b/yesod-test/yesod-test.cabal @@ -33,13 +33,11 @@ library , bytestring >= 0.9 , case-insensitive >= 0.2 , text - , tagstream-conduit >= 0.3 && < 0.4 - , conduit >= 0.4 && < 0.5 - , resourcet >= 0.3 && < 0.4 , xml-conduit >= 0.7 && < 0.8 , xml-types >= 0.3 && < 0.4 , containers - , xml2html >= 0.1.2 && < 0.2 + , xml2html >= 0.1.2.3 && < 0.2 + , html-conduit >= 0.0.1 && < 0.1 if flag(blaze_html_0_5) build-depends: