summaryrefslogtreecommitdiffstats
path: root/src/MdBlocks/Types.hs
blob: 1d8450e10a72965f9b206bfe631202b8b3b71a53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{-# 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