{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module HaskellWorks.Data.Xml.Succinct.Cursor.BlankedXml
  ( BlankedXml(..)
  , FromBlankedXml(..)
  , getBlankedXml
  , bsToBlankedXml
  , lbsToBlankedXml
  ) where

import Control.DeepSeq
import GHC.Generics
import HaskellWorks.Data.Xml.Internal.Blank

import qualified Data.ByteString      as BS
import qualified Data.ByteString.Lazy as LBS

newtype BlankedXml = BlankedXml
  { BlankedXml -> [ByteString]
unblankedXml :: [BS.ByteString]
  } deriving (BlankedXml -> BlankedXml -> Bool
(BlankedXml -> BlankedXml -> Bool)
-> (BlankedXml -> BlankedXml -> Bool) -> Eq BlankedXml
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BlankedXml -> BlankedXml -> Bool
$c/= :: BlankedXml -> BlankedXml -> Bool
== :: BlankedXml -> BlankedXml -> Bool
$c== :: BlankedXml -> BlankedXml -> Bool
Eq, Int -> BlankedXml -> ShowS
[BlankedXml] -> ShowS
BlankedXml -> String
(Int -> BlankedXml -> ShowS)
-> (BlankedXml -> String)
-> ([BlankedXml] -> ShowS)
-> Show BlankedXml
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BlankedXml] -> ShowS
$cshowList :: [BlankedXml] -> ShowS
show :: BlankedXml -> String
$cshow :: BlankedXml -> String
showsPrec :: Int -> BlankedXml -> ShowS
$cshowsPrec :: Int -> BlankedXml -> ShowS
Show, (forall x. BlankedXml -> Rep BlankedXml x)
-> (forall x. Rep BlankedXml x -> BlankedXml) -> Generic BlankedXml
forall x. Rep BlankedXml x -> BlankedXml
forall x. BlankedXml -> Rep BlankedXml x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BlankedXml x -> BlankedXml
$cfrom :: forall x. BlankedXml -> Rep BlankedXml x
Generic, BlankedXml -> ()
(BlankedXml -> ()) -> NFData BlankedXml
forall a. (a -> ()) -> NFData a
rnf :: BlankedXml -> ()
$crnf :: BlankedXml -> ()
NFData)

getBlankedXml :: BlankedXml -> [BS.ByteString]
getBlankedXml :: BlankedXml -> [ByteString]
getBlankedXml (BlankedXml [ByteString]
bs) = [ByteString]
bs

class FromBlankedXml a where
  fromBlankedXml :: BlankedXml -> a

bsToBlankedXml :: BS.ByteString -> BlankedXml
bsToBlankedXml :: ByteString -> BlankedXml
bsToBlankedXml ByteString
bs = [ByteString] -> BlankedXml
BlankedXml ([ByteString] -> [ByteString]
blankXml [ByteString
bs])

lbsToBlankedXml :: LBS.ByteString -> BlankedXml
lbsToBlankedXml :: ByteString -> BlankedXml
lbsToBlankedXml ByteString
lbs = [ByteString] -> BlankedXml
BlankedXml ([ByteString] -> [ByteString]
blankXml (ByteString -> [ByteString]
LBS.toChunks ByteString
lbs))