commit a03d3b043458f45d29ba32068a77c0d3b8a4223f Author: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Fri Apr 2 15:14:02 2021 +0200 Allow compilation with pandoc 2.12 and 2.13 pandoc 2.13 introduced the following breakages for gitit: * UTF8.readFile now returns a Text which is actually ideal for gitit. If pandoc is new enough we just make readFileUTF8 an alias for UTF8.readFile. * Text.Pandoc.Shared no longer exports substitute. In order to be conservative I've chosen to just copy the substitute function from pandoc 2.11.4. I need this patch kind of urgently so I didn't want to make any changes or refactors independently from upstream if avoidable. However, I'd be happy to rebase this PR branch to adopt a different solution to just copying the function. diff --git a/src/Network/Gitit/Authentication.hs b/src/Network/Gitit/Authentication.hs index 4c240e7..c0f92fd 100644 --- a/src/Network/Gitit/Authentication.hs +++ b/src/Network/Gitit/Authentication.hs @@ -44,7 +44,7 @@ import System.Exit import System.Log.Logger (logM, Priority(..)) import Data.Char (isAlphaNum, isAlpha) import qualified Data.Map as M -import Text.Pandoc.Shared (substitute) +import Data.List (stripPrefix) import Data.Maybe (isJust, fromJust, isNothing, fromMaybe) import Network.URL (exportURL, add_param, importURL) import Network.BSD (getHostName) @@ -54,6 +54,16 @@ import Codec.Binary.UTF8.String (encodeString) import Data.ByteString.UTF8 (toString) import Network.Gitit.Rpxnow as R +-- | Replace each occurrence of one sublist in a list with another. +-- Vendored in from pandoc 2.11.4 as 2.12 removed this function. +substitute :: (Eq a) => [a] -> [a] -> [a] -> [a] +substitute _ _ [] = [] +substitute [] _ xs = xs +substitute target replacement lst@(x:xs) = + case stripPrefix target lst of + Just lst' -> replacement ++ substitute target replacement lst' + Nothing -> x : substitute target replacement xs + data ValidationType = Register | ResetPassword deriving (Show,Read) diff --git a/src/Network/Gitit/Util.hs b/src/Network/Gitit/Util.hs index c5e9fe5..067130a 100644 --- a/src/Network/Gitit/Util.hs +++ b/src/Network/Gitit/Util.hs @@ -45,7 +45,11 @@ import Network.URL (encString) -- | Read file as UTF-8 string. Encode filename as UTF-8. readFileUTF8 :: FilePath -> IO Text +#if MIN_VERSION_pandoc(2,12,0) +readFileUTF8 = UTF8.readFile +#else readFileUTF8 = fmap T.pack . UTF8.readFile +#endif -- | Perform a function a directory and return to working directory. inDir :: FilePath -> IO a -> IO a