blagda-0.1.0.0: src/Blagda/Types.hs
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DeriveGeneric #-}
module Blagda.Types where
import Data.Bifunctor
import Data.Aeson
import GHC.Generics (Generic)
data Post contents meta = Post
{ p_path :: FilePath
, p_contents :: contents
, p_meta :: meta
}
deriving (Eq, Ord, Show, Functor, Foldable, Traversable, Generic)
instance (ToJSON contents, ToJSON meta) => ToJSON (Post contents meta) where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = drop 2 }
instance Bifunctor Post where
bimap fab fcd (Post s a c)
= Post {p_path = s, p_contents = fab a, p_meta = fcd c}