{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-} module Text.Authoring.State where import Control.Lens import Control.Lens.TH import Data.Default import qualified Data.Map as Map import qualified Data.Set as Set import Data.Text (Text) import qualified Text.CSL.Input.Identifier.Internal as Citation import Text.Authoring.Label -- | The record type of everything you need to know -- to write a paper. data AuthorState = AuthorState { _labelMap :: Map.Map Label Text , _citationDB :: Citation.Database , _citedUrlSet :: Set.Set String } makeClassy ''AuthorState instance Citation.HasDatabase AuthorState where database = citationDB instance Default AuthorState where def = AuthorState def def def