@@ -19,7 +19,7 @@ module Distribution.Types.Flag (
19
19
dispFlagAssignment ,
20
20
parsecFlagAssignment ,
21
21
parsecFlagAssignmentNonEmpty ,
22
- describeFlagAssignment ,
22
+ describeFlagAssignmentNonEmpty ,
23
23
) where
24
24
25
25
import Prelude ()
@@ -240,6 +240,36 @@ showFlagValue :: (FlagName, Bool) -> String
240
240
showFlagValue (f, True ) = ' +' : unFlagName f
241
241
showFlagValue (f, False ) = ' -' : unFlagName f
242
242
243
+ -- | @since 3.4.0.0
244
+ instance Pretty FlagAssignment where
245
+ pretty = dispFlagAssignment
246
+
247
+ -- |
248
+ --
249
+ -- >>> simpleParsec "" :: Maybe FlagAssignment
250
+ -- Just (fromList [])
251
+ --
252
+ -- >>> simpleParsec "+foo -bar" :: Maybe FlagAssignment
253
+ -- Just (fromList [(FlagName "bar",(1,False)),(FlagName "foo",(1,True))])
254
+ --
255
+ -- >>> simpleParsec "-none -any" :: Maybe FlagAssignment
256
+ -- Just (fromList [(FlagName "any",(1,False)),(FlagName "none",(1,False))])
257
+ --
258
+ -- >>> simpleParsec "+foo -foo +foo +foo" :: Maybe FlagAssignment
259
+ -- Just (fromList [(FlagName "foo",(4,True))])
260
+ --
261
+ -- >>> simpleParsec "+foo -bar baz" :: Maybe FlagAssignment
262
+ -- Nothing
263
+ --
264
+ -- @since 3.4.0.0
265
+ --
266
+ instance Parsec FlagAssignment where
267
+ parsec = parsecFlagAssignment
268
+
269
+ instance Described FlagAssignment where
270
+ describe _ = REMunch RESpaces1 $
271
+ REUnion [fromString " +" , fromString " -" ] <> describe (Proxy :: Proxy FlagName )
272
+
243
273
-- | Pretty-prints a flag assignment.
244
274
dispFlagAssignment :: FlagAssignment -> Disp. Doc
245
275
dispFlagAssignment = Disp. hsep . map (Disp. text . showFlagValue) . unFlagAssignment
@@ -250,7 +280,7 @@ parsecFlagAssignment = mkFlagAssignment <$>
250
280
P. sepBy (onFlag <|> offFlag) P. skipSpaces1
251
281
where
252
282
onFlag = do
253
- _ <- P. optional ( P. char ' +' )
283
+ _ <- P. char ' +'
254
284
f <- parsec
255
285
return (f, True )
256
286
offFlag = do
@@ -276,6 +306,6 @@ parsecFlagAssignmentNonEmpty = mkFlagAssignment . toList <$>
276
306
f <- parsec
277
307
return (f, False )
278
308
279
- describeFlagAssignment :: GrammarRegex void
280
- describeFlagAssignment = REMunch1 RESpaces1 $
309
+ describeFlagAssignmentNonEmpty :: GrammarRegex void
310
+ describeFlagAssignmentNonEmpty = REMunch1 RESpaces1 $
281
311
REUnion [fromString " +" , fromString " -" ] <> describe (Proxy :: Proxy FlagName )
0 commit comments