Unverified Commit 25e64a4a authored by Jack Todaro's avatar Jack Todaro
Browse files

dev-haskell/hakyll: bump up to 4.13.4.1, patch for pandoc-2.11



Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: default avatarJack Todaro <solpeth@posteo.org>
parent d881a4e8
DIST hakyll-4.13.4.0.tar.gz 105151 BLAKE2B a17ddcc7846d4c50f3ade0d430a0208c6c85d9827e5daa69b1652050313cb62fc87fd8b1547cacacbca5562f4cf172eacd7e641d3921516c4578e0684ae55ee9 SHA512 4ade6776cfee7a8293ba4a659cf8633c0e6641ee2c33db9cdddeaca996ff092d027ce4165e174d7acdeb8485904394d9a899351d9e3c065e4ce7cb5af61ee08a DIST hakyll-4.13.4.0.tar.gz 105151 BLAKE2B a17ddcc7846d4c50f3ade0d430a0208c6c85d9827e5daa69b1652050313cb62fc87fd8b1547cacacbca5562f4cf172eacd7e641d3921516c4578e0684ae55ee9 SHA512 4ade6776cfee7a8293ba4a659cf8633c0e6641ee2c33db9cdddeaca996ff092d027ce4165e174d7acdeb8485904394d9a899351d9e3c065e4ce7cb5af61ee08a
DIST hakyll-4.13.4.1.tar.gz 105251 BLAKE2B 6a2c83f2784aad1c80ecce7d01ade1d1bde0546c3f828acc74c88df95b4217f191eb516bf57cc1993bdaebd76629d86d3963bf386f7df68ca5dc17288f3f2b3f SHA512 6045a1461855d46f57a20f7a84636f90e6d151bcbaf09511f10ab66fa0567062e355ff580d1f12a4432bbe517bc9e162d65927f3c343f8f077e81981e7c7973c
From 77afcbc2937a4ee5db9666c1f3e0c090914d3980 Mon Sep 17 00:00:00 2001
From: Jasper Van der Jeugt <m@jaspervdj.be>
Date: Sun, 6 Dec 2020 19:24:06 +0100
Subject: [PATCH] Pandoc 2.11 compatibility (#826)
* Pandoc 2.11 compatibility
* Bump stack.yaml
* Bump stack dependencies
---
lib/Hakyll/Web/Pandoc/Biblio.hs | 102 +++++++++++++++++---------------
lib/Hakyll/Web/Pandoc/Binary.hs | 12 ----
5 files changed, 123 insertions(+), 86 deletions(-)
diff --git a/lib/Hakyll/Web/Pandoc/Biblio.hs b/lib/Hakyll/Web/Pandoc/Biblio.hs
index 5127d881..567f478b 100644
--- a/lib/Hakyll/Web/Pandoc/Biblio.hs
+++ b/lib/Hakyll/Web/Pandoc/Biblio.hs
@@ -12,6 +12,7 @@
{-# LANGUAGE Arrows #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverloadedStrings #-}
module Hakyll.Web.Pandoc.Biblio
( CSL
, cslCompiler
@@ -23,33 +24,31 @@ module Hakyll.Web.Pandoc.Biblio
--------------------------------------------------------------------------------
-import Control.Monad (liftM, replicateM)
-import Data.Binary (Binary (..))
-import Data.Typeable (Typeable)
+import Control.Monad (liftM)
+import Data.Binary (Binary (..))
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Map as Map
+import qualified Data.Time as Time
+import Data.Typeable (Typeable)
import Hakyll.Core.Compiler
import Hakyll.Core.Compiler.Internal
import Hakyll.Core.Identifier
import Hakyll.Core.Item
-import Hakyll.Core.Provider
import Hakyll.Core.Writable
import Hakyll.Web.Pandoc
-import Hakyll.Web.Pandoc.Binary ()
-import qualified Text.CSL as CSL
-import Text.CSL.Pandoc (processCites)
-import Text.Pandoc (Pandoc, ReaderOptions (..),
- enableExtension, Extension (..))
+import Text.Pandoc (Extension (..), Pandoc,
+ ReaderOptions (..),
+ enableExtension)
+import qualified Text.Pandoc as Pandoc
+import qualified Text.Pandoc.Citeproc as Pandoc (processCitations)
--------------------------------------------------------------------------------
-data CSL = CSL
- deriving (Show, Typeable)
+newtype CSL = CSL {unCSL :: B.ByteString}
+ deriving (Binary, Show, Typeable)
---------------------------------------------------------------------------------
-instance Binary CSL where
- put CSL = return ()
- get = return CSL
-
--------------------------------------------------------------------------------
instance Writable CSL where
@@ -59,21 +58,12 @@ instance Writable CSL where
--------------------------------------------------------------------------------
cslCompiler :: Compiler (Item CSL)
-cslCompiler = makeItem CSL
-
-
---------------------------------------------------------------------------------
-newtype Biblio = Biblio [CSL.Reference]
- deriving (Show, Typeable)
+cslCompiler = fmap (CSL . BL.toStrict) <$> getResourceLBS
--------------------------------------------------------------------------------
-instance Binary Biblio where
- -- Ugly.
- get = do
- len <- get
- Biblio <$> replicateM len get
- put (Biblio rs) = put (length rs) >> mapM_ put rs
+newtype Biblio = Biblio {unBiblio :: B.ByteString}
+ deriving (Binary, Show, Typeable)
--------------------------------------------------------------------------------
@@ -84,12 +74,7 @@ instance Writable Biblio where
--------------------------------------------------------------------------------
biblioCompiler :: Compiler (Item Biblio)
-biblioCompiler = do
- filePath <- getResourceFilePath
- makeItem =<< unsafeCompiler (Biblio <$> CSL.readBiblioFile idpred filePath)
- where
- -- This is a filter on citations. We include all citations.
- idpred = const True
+biblioCompiler = fmap (Biblio . BL.toStrict) <$> getResourceLBS
--------------------------------------------------------------------------------
@@ -99,19 +84,42 @@ readPandocBiblio :: ReaderOptions
-> (Item String)
-> Compiler (Item Pandoc)
readPandocBiblio ropt csl biblio item = do
- -- Parse CSL file, if given
- provider <- compilerProvider <$> compilerAsk
- style <- unsafeCompiler $
- CSL.readCSLFile Nothing . (resourceFilePath provider) . itemIdentifier $ csl
-
- -- We need to know the citation keys, add then *before* actually parsing the
- -- actual page. If we don't do this, pandoc won't even consider them
- -- citations!
- let Biblio refs = itemBody biblio
- pandoc <- itemBody <$> readPandocWith ropt item
- let pandoc' = processCites style refs pandoc
-
- return $ fmap (const pandoc') item
+ -- It's not straightforward to use the Pandoc API as of 2.11 to deal with
+ -- citations, since it doesn't export many things in 'Text.Pandoc.Citeproc'.
+ -- The 'citeproc' package is also hard to use.
+ --
+ -- So instead, we try treating Pandoc as a black box. Pandoc can read
+ -- specific csl and bilbio files based on metadata keys.
+ --
+ -- So we load the CSL and Biblio files and pass them to Pandoc using the
+ -- ersatz filesystem.
+ Pandoc.Pandoc (Pandoc.Meta meta) blocks <- itemBody <$>
+ readPandocWith ropt item
+
+ let cslFile = Pandoc.FileInfo zeroTime . unCSL $ itemBody csl
+ bibFile = Pandoc.FileInfo zeroTime . unBiblio $ itemBody biblio
+ addBiblioFiles = \st -> st
+ { Pandoc.stFiles =
+ Pandoc.insertInFileTree "_hakyll/style.csl" cslFile .
+ Pandoc.insertInFileTree "_hakyll/refs.bib" bibFile $
+ Pandoc.stFiles st
+ }
+ biblioMeta = Pandoc.Meta .
+ Map.insert "csl" (Pandoc.MetaString "_hakyll/style.csl") .
+ Map.insert "bibliography" (Pandoc.MetaString "_hakyll/refs.bib") $
+ meta
+ errOrPandoc = Pandoc.runPure $ do
+ Pandoc.modifyPureState addBiblioFiles
+ Pandoc.processCitations $ Pandoc.Pandoc biblioMeta blocks
+
+ pandoc <- case errOrPandoc of
+ Left e -> compilerThrow ["Error during processCitations: " ++ show e]
+ Right x -> return x
+
+ return $ fmap (const pandoc) item
+
+ where
+ zeroTime = Time.UTCTime (toEnum 0) 0
--------------------------------------------------------------------------------
pandocBiblioCompiler :: String -> String -> Compiler (Item String)
diff --git a/lib/Hakyll/Web/Pandoc/Binary.hs b/lib/Hakyll/Web/Pandoc/Binary.hs
index 5d3efead..3f7f4fb5 100644
--- a/lib/Hakyll/Web/Pandoc/Binary.hs
+++ b/lib/Hakyll/Web/Pandoc/Binary.hs
@@ -4,9 +4,6 @@ module Hakyll.Web.Pandoc.Binary where
import Data.Binary (Binary (..))
-import qualified Text.CSL as CSL
-import qualified Text.CSL.Reference as REF
-import qualified Text.CSL.Style as STY
import Text.Pandoc
--------------------------------------------------------------------------------
@@ -18,7 +15,6 @@ instance Binary Caption
instance Binary Cell
instance Binary ColSpan
instance Binary ColWidth
-instance Binary CSL.Reference
instance Binary Citation
instance Binary CitationMode
instance Binary Format
@@ -27,17 +23,9 @@ instance Binary ListNumberDelim
instance Binary ListNumberStyle
instance Binary MathType
instance Binary QuoteType
-instance Binary REF.CLabel
-instance Binary REF.CNum
-instance Binary REF.Literal
-instance Binary REF.RefDate
-instance Binary REF.RefType
-instance Binary REF.Season
instance Binary Row
instance Binary RowHeadColumns
instance Binary RowSpan
-instance Binary STY.Agent
-instance Binary STY.Formatted
instance Binary TableBody
instance Binary TableFoot
instance Binary TableHead
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# ebuild generated by hackport 0.6.7.9999
CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
inherit haskell-cabal
DESCRIPTION="A static website compiler library"
HOMEPAGE="https://jaspervdj.be/hakyll"
SRC_URI="https://hackage.haskell.org/package/${P}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~x86"
IUSE="buildwebsite +checkexternal +previewserver +usepandoc +watchserver"
RDEPEND=">=dev-haskell/blaze-html-0.5:=[profile?] <dev-haskell/blaze-html-0.10:=[profile?]
>=dev-haskell/blaze-markup-0.5.1:=[profile?] <dev-haskell/blaze-markup-0.9:=[profile?]
>=dev-haskell/cryptonite-0.25:=[profile?] <dev-haskell/cryptonite-0.28:=[profile?]
>=dev-haskell/data-default-0.4:=[profile?] <dev-haskell/data-default-0.8:=[profile?]
>=dev-haskell/file-embed-0.0.10.1:=[profile?] <dev-haskell/file-embed-0.0.14:=[profile?]
>=dev-haskell/lrucache-1.1.1:=[profile?] <dev-haskell/lrucache-1.3:=[profile?]
>=dev-haskell/memory-0.14.18:=[profile?] <dev-haskell/memory-0.16:=[profile?]
>=dev-haskell/mtl-1:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
>=dev-haskell/network-uri-2.6:=[profile?] <dev-haskell/network-uri-2.7:=[profile?]
>=dev-haskell/optparse-applicative-0.12:=[profile?] <dev-haskell/optparse-applicative-0.16:=[profile?]
>=dev-haskell/parsec-3.0:=[profile?] <dev-haskell/parsec-3.2:=[profile?]
>=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
>=dev-haskell/regex-tdfa-1.1:=[profile?] <dev-haskell/regex-tdfa-1.4:=[profile?]
>=dev-haskell/resourcet-1.1:=[profile?] <dev-haskell/resourcet-1.3:=[profile?]
>=dev-haskell/scientific-0.3.4:=[profile?] <dev-haskell/scientific-0.4:=[profile?]
>=dev-haskell/tagsoup-0.13.1:=[profile?] <dev-haskell/tagsoup-0.15:=[profile?]
>=dev-haskell/text-0.11:=[profile?] <dev-haskell/text-1.3:=[profile?]
>=dev-haskell/time-locale-compat-0.1:=[profile?] <dev-haskell/time-locale-compat-0.2:=[profile?]
>=dev-haskell/unordered-containers-0.2:=[profile?] <dev-haskell/unordered-containers-0.3:=[profile?]
>=dev-haskell/vector-0.11:=[profile?] <dev-haskell/vector-0.13:=[profile?]
>=dev-haskell/yaml-0.8.11:=[profile?] <dev-haskell/yaml-0.12:=[profile?]
>=dev-lang/ghc-8.6.3:=
buildwebsite? ( >=app-text/pandoc-2.11:=[profile?] <app-text/pandoc-2.12:=[profile?] )
checkexternal? ( >=dev-haskell/http-conduit-2.2:=[profile?] <dev-haskell/http-conduit-2.4:=[profile?] )
previewserver? ( >=dev-haskell/fsnotify-0.2:=[profile?] <dev-haskell/fsnotify-0.4:=[profile?]
>=dev-haskell/http-types-0.9:=[profile?] <dev-haskell/http-types-0.13:=[profile?]
>=dev-haskell/wai-3.2:=[profile?] <dev-haskell/wai-3.3:=[profile?]
>=dev-haskell/wai-app-static-3.1:=[profile?] <dev-haskell/wai-app-static-3.2:=[profile?]
>=dev-haskell/warp-3.2:=[profile?] <dev-haskell/warp-3.4:=[profile?] )
!previewserver? ( checkexternal? ( >=dev-haskell/http-types-0.7:=[profile?] <dev-haskell/http-types-0.13:=[profile?] )
watchserver? ( >=dev-haskell/fsnotify-0.2:=[profile?] <dev-haskell/fsnotify-0.4:=[profile?] ) )
usepandoc? ( >=app-text/pandoc-2.11:=[profile?] <app-text/pandoc-2.12:=[profile?] )
"
DEPEND="${RDEPEND}
>=dev-haskell/cabal-2.4.0.1
test? ( >=dev-haskell/quickcheck-2.8 <dev-haskell/quickcheck-2.15
>=dev-haskell/tasty-0.11 <dev-haskell/tasty-1.4
>=dev-haskell/tasty-hunit-0.9 <dev-haskell/tasty-hunit-0.11
>=dev-haskell/tasty-quickcheck-0.8 <dev-haskell/tasty-quickcheck-0.11 )
"
PATCHES=( "${FILESDIR}"/${P}-pandoc-2.11.patch )
src_prepare() {
default
cabal_chdeps \
'pandoc >= 2.10 && < 2.11,' 'pandoc >= 2.11' \
'pandoc >= 2.10 && < 2.11' 'pandoc >= 2.11' \
'pandoc-citeproc >= 0.14 && < 0.18' ' ' \
'file-embed >= 0.0.10.1 && < 0.0.12' 'file-embed >= 0.0.10.1'
}
src_configure() {
haskell-cabal_src_configure \
$(cabal_flag buildwebsite buildwebsite) \
$(cabal_flag checkexternal checkexternal) \
$(cabal_flag previewserver previewserver) \
$(cabal_flag usepandoc usepandoc) \
$(cabal_flag watchserver watchserver)
}
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
</maintainer> </maintainer>
<use> <use>
<flag name="buildwebsite">Build the hakyll website</flag> <flag name="buildwebsite">Build the hakyll website</flag>
<flag name="previewserver">Include the preview server</flag>
<flag name="checkexternal">Include external link checking</flag> <flag name="checkexternal">Include external link checking</flag>
<flag name="watchserver">wait for filesystem changes and rebuild pages</flag> <flag name="previewserver">Include the preview server</flag>
<flag name="usepandoc">Include Pandoc support</flag> <flag name="usepandoc">Include Pandoc support</flag>
<flag name="watchserver">Include the watch server</flag>
</use> </use>
<longdescription> <longdescription>
Hakyll is a static website compiler library. It provides you with the tools to Hakyll is a static website compiler library. It provides you with the tools to
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
* &lt;http://jaspervdj.be/hakyll&gt; * &lt;http://jaspervdj.be/hakyll&gt;
If you seek assistance, there's: If you seek assistance, there&#39;s:
* A google group: &lt;http://groups.google.com/group/hakyll&gt; * A google group: &lt;http://groups.google.com/group/hakyll&gt;
* An IRC channel, @#hakyll@ on freenode * An IRC channel, @#hakyll@ on freenode
Additionally, there's the Haddock documentation in the different modules, Additionally, there&#39;s the Haddock documentation in the different modules,
meant as a reference. meant as a reference.
</longdescription> </longdescription>
</pkgmetadata> </pkgmetadata>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment