From 54031f0f7785287307d2965fd689c960518f2c43 Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Wed, 4 Jun 2025 00:23:08 +0300 Subject: [PATCH] Merge spaces when parsing constraint set constraints --- haskell-ci.cabal | 2 +- src/HaskellCI/Newtypes.hs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/haskell-ci.cabal b/haskell-ci.cabal index cea83d90..d112b8c5 100644 --- a/haskell-ci.cabal +++ b/haskell-ci.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: haskell-ci -version: 0.19.20250531 +version: 0.19.20250604 synopsis: Haskell CI script generator description: Script generator (@haskell-ci@) for diff --git a/src/HaskellCI/Newtypes.hs b/src/HaskellCI/Newtypes.hs index c8f2dfa5..8a12c6f6 100644 --- a/src/HaskellCI/Newtypes.hs +++ b/src/HaskellCI/Newtypes.hs @@ -64,7 +64,15 @@ newtype NoCommas = NoCommas String deriving anyclass (C.Newtype String) instance C.Parsec NoCommas where - parsec = NoCommas <$> liftA2 (:) (C.satisfy (not . isSpace)) (C.munch (/= ',')) + parsec = NoCommas . mergeSpaces <$> liftA2 (:) (C.satisfy (not . isSpace)) (C.munch (/= ',')) + +mergeSpaces :: String -> String +mergeSpaces [] = [] +mergeSpaces (' ' : s) = ' ' : go s where + go [] = [] + go (' ' : s') = go s' + go (c : s') = c : mergeSpaces s' +mergeSpaces (c : s) = c : mergeSpaces s instance C.Pretty NoCommas where pretty (NoCommas p) = PP.text p