packages feed

imbib-1.0.0: BibFile.hs

module BibFile where

import Control.Applicative hiding ((<|>),many)
import Control.Monad
import Control.Monad.Trans
import qualified Data.ByteString 
import Data.Char
import Data.List
import Data.List.Split
import Data.Maybe
import Data.Tree
import System.Directory
import System.FilePath
import Data.Function

import Text.ParserCombinators.Parsec (parseFromFile)
import BibData


--------------------------------------
-- Bib file manipulation

bibfile = "/home/bernardy/project/gitroot/bibtex/jp.bib"

loadBibliography = loadBibliographyFrom bibfile

loadBibliographyFrom fname = do
  mBib <- fmap bibToForest <$> parseFromFile parseBib bibfile 
  case mBib of
    Left err -> do print "Failed to load library"
                   print err
                   return []
    Right bib -> do putStrLn $ show (length $ bib) ++ " entries loaded." -- force it right here
                    -- print $ last bib -- really force closing the file... ?
                    return bib

saveBibliography bib = do
  writeFile bibfile (concatMap formatEntry $ map treeToEntry bib)
  putStrLn $ show (length bib) ++ " entries saved to " ++ bibfile