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