@@ -57,6 +57,8 @@ class Target t where
5757 packT :: String -> t
5858 unpackT :: t -> String
5959 splitAtT :: Int -> t -> (t,t)
60+ packTChunkSize :: Int -> String -> t
61+ packTChunkSize _ = packT
6062
6163instance Target (S.Stream Char) where
6264 packT = S.streamList
@@ -69,6 +71,7 @@ instance Target T.Text where
6971 splitAtT = T.splitAt
7072
7173instance Target TL.Text where
74+ packTChunkSize k = SL.unstreamChunks k . S.streamList
7275 packT = TL.pack
7376 unpackT = TL.unpack
7477 splitAtT = TL.splitAt . fromIntegral
@@ -81,9 +84,11 @@ eq a b s = crashy False $ a s == b s
8184eqP :: (Eq a, Show a, Target t) =>
8285 (String -> a) -> (t -> a) -> String -> Word8 -> Bool
8386eqP a b s w = eq "orig" (a s) (b t) &&
87+ eq "mini" (a s) (b mini) &&
8488 eq "head" (a sa) (b ta) &&
8589 eq "tail" (a sb) (b tb)
8690 where t = packT s
91+ mini = packTChunkSize 10 s
8792 (sa,sb) = splitAt m s
8893 (ta,tb) = splitAtT m t
8994 l = length s
@@ -97,11 +102,13 @@ eqP a b s w = eq "orig" (a s) (b t) &&
97102eqEP :: (Eq a, Target t) =>
98103 (String -> a) -> (t -> a) -> NotEmpty String -> Word8 -> Bool
99104eqEP a b e w = a s == b t &&
105+ a s == b mini &&
100106 (null sa || a sa == b ta) &&
101107 (null sb || a sb == b tb)
102108 where (sa,sb) = splitAt m s
103109 (ta,tb) = splitAtT m t
104110 t = packT s
111+ mini = packTChunkSize 10 s
105112 l = length s
106113 m | l == 0 = n
107114 | otherwise = n `mod` l