{-# 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 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