{-# LANGUAGE DeriveGeneric #-} module MdBlocks.Types where import Data.Aeson import Data.Map.Strict (Map) import Data.Text (Text) import GHC.Generics data BlockKind = Fenced | Indented deriving (Show, Eq, Generic) instance ToJSON BlockKind data Metadata = Metadata { mdLanguage :: Maybe Text , mdId :: Maybe Text , mdAttrs :: Map Text Text } deriving (Show, Eq, Generic) instance ToJSON Metadata data Block = Block { blockFile :: FilePath , blockNumber :: Int , blockKind :: BlockKind , blockMeta :: Metadata , blockStart :: Int , blockEnd :: Int , blockContent :: Text } deriving (Show, Eq, Generic) instance ToJSON Block