@@ -1,16 +1,34 @@
1{-# LANGUAGE ExistentialQuantification, BangPatterns, MagicHash #-}
1{-# LANGUAGE ExistentialQuantification, BangPatterns, MagicHash #-}
4+-- Module : Data.Text.Fusion
5+-- Copyright : (c) Tom Harper 2008-2009,
6+-- (c) Bryan O'Sullivan 2009,
7+-- (c) Duncan Coutts 2009
10+-- Maintainer : rtharper@aftereternity.co.uk, bos@serpentine.com,
12+-- Stability : experimental
15+-- Text manipulation functions represented as fusible operations over
3module Data.Text.Fusion
17module Data.Text.Fusion
5 Stream(..)
20 Stream(..)
6 , Step(..)
21 , Step(..)
7 , Encoding(..)
22 , Encoding(..)
24+ -- * Creation and elimination
9 , unstream
26 , unstream
10 , stream_bs
27 , stream_bs
11 , unstream_bs
28 , unstream_bs
12 , restream
29 , restream
@@ -20,32 +38,50 @@ module Data.Text.Fusion
31 , concatMap
57 , concatMap
37 , unfoldrN
65 , unfoldrN
68+ -- ** Breaking strings
40 , takeWhile
71 , takeWhile
41 , dropWhile
72 , dropWhile
47 , findIndex
81 , findIndex
48 , elemIndex
82 , elemIndex
84+ -- * Zipping and unzipping
@@ -54,21 +90,21 @@ import Prelude hiding
54 foldl1, foldr1, concatMap, any, all, maximum, minimum, take, drop,
90 foldl1, foldr1, concatMap, any, all, maximum, minimum, take, drop,
55 takeWhile, dropWhile, elem, zipWith)
91 takeWhile, dropWhile, elem, zipWith)
56import Data.Char (ord)
92import Data.Char (ord)
57−import Control.Exception(assert)
93+import Control.Exception (assert)
58−import Control.Monad(liftM2)
94+import Control.Monad (liftM2)
59−import Control.Monad.ST(runST,ST)
95+import Control.Monad.ST (runST, ST)
60import Data.Bits (shiftL, shiftR, (.&.))
96import Data.Bits (shiftL, shiftR, (.&.))
61import qualified Data.ByteString as B
97import qualified Data.ByteString as B
62import qualified Data.ByteString.Unsafe as B
98import qualified Data.ByteString.Unsafe as B
63−import Data.ByteString.Internal(ByteString(..),mallocByteString,memcpy)
99+import Data.ByteString.Internal (ByteString(..), mallocByteString, memcpy)
64import qualified Data.List as L
100import qualified Data.List as L
65−import Data.Word(Word8, Word16, Word32)
101+import Data.Word (Word8, Word16, Word32)
66−import Foreign.ForeignPtr(withForeignPtr,ForeignPtr)
102+import Foreign.ForeignPtr (withForeignPtr, ForeignPtr)
67−import Foreign.Storable(pokeByteOff)
103+import Foreign.Storable (pokeByteOff)
68import GHC.Exts (Int(..), (+#))
104import GHC.Exts (Int(..), (+#))
69−import System.IO.Unsafe(unsafePerformIO)
105+import System.IO.Unsafe (unsafePerformIO)
70−import Data.Text.Internal(Text(..),empty)
106+import Data.Text.Internal (Text(..), empty)
71−import Data.Text.UnsafeChar(unsafeChr,unsafeChr8,unsafeChr32)
107+import Data.Text.UnsafeChar (unsafeChr, unsafeChr8, unsafeChr32)
72import qualified Data.Text.Array as A
108import qualified Data.Text.Array as A
73import qualified Data.Text.Utf8 as U8
109import qualified Data.Text.Utf8 as U8
74import qualified Data.Text.Utf16 as U16
110import qualified Data.Text.Utf16 as U16