Distribution.Fields.Pretty

Cabal-3.0.0.0: A framework for packaging Haskell software

Safe Haskell | None
Language | Haskell2010

Distribution.Fields.Pretty

Contents

- Fields
- Transformation from `Field`

Description

Cabal-like file AST types: `Field`, `Section` etc,

This (intermediate) data type is used for pretty-printing.

Since: Cabal-3.0.0.0

Synopsis

- data PrettyField ann
  - = PrettyField ann FieldName Doc
  - | PrettySection ann FieldName [Doc] [PrettyField ann]
- showFields :: (ann -> [String]) -> [PrettyField ann] -> String
- showFields' :: (ann -> [String]) -> Int -> [PrettyField ann] -> String
- fromParsecFields :: [Field ann] -> [PrettyField ann]
- genericFromParsecFields :: Applicative f => (FieldName -> [FieldLine ann] -> f Doc) -> (FieldName -> [SectionArg ann] -> f [Doc]) -> [Field ann] -> f [PrettyField ann]
- prettyFieldLines :: FieldName -> [FieldLine ann] -> Doc
- prettySectionArgs :: FieldName -> [SectionArg ann] -> [Doc]

# Fields

data PrettyField ann Source #

Constructors

PrettyField ann FieldName Doc |
PrettySection ann FieldName [Doc] [PrettyField ann] |

#### Instances

Instances details

Functor PrettyField # |
Instance details Defined in Distribution.Fields.Pretty Methods fmap :: (a -> b) -> PrettyField a -> PrettyField b Source # (<$) :: a -> PrettyField b -> PrettyField a Source #
Foldable PrettyField # |
Instance details Defined in Distribution.Fields.Pretty Methods fold :: Monoid m => PrettyField m -> m Source # foldMap :: Monoid m => (a -> m) -> PrettyField a -> m Source # foldMap' :: Monoid m => (a -> m) -> PrettyField a -> m Source # foldr :: (a -> b -> b) -> b -> PrettyField a -> b Source # foldr' :: (a -> b -> b) -> b -> PrettyField a -> b Source # foldl :: (b -> a -> b) -> b -> PrettyField a -> b Source # foldl' :: (b -> a -> b) -> b -> PrettyField a -> b Source # foldr1 :: (a -> a -> a) -> PrettyField a -> a Source # foldl1 :: (a -> a -> a) -> PrettyField a -> a Source # toList :: PrettyField a -> [a] Source # null :: PrettyField a -> Bool Source # length :: PrettyField a -> Int Source # elem :: Eq a => a -> PrettyField a -> Bool Source # maximum :: Ord a => PrettyField a -> a Source # minimum :: Ord a => PrettyField a -> a Source # sum :: Num a => PrettyField a -> a Source # product :: Num a => PrettyField a -> a Source #
Traversable PrettyField # |
Instance details Defined in Distribution.Fields.Pretty Methods traverse :: Applicative f => (a -> f b) -> PrettyField a -> f (PrettyField b) Source # sequenceA :: Applicative f => PrettyField (f a) -> f (PrettyField a) Source # mapM :: Monad m => (a -> m b) -> PrettyField a -> m (PrettyField b) Source # sequence :: Monad m => PrettyField (m a) -> m (PrettyField a) Source #

showFields :: (ann -> [String]) -> [PrettyField ann] -> String Source #

Prettyprint a list of fields.

Note: the first argument should return `String`s without newlines and properly prefixes (with `--`) to count as comments. This unsafety is left in place so one could generate empty lines between comment lines.

showFields' :: (ann -> [String]) -> Int -> [PrettyField ann] -> String Source #

`showFields` with user specified indentation.

# Transformation from `Field`

fromParsecFields :: [Field ann] -> [PrettyField ann] Source #

Simple variant of `genericFromParsecField`

genericFromParsecFields Source #

Arguments

:: Applicative f |
=> (FieldName -> [FieldLine ann] -> f Doc) | transform field contents
-> (FieldName -> [SectionArg ann] -> f [Doc]) | transform section arguments
-> [Field ann] |
-> f [PrettyField ann] |

prettyFieldLines :: FieldName -> [FieldLine ann] -> Doc Source #

Used in `fromParsecFields`.

prettySectionArgs :: FieldName -> [SectionArg ann] -> [Doc] Source #

Used in `fromParsecFields`.