authoring-0.2.3: src/Text/Authoring/Bibliography.hs
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