diff options
| author | Chris Wells <chris@mathematicaster.org> | 2024-12-30 21:23:52 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2024-12-30 21:23:52 -0600 |
| commit | 42a2d42eecf551dd1990c97c1ae2586cd46674be (patch) | |
| tree | 873e80c07aca811167aa06caa19de7334c94048d /src/Hakyll/TeX/BibTeX.hs | |
| download | main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.gz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.bz2 main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.lz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.xz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.zst main-42a2d42eecf551dd1990c97c1ae2586cd46674be.zip | |
Started writing the main utilities for my webpage
Diffstat (limited to 'src/Hakyll/TeX/BibTeX.hs')
| -rw-r--r-- | src/Hakyll/TeX/BibTeX.hs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/Hakyll/TeX/BibTeX.hs b/src/Hakyll/TeX/BibTeX.hs new file mode 100644 index 0000000..b085dfa --- /dev/null +++ b/src/Hakyll/TeX/BibTeX.hs @@ -0,0 +1,36 @@ +{-# OPTIONS_GHC -fno-warn-orphans #-} +module Hakyll.TeX.BibTeX + ( bibtexCompiler + , compileBibtex + , 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 B +import Text.BibTeX.Parse qualified as B +import Text.Parsec qualified as P +import Text.Parsec.Error qualified as P + +type BibTeX = B.T + +deriving instance Generic B.T +instance Binary B.T + +instance Writable B.T where + write p = write p . B.entry + +instance Writable [B.T] where + write p = write p . fold . L.intersperse "\n" . fmap B.entry + + +compileBibtex :: (StringConv s String) => Item s -> Compiler (Item [B.T]) +compileBibtex (Item i b) = either (throwError . fmap P.messageString . P.errorMessages) (pure . Item i) $ P.parse p (show i) (toSL b) + where + p = B.skippingLeadingSpace $ B.file <* P.eof + +bibtexCompiler :: Compiler (Item [B.T]) +bibtexCompiler = getResourceBody >>= compileBibtex |
