Skip to content

Commit

Permalink
betweenSpaces combinator to reduce duplication
Browse files Browse the repository at this point in the history
  • Loading branch information
Peaker committed Nov 3, 2012
1 parent 60f6872 commit 4bbe15c
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions Cabal/Distribution/ParseUtils.hs
Expand Up @@ -585,11 +585,15 @@ parseFilePathQ = parseTokenQ
-- removed until normalise is no longer broken, was:
-- liftM normalise parseTokenQ

betweenSpaces :: ReadP r a -> ReadP r a
betweenSpaces act = do skipSpaces
res <- act
skipSpaces
return res

parseBuildTool :: ReadP r Dependency
parseBuildTool = do name <- parseBuildToolNameQ
skipSpaces
ver <- parseVersionRangeQ <++ return anyVersion
skipSpaces
ver <- betweenSpaces $ parseVersionRangeQ <++ return anyVersion
return $ Dependency name ver

parseBuildToolNameQ :: ReadP r PackageName
Expand All @@ -608,9 +612,8 @@ parseBuildToolName = do ns <- sepBy1 component (ReadP.char '-')
-- It then has a package version number like 2.10.13
parsePkgconfigDependency :: ReadP r Dependency
parsePkgconfigDependency = do name <- munch1 (\c -> isAlphaNum c || c `elem` "+-._")
skipSpaces
ver <- parseVersionRangeQ <++ return anyVersion
skipSpaces
ver <- betweenSpaces $
parseVersionRangeQ <++ return anyVersion
return $ Dependency (PackageName name) ver

parsePackageNameQ :: ReadP r PackageName
Expand All @@ -630,9 +633,7 @@ parseTestedWithQ = parseQuoted tw <++ tw
where
tw :: ReadP r (CompilerFlavor,VersionRange)
tw = do compiler <- parseCompilerFlavorCompat
skipSpaces
version <- parse <++ return anyVersion
skipSpaces
version <- betweenSpaces $ parse <++ return anyVersion
return (compiler,version)

parseLicenseQ :: ReadP r License
Expand Down Expand Up @@ -662,7 +663,7 @@ parseSepList :: ReadP r b
-> ReadP r a -- ^The parser for the stuff between commas
-> ReadP r [a]
parseSepList sepr p = sepBy p separator
where separator = skipSpaces >> sepr >> skipSpaces
where separator = betweenSpaces sepr

parseSpaceList :: ReadP r a -- ^The parser for the stuff between commas
-> ReadP r [a]
Expand Down

1 comment on commit 4bbe15c

@23Skidoo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! betweenSpaces is self-explanatory and can be useful on its own.

Please sign in to comment.