module HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson
  ( BlankedJson(..)
  , FromBlankedJson(..)
  , getBlankedJson
  ) where

import qualified Data.ByteString                      as BS
import           HaskellWorks.Data.ByteString
import           HaskellWorks.Data.Conduit.List
import           HaskellWorks.Data.FromByteString
import           HaskellWorks.Data.Json.Conduit.Blank

newtype BlankedJson = BlankedJson [BS.ByteString] deriving (BlankedJson -> BlankedJson -> Bool
(BlankedJson -> BlankedJson -> Bool)
-> (BlankedJson -> BlankedJson -> Bool) -> Eq BlankedJson
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BlankedJson -> BlankedJson -> Bool
$c/= :: BlankedJson -> BlankedJson -> Bool
== :: BlankedJson -> BlankedJson -> Bool
$c== :: BlankedJson -> BlankedJson -> Bool
Eq, Int -> BlankedJson -> ShowS
[BlankedJson] -> ShowS
BlankedJson -> String
(Int -> BlankedJson -> ShowS)
-> (BlankedJson -> String)
-> ([BlankedJson] -> ShowS)
-> Show BlankedJson
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BlankedJson] -> ShowS
$cshowList :: [BlankedJson] -> ShowS
show :: BlankedJson -> String
$cshow :: BlankedJson -> String
showsPrec :: Int -> BlankedJson -> ShowS
$cshowsPrec :: Int -> BlankedJson -> ShowS
Show)

getBlankedJson :: BlankedJson -> [BS.ByteString]
getBlankedJson :: BlankedJson -> [ByteString]
getBlankedJson (BlankedJson [ByteString]
bs) = [ByteString]
bs

class FromBlankedJson a where
  fromBlankedJson :: BlankedJson -> a

instance FromByteString BlankedJson where
  fromByteString :: ByteString -> BlankedJson
fromByteString ByteString
bs = [ByteString] -> BlankedJson
BlankedJson (ConduitT ByteString ByteString [] ()
-> [ByteString] -> [ByteString]
forall i o. ConduitT i o [] () -> [i] -> [o]
runListConduit ConduitT ByteString ByteString [] ()
forall (m :: * -> *).
MonadThrow m =>
Conduit ByteString m ByteString
blankJson (Int -> ByteString -> [ByteString]
chunkedBy Int
4064 ByteString
bs))