{-# LANGUAGE DeriveGeneric #-} module Data.NestedText.Type where import qualified Data.Map.Strict as M import qualified Data.Text as T import qualified Data.Text.Short as ST import qualified Data.Vector as V import Generic.Data (Generic) type Key = ST.ShortText data Item = Item'String T.Text | Item'List (V.Vector Item) | Item'Dictionary (M.Map Key Item) deriving ((forall x. Item -> Rep Item x) -> (forall x. Rep Item x -> Item) -> Generic Item forall x. Rep Item x -> Item forall x. Item -> Rep Item x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Item -> Rep Item x from :: forall x. Item -> Rep Item x $cto :: forall x. Rep Item x -> Item to :: forall x. Rep Item x -> Item Generic, Item -> Item -> Bool (Item -> Item -> Bool) -> (Item -> Item -> Bool) -> Eq Item forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Item -> Item -> Bool == :: Item -> Item -> Bool $c/= :: Item -> Item -> Bool /= :: Item -> Item -> Bool Eq, Int -> Item -> ShowS [Item] -> ShowS Item -> String (Int -> Item -> ShowS) -> (Item -> String) -> ([Item] -> ShowS) -> Show Item forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Item -> ShowS showsPrec :: Int -> Item -> ShowS $cshow :: Item -> String show :: Item -> String $cshowList :: [Item] -> ShowS showList :: [Item] -> ShowS Show) data Document = Document'Empty | Document'Item Item deriving ((forall x. Document -> Rep Document x) -> (forall x. Rep Document x -> Document) -> Generic Document forall x. Rep Document x -> Document forall x. Document -> Rep Document x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Document -> Rep Document x from :: forall x. Document -> Rep Document x $cto :: forall x. Rep Document x -> Document to :: forall x. Rep Document x -> Document Generic, Document -> Document -> Bool (Document -> Document -> Bool) -> (Document -> Document -> Bool) -> Eq Document forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Document -> Document -> Bool == :: Document -> Document -> Bool $c/= :: Document -> Document -> Bool /= :: Document -> Document -> Bool Eq, Int -> Document -> ShowS [Document] -> ShowS Document -> String (Int -> Document -> ShowS) -> (Document -> String) -> ([Document] -> ShowS) -> Show Document forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Document -> ShowS showsPrec :: Int -> Document -> ShowS $cshow :: Document -> String show :: Document -> String $cshowList :: [Document] -> ShowS showList :: [Document] -> ShowS Show)