packages feed

hw-xml 0.1.0.3 → 0.1.0.4

raw patch · 9 files changed

+125/−125 lines, 9 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- HaskellWorks.Data.Xml.Succinct.Cursor.Internal: instance (GHC.Classes.Eq w, GHC.Classes.Eq v, GHC.Classes.Eq t) => GHC.Classes.Eq (HaskellWorks.Data.Xml.Succinct.Cursor.Internal.XmlCursor t v w)
- HaskellWorks.Data.Xml.Succinct.Cursor.Internal: instance (GHC.Show.Show w, GHC.Show.Show v, GHC.Show.Show t) => GHC.Show.Show (HaskellWorks.Data.Xml.Succinct.Cursor.Internal.XmlCursor t v w)
- HaskellWorks.Data.Xml.Token.Types: instance (GHC.Classes.Eq d, GHC.Classes.Eq s) => GHC.Classes.Eq (HaskellWorks.Data.Xml.Token.Types.XmlToken s d)
- HaskellWorks.Data.Xml.Token.Types: instance (GHC.Show.Show d, GHC.Show.Show s) => GHC.Show.Show (HaskellWorks.Data.Xml.Token.Types.XmlToken s d)
+ HaskellWorks.Data.Xml.DecodeResult: instance Data.Traversable.Traversable HaskellWorks.Data.Xml.DecodeResult.DecodeResult
+ HaskellWorks.Data.Xml.Succinct.Cursor.Internal: instance (GHC.Classes.Eq t, GHC.Classes.Eq v, GHC.Classes.Eq w) => GHC.Classes.Eq (HaskellWorks.Data.Xml.Succinct.Cursor.Internal.XmlCursor t v w)
+ HaskellWorks.Data.Xml.Succinct.Cursor.Internal: instance (GHC.Show.Show t, GHC.Show.Show v, GHC.Show.Show w) => GHC.Show.Show (HaskellWorks.Data.Xml.Succinct.Cursor.Internal.XmlCursor t v w)
+ HaskellWorks.Data.Xml.Token.Types: instance (GHC.Classes.Eq s, GHC.Classes.Eq d) => GHC.Classes.Eq (HaskellWorks.Data.Xml.Token.Types.XmlToken s d)
+ HaskellWorks.Data.Xml.Token.Types: instance (GHC.Show.Show s, GHC.Show.Show d) => GHC.Show.Show (HaskellWorks.Data.Xml.Token.Types.XmlToken s d)
- HaskellWorks.Data.Xml.Conduit: blankedXmlToBalancedParens :: Monad m => Conduit ByteString m Bool
+ HaskellWorks.Data.Xml.Conduit: blankedXmlToBalancedParens :: Monad m => ConduitT ByteString Bool m ()
- HaskellWorks.Data.Xml.Conduit: blankedXmlToBalancedParens2 :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Xml.Conduit: blankedXmlToBalancedParens2 :: Monad m => ConduitT ByteString ByteString m ()
- HaskellWorks.Data.Xml.Conduit: blankedXmlToInterestBits :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Xml.Conduit: blankedXmlToInterestBits :: Monad m => ConduitT ByteString ByteString m ()
- HaskellWorks.Data.Xml.Conduit: byteStringToBits :: Monad m => Conduit ByteString m Bool
+ HaskellWorks.Data.Xml.Conduit: byteStringToBits :: Monad m => ConduitT ByteString Bool m ()
- HaskellWorks.Data.Xml.Conduit: compressWordAsBit :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Xml.Conduit: compressWordAsBit :: Monad m => ConduitT ByteString ByteString m ()
- HaskellWorks.Data.Xml.Conduit.Blank: blankXml :: MonadThrow m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Xml.Conduit.Blank: blankXml :: MonadThrow m => ConduitT ByteString ByteString m ()
- HaskellWorks.Data.Xml.Grammar: parseXmlAttributeName :: (Parser t, IsString t) => Parser t String
+ HaskellWorks.Data.Xml.Grammar: parseXmlAttributeName :: (Parser t Word8, IsString t) => Parser t String
- HaskellWorks.Data.Xml.Grammar: parseXmlElement :: (Parser t, IsString t) => Parser t XmlElementType
+ HaskellWorks.Data.Xml.Grammar: parseXmlElement :: (Parser t Word8, IsString t) => Parser t XmlElementType
- HaskellWorks.Data.Xml.Grammar: parseXmlString :: (Parser t, IsString t) => Parser t String
+ HaskellWorks.Data.Xml.Grammar: parseXmlString :: (Parser t Word8, IsString t) => Parser t String
- HaskellWorks.Data.Xml.Grammar: parseXmlToken :: (Parser t, IsString t) => Parser t String
+ HaskellWorks.Data.Xml.Grammar: parseXmlToken :: (Parser t Word8, IsString t) => Parser t String
- HaskellWorks.Data.Xml.Succinct.Cursor.InterestBits: blankedXmlToInterestBits :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Xml.Succinct.Cursor.InterestBits: blankedXmlToInterestBits :: Monad m => ConduitT ByteString ByteString m ()
- HaskellWorks.Data.Xml.Value: attributes :: HasValue c_aOYD => Traversal' c_aOYD [(String, String)]
+ HaskellWorks.Data.Xml.Value: attributes :: HasValue c_aKv1 => Traversal' c_aKv1 [(String, String)]
- HaskellWorks.Data.Xml.Value: cdata :: HasValue c_aOYD => Traversal' c_aOYD String
+ HaskellWorks.Data.Xml.Value: cdata :: HasValue c_aKv1 => Traversal' c_aKv1 String
- HaskellWorks.Data.Xml.Value: childNodes :: HasValue c_aOYD => Traversal' c_aOYD [Value]
+ HaskellWorks.Data.Xml.Value: childNodes :: HasValue c_aKv1 => Traversal' c_aKv1 [Value]
- HaskellWorks.Data.Xml.Value: class HasValue c_aOYD
+ HaskellWorks.Data.Xml.Value: class HasValue c_aKv1
- HaskellWorks.Data.Xml.Value: comment :: HasValue c_aOYD => Traversal' c_aOYD String
+ HaskellWorks.Data.Xml.Value: comment :: HasValue c_aKv1 => Traversal' c_aKv1 String
- HaskellWorks.Data.Xml.Value: errorMessage :: HasValue c_aOYD => Traversal' c_aOYD String
+ HaskellWorks.Data.Xml.Value: errorMessage :: HasValue c_aKv1 => Traversal' c_aKv1 String
- HaskellWorks.Data.Xml.Value: name :: HasValue c_aOYD => Traversal' c_aOYD String
+ HaskellWorks.Data.Xml.Value: name :: HasValue c_aKv1 => Traversal' c_aKv1 String
- HaskellWorks.Data.Xml.Value: textValue :: HasValue c_aOYD => Traversal' c_aOYD String
+ HaskellWorks.Data.Xml.Value: textValue :: HasValue c_aKv1 => Traversal' c_aKv1 String
- HaskellWorks.Data.Xml.Value: value :: HasValue c_aOYD => Lens' c_aOYD Value
+ HaskellWorks.Data.Xml.Value: value :: HasValue c_aKv1 => Lens' c_aKv1 Value

Files

bench/Main.hs view
@@ -31,7 +31,7 @@ loadXml bs = fromByteString bs :: XmlCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64))  xmlToInterestBits3 :: MonadThrow m => Conduit BS.ByteString m BS.ByteString-xmlToInterestBits3 = blankXml =$= blankedXmlToInterestBits+xmlToInterestBits3 = blankXml .| blankedXmlToInterestBits  runCon :: Conduit i [] BS.ByteString -> i -> BS.ByteString runCon con bs = BS.concat $ runListConduit con [bs]
hw-xml.cabal view
@@ -1,14 +1,10 @@--- This file has been generated from package.yaml by hpack version 0.20.0.------ see: https://github.com/sol/hpack------ hash: f1fd8d238f37c04b371124c3513386147393fb1a832396113b7048d61c1a3fb9+cabal-version: 1.12  name:           hw-xml-version:        0.1.0.3+version:        0.1.0.4 synopsis:       Conduits for tokenizing streams.-description:    Please see README.md-category:       Data, XML+description:    Conduits for tokenizing streams. Please see README.md+category:       Data, XML, Succinct Data Structures, Data Structures homepage:       http://github.com/haskell-works/hw-xml#readme bug-reports:    https://github.com/haskell-works/hw-xml/issues author:         John Ky,@@ -19,11 +15,8 @@ license:        BSD3 license-file:   LICENSE build-type:     Simple-cabal-version:  >= 1.10- extra-source-files:     README.md- data-files:     data/catalog.xml @@ -32,33 +25,6 @@   location: https://github.com/haskell-works/hw-xml  library-  hs-source-dirs:-      src-  ghc-options: -Wall -O2 -msse4.2-  build-depends:-      ansi-wl-pprint-    , array-    , attoparsec-    , base >=4 && <5-    , bytestring-    , cereal-    , conduit-    , containers-    , deepseq-    , ghc-prim-    , hw-balancedparens >=0.1.0.0-    , hw-bits >=0.4.0.0-    , hw-conduit >=0.2.0.2-    , hw-parser-    , hw-prim >=0.4.0.0-    , hw-rankselect >=0.7.0.0-    , hw-rankselect-base >=0.2.0.0-    , lens-    , mtl-    , resourcet-    , transformers-    , vector-    , word8   exposed-modules:       HaskellWorks.Data.Xml       HaskellWorks.Data.Xml.Blank@@ -89,10 +55,39 @@       HaskellWorks.Data.Xml.Value   other-modules:       Paths_hw_xml+  hs-source-dirs:+      src+  ghc-options: -Wall -O2 -msse4.2+  build-depends:+      ansi-wl-pprint+    , array+    , attoparsec+    , base >=4 && <5+    , bytestring+    , cereal+    , conduit+    , containers+    , deepseq+    , ghc-prim+    , hw-balancedparens >=0.1.0.0+    , hw-bits >=0.4.0.0+    , hw-conduit >=0.2.0.2+    , hw-parser+    , hw-prim >=0.4.0.0+    , hw-rankselect >=0.7.0.0+    , hw-rankselect-base >=0.2.0.0+    , lens+    , mtl+    , resourcet+    , transformers+    , vector+    , word8   default-language: Haskell2010  executable hw-xml-example   main-is: Main.hs+  other-modules:+      Paths_hw_xml   hs-source-dirs:       app   ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2 -Wall -msse4.2@@ -105,13 +100,20 @@     , hw-rankselect >=0.10.0.3     , hw-xml     , vector-  other-modules:-      Paths_hw_xml   default-language: Haskell2010  test-suite hw-xml-test   type: exitcode-stdio-1.0   main-is: Spec.hs+  other-modules:+      HaskellWorks.Data.Xml.Conduit.BlankSpec+      HaskellWorks.Data.Xml.RawValueSpec+      HaskellWorks.Data.Xml.Succinct.Cursor.BalancedParensSpec+      HaskellWorks.Data.Xml.Succinct.Cursor.InterestBitsSpec+      HaskellWorks.Data.Xml.Succinct.CursorSpec+      HaskellWorks.Data.Xml.Token.TokenizeSpec+      HaskellWorks.Data.Xml.TypeSpec+      Paths_hw_xml   hs-source-dirs:       test   ghc-options: -threaded -rtsopts -with-rtsopts=-N@@ -130,20 +132,14 @@     , hw-rankselect-base >=0.2.0.0     , hw-xml     , vector-  other-modules:-      HaskellWorks.Data.Xml.Conduit.BlankSpec-      HaskellWorks.Data.Xml.RawValueSpec-      HaskellWorks.Data.Xml.Succinct.Cursor.BalancedParensSpec-      HaskellWorks.Data.Xml.Succinct.Cursor.InterestBitsSpec-      HaskellWorks.Data.Xml.Succinct.CursorSpec-      HaskellWorks.Data.Xml.Token.TokenizeSpec-      HaskellWorks.Data.Xml.TypeSpec-      Paths_hw_xml   default-language: Haskell2010+  build-tool-depends: hspec-discover:hspec-discover  benchmark bench   type: exitcode-stdio-1.0   main-is: Main.hs+  other-modules:+      Paths_hw_xml   hs-source-dirs:       bench   ghc-options: -O2 -Wall -msse4.2@@ -160,6 +156,4 @@     , mmap     , resourcet     , vector-  other-modules:-      Paths_hw_xml   default-language: Haskell2010
src/HaskellWorks/Data/Xml/Conduit.hs view
@@ -39,10 +39,10 @@ isInterestingWord8 b = interestingWord8s ! b {-# INLINABLE isInterestingWord8 #-} -blankedXmlToInterestBits :: Monad m => Conduit BS.ByteString m BS.ByteString+blankedXmlToInterestBits :: Monad m => ConduitT BS.ByteString BS.ByteString m () blankedXmlToInterestBits = blankedXmlToInterestBits' "" -blankedXmlToInterestBits' :: Monad m => BS.ByteString -> Conduit BS.ByteString m BS.ByteString+blankedXmlToInterestBits' :: Monad m => BS.ByteString -> ConduitT BS.ByteString BS.ByteString m () blankedXmlToInterestBits' rs = do   mbs <- await   case mbs of@@ -65,27 +65,27 @@                     , BS.drop 8 as                     ) -blankedXmlToBalancedParens :: Monad m => Conduit BS.ByteString m Bool+blankedXmlToBalancedParens :: Monad m => ConduitT BS.ByteString Bool m () blankedXmlToBalancedParens = do   mbs <- await   case mbs of     Just bs -> blankedXmlToBalancedParens' bs     Nothing -> return () -blankedXmlToBalancedParens' :: Monad m => BS.ByteString -> Conduit BS.ByteString m Bool+blankedXmlToBalancedParens' :: Monad m => BS.ByteString -> ConduitT BS.ByteString Bool m () blankedXmlToBalancedParens' bs = case BS.uncons bs of   Just (c, cs) -> do     case c of-      d | d == _less          -> yield True-      d | d == _greater       -> yield False-      d | d == _bracketleft   -> yield True-      d | d == _bracketright  -> yield False-      d | d == _parenleft     -> yield True-      d | d == _parenright    -> yield False-      d | d == _a             -> yield True >> yield False-      d | d == _v             -> yield True >> yield False-      d | d == _t             -> yield True >> yield False-      _                       -> return ()+      d | d == _less         -> yield True+      d | d == _greater      -> yield False+      d | d == _bracketleft  -> yield True+      d | d == _bracketright -> yield False+      d | d == _parenleft    -> yield True+      d | d == _parenright   -> yield False+      d | d == _a            -> yield True >> yield False+      d | d == _v            -> yield True >> yield False+      d | d == _t            -> yield True >> yield False+      _                      -> return ()     blankedXmlToBalancedParens' cs   Nothing -> return () @@ -95,10 +95,10 @@         abLen = BS.length abBS         cLen = (abLen `div` 8) * 8 -compressWordAsBit :: Monad m => Conduit BS.ByteString m BS.ByteString+compressWordAsBit :: Monad m => ConduitT BS.ByteString BS.ByteString m () compressWordAsBit = compressWordAsBit' BS.empty -compressWordAsBit' :: Monad m => BS.ByteString -> Conduit BS.ByteString m BS.ByteString+compressWordAsBit' :: Monad m => BS.ByteString -> ConduitT BS.ByteString BS.ByteString m () compressWordAsBit' aBS = do   mbBS <- await   case mbBS of@@ -117,7 +117,7 @@                     , BS.drop 8 xs                     ) -blankedXmlToBalancedParens2 :: Monad m => Conduit BS.ByteString m BS.ByteString+blankedXmlToBalancedParens2 :: Monad m => ConduitT BS.ByteString BS.ByteString m () blankedXmlToBalancedParens2 = do   mbs <- await   case mbs of@@ -141,18 +141,18 @@  balancedParensOf :: Word8 -> MiniBP balancedParensOf c = case c of-    d | d == _less          -> MiniT-    d | d == _greater       -> MiniF-    d | d == _bracketleft   -> MiniT-    d | d == _bracketright  -> MiniF-    d | d == _parenleft     -> MiniT-    d | d == _parenright    -> MiniF-    d | d == _t             -> MiniTF-    d | d == _a             -> MiniTF-    d | d == _v             -> MiniTF-    _                       -> MiniN+    d | d == _less         -> MiniT+    d | d == _greater      -> MiniF+    d | d == _bracketleft  -> MiniT+    d | d == _bracketright -> MiniF+    d | d == _parenleft    -> MiniT+    d | d == _parenright   -> MiniF+    d | d == _t            -> MiniTF+    d | d == _a            -> MiniTF+    d | d == _v            -> MiniTF+    _                      -> MiniN -yieldBitsOfWord8 :: Monad m => Word8 -> Conduit BS.ByteString m Bool+yieldBitsOfWord8 :: Monad m => Word8 -> ConduitT BS.ByteString Bool m () yieldBitsOfWord8 w = do   yield ((w .&. BITS.bit 0) /= 0)   yield ((w .&. BITS.bit 1) /= 0)@@ -163,10 +163,10 @@   yield ((w .&. BITS.bit 6) /= 0)   yield ((w .&. BITS.bit 7) /= 0) -yieldBitsofWord8s :: Monad m => [Word8] -> Conduit BS.ByteString m Bool+yieldBitsofWord8s :: Monad m => [Word8] -> ConduitT BS.ByteString Bool m () yieldBitsofWord8s = P.foldr ((>>) . yieldBitsOfWord8) (return ()) -byteStringToBits :: Monad m => Conduit BS.ByteString m Bool+byteStringToBits :: Monad m => ConduitT BS.ByteString Bool m () byteStringToBits = do   mbs <- await   case mbs of
src/HaskellWorks/Data/Xml/Conduit/Blank.hs view
@@ -11,7 +11,7 @@ import Control.Monad.Trans.Resource        (MonadThrow) import Data.ByteString                     as BS import Data.Conduit-import Data.Monoid ((<>))+import Data.Monoid                         ((<>)) import Data.Word import Data.Word8 import HaskellWorks.Data.Xml.Conduit.Words@@ -35,16 +35,16 @@   | InIdent  data BlankData = BlankData-  { blankState  :: !BlankState-  , blankA      :: !Word8-  , blankB      :: !Word8-  , blankC      :: !ByteString+  { blankState :: !BlankState+  , blankA     :: !Word8+  , blankB     :: !Word8+  , blankC     :: !ByteString   } -blankXml :: MonadThrow m => Conduit BS.ByteString m BS.ByteString+blankXml :: MonadThrow m => ConduitT BS.ByteString BS.ByteString m () blankXml = blankXmlPlan1 BS.empty InXml -blankXmlPlan1 :: MonadThrow m => BS.ByteString -> BlankState -> Conduit BS.ByteString m BS.ByteString+blankXmlPlan1 :: MonadThrow m => BS.ByteString -> BlankState -> ConduitT BS.ByteString BS.ByteString m () blankXmlPlan1 as lastState = do   mbs <- await   case mbs of@@ -53,32 +53,32 @@       case BS.uncons cs of         Just (d, ds) -> case BS.uncons ds of           Just (e, es) -> blankXmlRun False d e es lastState-          Nothing -> blankXmlPlan1 cs lastState+          Nothing      -> blankXmlPlan1 cs lastState         Nothing -> blankXmlPlan1 cs lastState     Nothing -> yield $ BS.map (const _space) as -blankXmlPlan2 :: MonadThrow m => Word8 -> Word8 -> BlankState -> Conduit BS.ByteString m BS.ByteString+blankXmlPlan2 :: MonadThrow m => Word8 -> Word8 -> BlankState -> ConduitT BS.ByteString BS.ByteString m () blankXmlPlan2 a b lastState = do   mcs <- await   case mcs of     Just cs -> blankXmlRun False a b cs lastState     Nothing -> blankXmlRun True a b (BS.pack [_space, _space]) lastState -blankXmlRun :: MonadThrow m => Bool -> Word8 -> Word8 -> BS.ByteString -> BlankState -> Conduit BS.ByteString m BS.ByteString+blankXmlRun :: MonadThrow m => Bool -> Word8 -> Word8 -> BS.ByteString -> BlankState -> ConduitT BS.ByteString BS.ByteString m () blankXmlRun done a b cs lastState = do   let (!ds, Just (BlankData !nextState _ _ _)) = unfoldrN (BS.length cs) blankByteString (BlankData lastState a b cs)   yield ds   let (yy, zz) = case BS.unsnoc cs of         Just (ys, z) -> case BS.unsnoc ys of           Just (_, y) -> (y, z)-          Nothing -> (b, z)+          Nothing     -> (b, z)         Nothing -> (a, b)   unless done (blankXmlPlan2 yy zz nextState)  mkNext :: Word8 -> BlankState -> Word8 -> BS.ByteString -> Maybe (Word8, BlankData) mkNext w s a bs = case BS.uncons bs of-  Just (b, cs)  -> Just (w, BlankData s a b cs)-  Nothing       -> error "This should never happen"+  Just (b, cs) -> Just (w, BlankData s a b cs)+  Nothing      -> error "This should never happen" {-# INLINE mkNext #-}  blankByteString :: BlankData -> Maybe (Word8, BlankData)@@ -87,57 +87,57 @@ blankByteString (BlankData  InXml        a b cs) | isTextStart a           = mkNext _t             InText          b cs blankByteString (BlankData  InXml        a b cs) | a == _less              = mkNext _less          InTag           b cs blankByteString (BlankData  InXml        a b cs) | isSpace a               = mkNext a              InXml           b cs-blankByteString (BlankData  InXml        _ b cs)                           = mkNext _space         InXml           b cs+blankByteString (BlankData  InXml        _ b cs) = mkNext _space         InXml           b cs blankByteString (BlankData  InTag        a b cs) | isSpace a               = mkNext _parenleft     InAttrList      b cs blankByteString (BlankData  InTag        a b cs) | isTagClose a b          = mkNext _space         InClose         b cs blankByteString (BlankData  InTag        a b cs) | a == _greater           = mkNext _space         InXml           b cs blankByteString (BlankData  InTag        a b cs) | isSpace a               = mkNext a              InTag           b cs-blankByteString (BlankData  InTag        _ b cs)                           = mkNext _space         InTag           b cs+blankByteString (BlankData  InTag        _ b cs) = mkNext _space         InTag           b cs blankByteString (BlankData  InCloseTag   a b cs) | a == _greater           = mkNext _greater       InXml           b cs blankByteString (BlankData  InCloseTag   a b cs) | isSpace a               = mkNext a              InCloseTag      b cs-blankByteString (BlankData  InCloseTag   _ b cs)                           = mkNext _space         InCloseTag      b cs+blankByteString (BlankData  InCloseTag   _ b cs) = mkNext _space         InCloseTag      b cs blankByteString (BlankData  InAttrList   a b cs) | a == _greater           = mkNext _parenright    InXml           b cs blankByteString (BlankData  InAttrList   a b cs) | isTagClose a b          = mkNext _parenright    InClose         b cs blankByteString (BlankData  InAttrList   a b cs) | isNameStartChar a       = mkNext _a             InIdent         b cs blankByteString (BlankData  InAttrList   a b cs) | isQuote a               = mkNext _v             (InString a)    b cs blankByteString (BlankData  InAttrList   a b cs) | isSpace a               = mkNext a              InAttrList      b cs-blankByteString (BlankData  InAttrList   _ b cs)                           = mkNext _space         InAttrList      b cs-blankByteString (BlankData  InClose      _ b cs)                           = mkNext _greater       InXml           b cs+blankByteString (BlankData  InAttrList   _ b cs) = mkNext _space         InAttrList      b cs+blankByteString (BlankData  InClose      _ b cs) = mkNext _greater       InXml           b cs blankByteString (BlankData  InIdent      a b cs) | isNameChar a            = mkNext _space         InIdent         b cs blankByteString (BlankData  InIdent      a b cs) | isSpace a               = mkNext _space         InAttrList      b cs blankByteString (BlankData  InIdent      a b cs) | a == _equal             = mkNext _space         InAttrList      b cs blankByteString (BlankData  InIdent      a b cs) | isSpace a               = mkNext a              InAttrList      b cs-blankByteString (BlankData  InIdent      _ b cs)                           = mkNext _space         InAttrList      b cs+blankByteString (BlankData  InIdent      _ b cs) = mkNext _space         InAttrList      b cs blankByteString (BlankData (InString q ) a b cs) | a == q                  = mkNext _space         InAttrList      b cs blankByteString (BlankData (InString q ) a b cs) | isSpace a               = mkNext a              (InString q)    b cs-blankByteString (BlankData (InString q ) _ b cs)                           = mkNext _space         (InString q)    b cs+blankByteString (BlankData (InString q ) _ b cs) = mkNext _space         (InString q)    b cs blankByteString (BlankData  InText       a b cs) | isEndTag a b            = mkNext _space         InCloseTag      b cs blankByteString (BlankData  InText       _ b cs) | b == _less              = mkNext _space         InXml           b cs blankByteString (BlankData  InText       a b cs) | isSpace a               = mkNext a              InText          b cs-blankByteString (BlankData  InText       _ b cs)                           = mkNext _space         InText          b cs+blankByteString (BlankData  InText       _ b cs) = mkNext _space         InText          b cs blankByteString (BlankData  InMeta       a b cs) | a == _exclam            = mkNext _space         InMeta          b cs blankByteString (BlankData  InMeta       a b cs) | a == _hyphen            = mkNext _space         (InRem 0)       b cs blankByteString (BlankData  InMeta       a b cs) | a == _bracketleft       = mkNext _space         InCdataTag      b cs blankByteString (BlankData  InMeta       a b cs) | a == _greater           = mkNext _bracketright  InXml           b cs blankByteString (BlankData  InMeta       a b cs) | isSpace a               = mkNext a              (InBang 1)      b cs-blankByteString (BlankData  InMeta       _ b cs)                           = mkNext _space         (InBang 1)      b cs+blankByteString (BlankData  InMeta       _ b cs) = mkNext _space         (InBang 1)      b cs blankByteString (BlankData  InCdataTag   a b cs) | a == _bracketleft       = mkNext _space         (InCdata 0)     b cs blankByteString (BlankData  InCdataTag   a b cs) | isSpace a               = mkNext a              InCdataTag      b cs-blankByteString (BlankData  InCdataTag   _ b cs)                           = mkNext _space         InCdataTag      b cs+blankByteString (BlankData  InCdataTag   _ b cs) = mkNext _space         InCdataTag      b cs blankByteString (BlankData (InCdata n  ) a b cs) | a == _greater && n >= 2 = mkNext _bracketright  InXml           b cs blankByteString (BlankData (InCdata n  ) a b cs) | isCdataEnd a b && n > 0 = mkNext _space         (InCdata (n+1)) b cs blankByteString (BlankData (InCdata n  ) a b cs) | a == _bracketright      = mkNext _space         (InCdata (n+1)) b cs blankByteString (BlankData (InCdata _  ) a b cs) | isSpace a               = mkNext a              (InCdata 0)     b cs-blankByteString (BlankData (InCdata _  ) _ b cs)                           = mkNext _space         (InCdata 0)     b cs+blankByteString (BlankData (InCdata _  ) _ b cs) = mkNext _space         (InCdata 0)     b cs blankByteString (BlankData (InRem n    ) a b cs) | a == _greater && n >= 2 = mkNext _bracketright  InXml           b cs blankByteString (BlankData (InRem n    ) a b cs) | a == _hyphen            = mkNext _space         (InRem (n+1))   b cs blankByteString (BlankData (InRem _    ) a b cs) | isSpace a               = mkNext a              (InRem 0)       b cs-blankByteString (BlankData (InRem _    ) _ b cs)                           = mkNext _space         (InRem 0)       b cs+blankByteString (BlankData (InRem _    ) _ b cs) = mkNext _space         (InRem 0)       b cs blankByteString (BlankData (InBang n   ) a b cs) | a == _less              = mkNext _bracketleft   (InBang (n+1))  b cs blankByteString (BlankData (InBang n   ) a b cs) | a == _greater && n == 1 = mkNext _bracketright  InXml           b cs blankByteString (BlankData (InBang n   ) a b cs) | a == _greater           = mkNext _bracketright  (InBang (n-1))  b cs blankByteString (BlankData (InBang n   ) a b cs) | isSpace a               = mkNext a              (InBang n)      b cs-blankByteString (BlankData (InBang n   ) _ b cs)                           = mkNext _space         (InBang n)      b cs+blankByteString (BlankData (InBang n   ) _ b cs) = mkNext _space         (InBang n)      b cs {-# INLINE blankByteString #-}  isEndTag :: Word8 -> Word8 -> Bool
src/HaskellWorks/Data/Xml/DecodeResult.hs view
@@ -38,6 +38,10 @@   foldr f z (DecodeOk     a) = f a z   foldr _ z (DecodeFailed _) = z +instance Traversable DecodeResult where+  traverse _ (DecodeFailed e) = pure (DecodeFailed e)+  traverse f (DecodeOk x)     = DecodeOk <$> f x+ toEither :: DecodeResult a -> Either DecodeError a toEither (DecodeOk     a) = Right a toEither (DecodeFailed e) = Left  e
src/HaskellWorks/Data/Xml/Grammar.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE FlexibleContexts      #-} {-# LANGUAGE FlexibleInstances     #-} {-# LANGUAGE InstanceSigs          #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -9,6 +10,7 @@ import Control.Applicative import Data.Char import Data.String+import Data.Word import HaskellWorks.Data.Parser as P  import qualified Data.Attoparsec.Types as T@@ -20,12 +22,12 @@   | XmlElementTypeCData   | XmlElementTypeMeta String -parseXmlString :: (P.Parser t, IsString t) => T.Parser t String+parseXmlString :: (P.Parser t Word8, IsString t) => T.Parser t String parseXmlString = do   q <- satisfyChar (=='"') <|> satisfyChar (=='\'')   many (satisfyChar (/= q)) -parseXmlElement :: (P.Parser t, IsString t) => T.Parser t XmlElementType+parseXmlElement :: (P.Parser t Word8, IsString t) => T.Parser t XmlElementType parseXmlElement = comment <|> cdata <|> doc <|> meta <|> element   where   comment = const XmlElementTypeComment  <$> string "!--"@@ -34,10 +36,10 @@   doc     = const XmlElementTypeDocument <$> string "?xml"   element = XmlElementTypeElement        <$> parseXmlToken -parseXmlToken :: (P.Parser t, IsString t) => T.Parser t String+parseXmlToken :: (P.Parser t Word8, IsString t) => T.Parser t String parseXmlToken = many $ satisfyChar isNameChar <?> "invalid string character" -parseXmlAttributeName :: (P.Parser t, IsString t) => T.Parser t String+parseXmlAttributeName :: (P.Parser t Word8, IsString t) => T.Parser t String parseXmlAttributeName = parseXmlToken  isNameStartChar :: Char -> Bool
src/HaskellWorks/Data/Xml/Succinct/Cursor/BalancedParens.hs view
@@ -33,20 +33,20 @@  instance FromBlankedXml (XmlBalancedParens (SimpleBalancedParens (DVS.Vector Word8))) where   fromBlankedXml bj    = XmlBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))-    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml bj))+    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml bj))           newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedXml (XmlBalancedParens (SimpleBalancedParens (DVS.Vector Word16))) where   fromBlankedXml bj    = XmlBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))-    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml bj))+    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml bj))           newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedXml (XmlBalancedParens (SimpleBalancedParens (DVS.Vector Word32))) where   fromBlankedXml bj    = XmlBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))-    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml bj))+    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml bj))           newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedXml (XmlBalancedParens (SimpleBalancedParens (DVS.Vector Word64))) where   fromBlankedXml bj    = XmlBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))-    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml bj))+    where interestBS    = BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml bj))           newLen        = (BS.length interestBS + 7) `div` 8 * 8
src/HaskellWorks/Data/Xml/Token/Tokenize.hs view
@@ -24,22 +24,22 @@ import qualified Data.Attoparsec.Types            as T import qualified Data.ByteString                  as BS -hexDigitNumeric :: P.Parser t => T.Parser t Int+hexDigitNumeric :: P.Parser t Word8 => T.Parser t Int hexDigitNumeric = do   c <- satisfyChar (\c -> '0' <= c && c <= '9')   return $ ord c - ord '0' -hexDigitAlphaLower :: P.Parser t => T.Parser t Int+hexDigitAlphaLower :: P.Parser t Word8 => T.Parser t Int hexDigitAlphaLower = do   c <- satisfyChar (\c -> 'a' <= c && c <= 'z')   return $ ord c - ord 'a' + 10 -hexDigitAlphaUpper :: P.Parser t => T.Parser t Int+hexDigitAlphaUpper :: P.Parser t Word8 => T.Parser t Int hexDigitAlphaUpper = do   c <- satisfyChar (\c -> 'A' <= c && c <= 'Z')   return $ ord c - ord 'A' + 10 -hexDigit :: P.Parser t => T.Parser t Int+hexDigit :: P.Parser t Word8 => T.Parser t Int hexDigit = hexDigitNumeric <|> hexDigitAlphaLower <|> hexDigitAlphaUpper  class ParseXml t s d where
test/HaskellWorks/Data/Xml/Succinct/Cursor/BalancedParensSpec.hs view
@@ -23,14 +23,14 @@ spec = describe "HaskellWorks.Data.Xml.Succinct.Cursor.BalancedParensSpec" $ do   it "Blanking XML should work 1" $ do     let blankedXml = BlankedXml ["<t<t>>"]-    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml blankedXml))+    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml blankedXml))     bp `shouldBe` fromString "11011000"   it "Blanking XML should work 2" $ do     let blankedXml = BlankedXml           [ "<><><><><><><><>"           , "<><><><><><><><>"           ]-    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) (getBlankedXml blankedXml))+    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) (getBlankedXml blankedXml))     bp `shouldBe` fromString           "1010101010101010\           \1010101010101010"@@ -47,12 +47,12 @@     unchunkedInput `shouldBe` BS.concat chunkedInput    it "Blanking XML should work 3" $ do-    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) chunkedBlank)+    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) chunkedBlank)     putStrLn $ "Good: " <> show chunkedBlank     bp `shouldBe` fromString "11101010 10001101 01010100"    it "Blanking XML should work 3" $ do-    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit) chunkedBadBlank)+    let bp = BitShown $ BS.concat (runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit) chunkedBadBlank)     putStrLn $ "Bad: " <> show chunkedBadBlank     bp `shouldBe` fromString "11101010 10001101 01010100" @@ -72,4 +72,4 @@ mkBlank csize bs = runListConduit blankXml (chunkedBy csize bs)  mkBits :: [BS.ByteString] -> [BS.ByteString]-mkBits = runListConduit (blankedXmlToBalancedParens2 =$= compressWordAsBit)+mkBits = runListConduit (blankedXmlToBalancedParens2 .| compressWordAsBit)