summaryrefslogtreecommitdiffstats
path: root/src/MdBlocks/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/MdBlocks/Types.hs')
-rw-r--r--src/MdBlocks/Types.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/MdBlocks/Types.hs b/src/MdBlocks/Types.hs
new file mode 100644
index 0000000..1d8450e
--- /dev/null
+++ b/src/MdBlocks/Types.hs
@@ -0,0 +1,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