module Text.Authoring.Bibliography (bibliographyContent, withDatabaseFile) where import Control.Lens (use) import Control.Monad import Control.Monad.State import Control.Monad.IO.Class import qualified Data.Set as Set import qualified Data.Text as Text import Text.CSL.Input.Identifier (toBibTeXItem, HasDatabase, withDatabaseFile) import Text.Authoring.State -- | generate the content for the bibliography file. bibliographyContent :: (MonadState s m, HasAuthorState s, HasDatabase s, MonadIO m) => m Text.Text bibliographyContent = do urls <- use citedUrlSet items <- mapM toBibTeXItem $ Set.toList urls return $ Text.unlines $ items