debian-build 0.4.0.0 → 0.4.0.1
raw patch · 2 files changed
+22/−34 lines, 2 files
Files
- debian-build.cabal +5/−3
- src/Debian/Package/Data/Source.hs +17/−31
debian-build.cabal view
@@ -1,5 +1,5 @@ name: debian-build-version: 0.4.0.0+version: 0.4.0.1 synopsis: Debian package build sequence tools description: This package provides build sequence functions for debian package, and includes on-the-fly@@ -9,10 +9,10 @@ license-file: LICENSE author: Kei Hibino maintainer: ex8k.hibino@gmail.com--- copyright:+copyright: Copyright (c) 2014, 2015 Kei Hibino category: Debian build-type: Simple-cabal-version: >=1.8+cabal-version: >=1.10 library exposed-modules:@@ -36,6 +36,7 @@ hs-source-dirs: src ghc-options: -Wall+ default-language: Haskell2010 executable odebuild build-depends: base <5@@ -44,6 +45,7 @@ main-is: odebuild.hs hs-source-dirs: mains ghc-options: -Wall+ default-language: Haskell2010 source-repository head type: git
src/Debian/Package/Data/Source.hs view
@@ -23,7 +23,9 @@ import Data.Maybe (listToMaybe) import Control.Arrow (second)-import Control.Monad (ap, MonadPlus, mplus)+import Control.Applicative ((<$>), pure, (<*>), (<|>))+import Control.Monad.Trans.State (StateT, runStateT)+import Control.Monad.Trans.Class (lift) import Numeric (readDec) import Data.Char (isSpace) import Data.Version (Version (Version, versionBranch), showVersion, parseVersion)@@ -35,28 +37,12 @@ Hackage, mkHackageDefault, NameRule (Simple), debianNamesFromSourceName) --- Combinators like Applicative -- for base-4.5.0.0 - debian wheezy--(<$>) :: Functor m => (a -> b) -> m a -> m b-(<$>) = fmap--pure :: Monad m => a -> m a-pure = return--(<*>) :: Monad m => m (a -> b) -> m a -> m b-(<*>) = ap--(*>) :: Monad m => m a -> m b -> m b-(*>) = (>>)---- (<*) :: (Functor m, Monad m) => m a -> m b -> m a--- fa <* fb = const <$> fa <*> fb--(<|>) :: MonadPlus m => m a -> m a -> m a-(<|>) = mplus+-- For base-4.5.0.0 - debian wheezy, portability trick.+-- Monad m ==> Applicative (StateT s m)+type Parser = StateT () ReadP -infixl 3 <|>-infixl 4 <$>, <*>, *>+runParser :: Parser a -> String -> [(a, String)]+runParser p in0 = [ (x, in1) | ((x, ()), in1) <- readP_to_S (runStateT p ()) in0 ] -- | Version type for Debian@@ -92,23 +78,23 @@ lexWord :: String -> [(String, String)] lexWord = (:[]) . break isSpace . dropWhile isSpace -returnParsed :: ReadP a -> String -> ReadP a-returnParsed p s = case [ x | (x, "") <- readP_to_S p s ] of+returnParsed :: Parser a -> String -> Parser a+returnParsed p s = case [ x | (x, "") <- runParser p s ] of [x] -> return x [] -> fail "ReadP: no parse" _ -> fail "ReadP: ambiguous parse" -returnParsedVersion :: String -> ReadP Version-returnParsedVersion = returnParsed parseVersion+returnParsedVersion :: String -> Parser Version+returnParsedVersion = returnParsed $ lift parseVersion -returnParsedNMU :: String -> ReadP (Maybe Int)+returnParsedNMU :: String -> Parser (Maybe Int) returnParsedNMU = returnParsed $- Just <$> (string "+nmu" *> readS_to_P readDec) <|>+ Just <$> lift (string "+nmu" >> readS_to_P readDec) <|> pure Nothing -parseDebianVersion :: ReadP DebianVersion+parseDebianVersion :: Parser DebianVersion parseDebianVersion = do- vs0 <- readS_to_P lexWord+ vs0 <- lift $ readS_to_P lexWord let (vs1, rtag) = break (== '-') vs0 (vs2, nmu) = break (== '+') vs1 if rtag == ""@@ -121,7 +107,7 @@ d (DebianNonNative v r) = showVersion v ++ '-': r instance Read DebianVersion where- readsPrec _ = readP_to_S parseDebianVersion+ readsPrec _ = runParser parseDebianVersion readMaybe' :: Read a => String -> Maybe a readMaybe' = fmap fst . listToMaybe . filter ((== "") . snd) . reads