publicsuffixlist-0.0.4: Network/PublicSuffixList/Serialize.hs
module Network.PublicSuffixList.Serialize (getDataStructure, putDataStructure) where
import qualified Data.ByteString as BS
import qualified Data.ByteString.UTF8 as U8
import Data.Functor
import Data.Serialize.Get hiding (getTreeOf)
import Data.Serialize.Put
import qualified Data.Text as T
import Network.PublicSuffixList.Types
getTreeOf :: Ord k => Get k -> Get (Tree k)
getTreeOf p = Node <$> getMapOf p (getTreeOf p)
getText :: Get T.Text
getText = (T.pack . U8.toString . BS.pack) <$> getListOf getWord8
getDataStructure :: Get DataStructure
getDataStructure = getTwoOf (getTreeOf getText) (getTreeOf getText)
putTree :: Ord k => Putter k -> Putter (Tree k)
putTree p = putMapOf p (putTree p) . children
putText :: Putter T.Text
putText = putListOf putWord8 . BS.unpack . U8.fromString . T.unpack
putDataStructure :: Putter DataStructure
putDataStructure = putTwoOf (putTree putText) (putTree putText)