aboutsummaryrefslogtreecommitdiff
path: root/haddock-library/src/Documentation/Haddock/Parser
diff options
context:
space:
mode:
Diffstat (limited to 'haddock-library/src/Documentation/Haddock/Parser')
-rw-r--r--haddock-library/src/Documentation/Haddock/Parser/Util.hs19
1 files changed, 18 insertions, 1 deletions
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