summaryrefslogtreecommitdiff
path: root/src/Hakyll/TeX/BibTeX.hs
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2024-12-30 21:23:52 -0600
committerChris Wells <chris@mathematicaster.org>2024-12-30 21:23:52 -0600
commit42a2d42eecf551dd1990c97c1ae2586cd46674be (patch)
tree873e80c07aca811167aa06caa19de7334c94048d /src/Hakyll/TeX/BibTeX.hs
downloadmain-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.hs36
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