{-# OPTIONS_GHC -fno-warn-orphans #-} module Hakyll.TeX.BibTeX ( bibtexCompiler , compileBibtex , BibEntry , BibTeX ) where import Prolog import Data.List qualified as L import Hakyll import Text.BibTeX.Entry qualified as B import Text.BibTeX.Format qualified as BF import Text.BibTeX.Parse qualified as B import Text.Parsec qualified as P import Hakyll.Parsec type BibEntry = B.T type BibTeX = [BibEntry] deriving instance Generic B.T instance Binary B.T instance Writable B.T where write p = write p . fmap BF.entry instance Writable [B.T] where write p = write p . fmap (fold . L.intersperse "\n" . fmap BF.entry) compileBibtex :: (StringConv s String) => Item s -> Compiler (Item BibTeX) compileBibtex = fmap (B.lowerCaseFieldNames <<$>>) . compileParsec_ p . fmap toSL where p = B.skippingLeadingSpace $ B.file <* P.space <* P.eof bibtexCompiler :: Compiler (Item BibTeX) bibtexCompiler = getResourceBody >>= compileBibtex