From b973784c65c4d20c893b5377a7ced557d0a420cf Mon Sep 17 00:00:00 2001 From: Simon Hengel Date: Wed, 18 Jun 2014 11:01:18 +0800 Subject: Compatibility with older versions of base and bytestring --- haddock-library/haddock-library.cabal | 1 + haddock-library/src/Documentation/Haddock/Parser.hs | 2 +- .../src/Documentation/Haddock/Parser/Util.hs | 19 ++++++++++++++++++- .../test/Documentation/Haddock/Parser/UtilSpec.hs | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/haddock-library/haddock-library.cabal b/haddock-library/haddock-library.cabal index 3fb5591f..2dced3cc 100644 --- a/haddock-library/haddock-library.cabal +++ b/haddock-library/haddock-library.cabal @@ -63,6 +63,7 @@ test-suite spec build-depends: base + , base-compat , hspec , bytestring , deepseq diff --git a/haddock-library/src/Documentation/Haddock/Parser.hs b/haddock-library/src/Documentation/Haddock/Parser.hs index 3d146d33..f0597462 100644 --- a/haddock-library/src/Documentation/Haddock/Parser.hs +++ b/haddock-library/src/Documentation/Haddock/Parser.hs @@ -437,7 +437,7 @@ autoUrl = mkLink <$> url where url = mappend <$> ("http://" <|> "https://" <|> "ftp://") <*> takeWhile1 (not . isSpace) mkLink :: BS.ByteString -> DocH mod a - mkLink s = case BS.unsnoc s of + mkLink s = case unsnoc s of Just (xs, x) | x `elem` ",.!?" -> DocHyperlink (Hyperlink (decodeUtf8 xs) Nothing) <> DocString [x] _ -> DocHyperlink (Hyperlink (decodeUtf8 s) Nothing) diff --git a/haddock-library/src/Documentation/Haddock/Parser/Util.hs b/haddock-library/src/Documentation/Haddock/Parser/Util.hs index 25dba2d5..ef2af140 100644 --- a/haddock-library/src/Documentation/Haddock/Parser/Util.hs +++ b/haddock-library/src/Documentation/Haddock/Parser/Util.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} -- | -- Module : Documentation.Haddock.Parser.Util -- Copyright : (c) Mateusz Kowalczyk 2013-2014, @@ -9,7 +10,14 @@ -- Portability : portable -- -- Various utility functions used by the parser. -module Documentation.Haddock.Parser.Util where +module Documentation.Haddock.Parser.Util ( + unsnoc +, strip +, takeUntil +, makeLabeled +, takeHorizontalSpace +, skipHorizontalSpace +) where import Control.Applicative import Control.Monad (mfilter) @@ -18,6 +26,15 @@ import Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as BS import Prelude hiding (takeWhile) +#if MIN_VERSION_bytestring(0,10,2) +import Data.ByteString.Char8 (unsnoc) +#else +unsnoc :: ByteString -> Maybe (ByteString, Char) +unsnoc bs + | BS.null bs = Nothing + | otherwise = Just (BS.init bs, BS.last bs) +#endif + -- | Remove all leading and trailing whitespace strip :: String -> String strip = (\f -> f . f) $ dropWhile isSpace . reverse diff --git a/haddock-library/test/Documentation/Haddock/Parser/UtilSpec.hs b/haddock-library/test/Documentation/Haddock/Parser/UtilSpec.hs index 265a4d49..a6ac49ee 100644 --- a/haddock-library/test/Documentation/Haddock/Parser/UtilSpec.hs +++ b/haddock-library/test/Documentation/Haddock/Parser/UtilSpec.hs @@ -2,8 +2,8 @@ module Documentation.Haddock.Parser.UtilSpec (main, spec) where import Data.Attoparsec.ByteString.Char8 -import Data.Either import Documentation.Haddock.Parser.Util +import Data.Either.Compat (isLeft) import Test.Hspec main :: IO () -- cgit v1.2.3