module Data.ByteString.Extra ( chunksOf ) where import Data.ByteString ( ByteString ) import qualified Data.ByteString as BS import Prelude chunksOf :: Int -> ByteString -> [ByteString] chunksOf :: Int -> ByteString -> [ByteString] chunksOf Int k = ByteString -> [ByteString] go where go :: ByteString -> [ByteString] go ByteString t = case Int -> ByteString -> (ByteString, ByteString) BS.splitAt Int k ByteString t of (ByteString a, ByteString b) | ByteString -> Bool BS.null ByteString a -> [] | Bool otherwise -> ByteString a ByteString -> [ByteString] -> [ByteString] forall a. a -> [a] -> [a] : ByteString -> [ByteString] go ByteString b