{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module Ormolu.Config.Gen
( PrinterOpts (..)
, CommaStyle (..)
, FunctionArrowsStyle (..)
, HaddockPrintStyle (..)
, HaddockPrintStyleModule (..)
, HaddockLocSignature (..)
, ImportExportStyle (..)
, LetStyle (..)
, InStyle (..)
, IfStyle (..)
, Unicode (..)
, SingleConstraintParens (..)
, ColumnLimit (..)
, SingleDerivingParens (..)
, ImportGrouping (..)
, emptyPrinterOpts
, defaultPrinterOpts
, defaultPrinterOptsYaml
, fillMissingPrinterOpts
, parsePrinterOptsCLI
, parsePrinterOptsJSON
, parsePrinterOptType
, renderPrinterOpt
)
where
import qualified Data.Aeson as Aeson
import qualified Data.Aeson.Types as Aeson
import Data.Functor.Identity (Identity)
import Data.List.NonEmpty (NonEmpty)
import Data.Scientific (floatingOrInteger)
import qualified Data.Text as Text
import GHC.Generics (Generic)
import qualified Ormolu.Config.Types as CT
import Text.Read (readEither, readMaybe)
data PrinterOpts f =
PrinterOpts
{
forall (f :: * -> *). PrinterOpts f -> f Int
poIndentation :: f Int
,
forall (f :: * -> *). PrinterOpts f -> f ColumnLimit
poColumnLimit :: f ColumnLimit
,
forall (f :: * -> *). PrinterOpts f -> f FunctionArrowsStyle
poFunctionArrows :: f FunctionArrowsStyle
,
forall (f :: * -> *). PrinterOpts f -> f CommaStyle
poCommaStyle :: f CommaStyle
,
forall (f :: * -> *). PrinterOpts f -> f ImportExportStyle
poImportExportStyle :: f ImportExportStyle
,
forall (f :: * -> *). PrinterOpts f -> f ImportGrouping
poImportGrouping :: f ImportGrouping
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poIndentWheres :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poRecordBraceSpace :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Int
poNewlinesBetweenDecls :: f Int
,
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyle
poHaddockStyle :: f HaddockPrintStyle
,
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyleModule
poHaddockStyleModule :: f HaddockPrintStyleModule
,
forall (f :: * -> *). PrinterOpts f -> f HaddockLocSignature
poHaddockLocSignature :: f HaddockLocSignature
,
forall (f :: * -> *). PrinterOpts f -> f LetStyle
poLetStyle :: f LetStyle
,
forall (f :: * -> *). PrinterOpts f -> f InStyle
poInStyle :: f InStyle
,
forall (f :: * -> *). PrinterOpts f -> f IfStyle
poIfStyle :: f IfStyle
,
forall (f :: * -> *). PrinterOpts f -> f SingleConstraintParens
poSingleConstraintParens :: f SingleConstraintParens
,
forall (f :: * -> *). PrinterOpts f -> f SingleDerivingParens
poSingleDerivingParens :: f SingleDerivingParens
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortConstraints :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivedClasses :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivingClauses :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poTrailingSectionOperators :: f Bool
,
forall (f :: * -> *). PrinterOpts f -> f Unicode
poUnicode :: f Unicode
,
forall (f :: * -> *). PrinterOpts f -> f Bool
poRespectful :: f Bool
}
deriving ((forall x. PrinterOpts f -> Rep (PrinterOpts f) x)
-> (forall x. Rep (PrinterOpts f) x -> PrinterOpts f)
-> Generic (PrinterOpts f)
forall x. Rep (PrinterOpts f) x -> PrinterOpts f
forall x. PrinterOpts f -> Rep (PrinterOpts f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x. Rep (PrinterOpts f) x -> PrinterOpts f
forall (f :: * -> *) x. PrinterOpts f -> Rep (PrinterOpts f) x
$cfrom :: forall (f :: * -> *) x. PrinterOpts f -> Rep (PrinterOpts f) x
from :: forall x. PrinterOpts f -> Rep (PrinterOpts f) x
$cto :: forall (f :: * -> *) x. Rep (PrinterOpts f) x -> PrinterOpts f
to :: forall x. Rep (PrinterOpts f) x -> PrinterOpts f
Generic)
emptyPrinterOpts :: PrinterOpts Maybe
emptyPrinterOpts :: PrinterOpts Maybe
emptyPrinterOpts =
PrinterOpts
{ poIndentation :: Maybe Int
poIndentation = Maybe Int
forall a. Maybe a
Nothing
, poColumnLimit :: Maybe ColumnLimit
poColumnLimit = Maybe ColumnLimit
forall a. Maybe a
Nothing
, poFunctionArrows :: Maybe FunctionArrowsStyle
poFunctionArrows = Maybe FunctionArrowsStyle
forall a. Maybe a
Nothing
, poCommaStyle :: Maybe CommaStyle
poCommaStyle = Maybe CommaStyle
forall a. Maybe a
Nothing
, poImportExportStyle :: Maybe ImportExportStyle
poImportExportStyle = Maybe ImportExportStyle
forall a. Maybe a
Nothing
, poImportGrouping :: Maybe ImportGrouping
poImportGrouping = Maybe ImportGrouping
forall a. Maybe a
Nothing
, poIndentWheres :: Maybe Bool
poIndentWheres = Maybe Bool
forall a. Maybe a
Nothing
, poRecordBraceSpace :: Maybe Bool
poRecordBraceSpace = Maybe Bool
forall a. Maybe a
Nothing
, poNewlinesBetweenDecls :: Maybe Int
poNewlinesBetweenDecls = Maybe Int
forall a. Maybe a
Nothing
, poHaddockStyle :: Maybe HaddockPrintStyle
poHaddockStyle = Maybe HaddockPrintStyle
forall a. Maybe a
Nothing
, poHaddockStyleModule :: Maybe HaddockPrintStyleModule
poHaddockStyleModule = Maybe HaddockPrintStyleModule
forall a. Maybe a
Nothing
, poHaddockLocSignature :: Maybe HaddockLocSignature
poHaddockLocSignature = Maybe HaddockLocSignature
forall a. Maybe a
Nothing
, poLetStyle :: Maybe LetStyle
poLetStyle = Maybe LetStyle
forall a. Maybe a
Nothing
, poInStyle :: Maybe InStyle
poInStyle = Maybe InStyle
forall a. Maybe a
Nothing
, poIfStyle :: Maybe IfStyle
poIfStyle = Maybe IfStyle
forall a. Maybe a
Nothing
, poSingleConstraintParens :: Maybe SingleConstraintParens
poSingleConstraintParens = Maybe SingleConstraintParens
forall a. Maybe a
Nothing
, poSingleDerivingParens :: Maybe SingleDerivingParens
poSingleDerivingParens = Maybe SingleDerivingParens
forall a. Maybe a
Nothing
, poSortConstraints :: Maybe Bool
poSortConstraints = Maybe Bool
forall a. Maybe a
Nothing
, poSortDerivedClasses :: Maybe Bool
poSortDerivedClasses = Maybe Bool
forall a. Maybe a
Nothing
, poSortDerivingClauses :: Maybe Bool
poSortDerivingClauses = Maybe Bool
forall a. Maybe a
Nothing
, poTrailingSectionOperators :: Maybe Bool
poTrailingSectionOperators = Maybe Bool
forall a. Maybe a
Nothing
, poUnicode :: Maybe Unicode
poUnicode = Maybe Unicode
forall a. Maybe a
Nothing
, poRespectful :: Maybe Bool
poRespectful = Maybe Bool
forall a. Maybe a
Nothing
}
defaultPrinterOpts :: PrinterOpts Identity
defaultPrinterOpts :: PrinterOpts Identity
defaultPrinterOpts =
PrinterOpts
{ poIndentation :: Identity Int
poIndentation = Int -> Identity Int
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Int
4
, poColumnLimit :: Identity ColumnLimit
poColumnLimit = ColumnLimit -> Identity ColumnLimit
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ColumnLimit
NoLimit
, poFunctionArrows :: Identity FunctionArrowsStyle
poFunctionArrows = FunctionArrowsStyle -> Identity FunctionArrowsStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FunctionArrowsStyle
TrailingArrows
, poCommaStyle :: Identity CommaStyle
poCommaStyle = CommaStyle -> Identity CommaStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CommaStyle
Leading
, poImportExportStyle :: Identity ImportExportStyle
poImportExportStyle = ImportExportStyle -> Identity ImportExportStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportExportStyle
ImportExportDiffFriendly
, poImportGrouping :: Identity ImportGrouping
poImportGrouping = ImportGrouping -> Identity ImportGrouping
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupLegacy
, poIndentWheres :: Identity Bool
poIndentWheres = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
, poRecordBraceSpace :: Identity Bool
poRecordBraceSpace = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
, poNewlinesBetweenDecls :: Identity Int
poNewlinesBetweenDecls = Int -> Identity Int
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Int
1
, poHaddockStyle :: Identity HaddockPrintStyle
poHaddockStyle = HaddockPrintStyle -> Identity HaddockPrintStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockPrintStyle
HaddockMultiLine
, poHaddockStyleModule :: Identity HaddockPrintStyleModule
poHaddockStyleModule = HaddockPrintStyleModule -> Identity HaddockPrintStyleModule
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockPrintStyleModule
PrintStyleInherit
, poHaddockLocSignature :: Identity HaddockLocSignature
poHaddockLocSignature = HaddockLocSignature -> Identity HaddockLocSignature
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockLocSignature
HaddockLocSigAuto
, poLetStyle :: Identity LetStyle
poLetStyle = LetStyle -> Identity LetStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LetStyle
LetAuto
, poInStyle :: Identity InStyle
poInStyle = InStyle -> Identity InStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure InStyle
InRightAlign
, poIfStyle :: Identity IfStyle
poIfStyle = IfStyle -> Identity IfStyle
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure IfStyle
IfIndented
, poSingleConstraintParens :: Identity SingleConstraintParens
poSingleConstraintParens = SingleConstraintParens -> Identity SingleConstraintParens
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SingleConstraintParens
ConstraintAlways
, poSingleDerivingParens :: Identity SingleDerivingParens
poSingleDerivingParens = SingleDerivingParens -> Identity SingleDerivingParens
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SingleDerivingParens
DerivingAlways
, poSortConstraints :: Identity Bool
poSortConstraints = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
, poSortDerivedClasses :: Identity Bool
poSortDerivedClasses = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
, poSortDerivingClauses :: Identity Bool
poSortDerivingClauses = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
, poTrailingSectionOperators :: Identity Bool
poTrailingSectionOperators = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
True
, poUnicode :: Identity Unicode
poUnicode = Unicode -> Identity Unicode
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Unicode
UnicodeNever
, poRespectful :: Identity Bool
poRespectful = Bool -> Identity Bool
forall a. a -> Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
True
}
fillMissingPrinterOpts ::
forall f.
Applicative f =>
PrinterOpts Maybe ->
PrinterOpts f ->
PrinterOpts f
fillMissingPrinterOpts :: forall (f :: * -> *).
Applicative f =>
PrinterOpts Maybe -> PrinterOpts f -> PrinterOpts f
fillMissingPrinterOpts PrinterOpts Maybe
p1 PrinterOpts f
p2 =
PrinterOpts
{ poIndentation :: f Int
poIndentation = f Int -> (Int -> f Int) -> Maybe Int -> f Int
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Int
forall (f :: * -> *). PrinterOpts f -> f Int
poIndentation PrinterOpts f
p2) Int -> f Int
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Int
forall (f :: * -> *). PrinterOpts f -> f Int
poIndentation PrinterOpts Maybe
p1)
, poColumnLimit :: f ColumnLimit
poColumnLimit = f ColumnLimit
-> (ColumnLimit -> f ColumnLimit)
-> Maybe ColumnLimit
-> f ColumnLimit
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f ColumnLimit
forall (f :: * -> *). PrinterOpts f -> f ColumnLimit
poColumnLimit PrinterOpts f
p2) ColumnLimit -> f ColumnLimit
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe ColumnLimit
forall (f :: * -> *). PrinterOpts f -> f ColumnLimit
poColumnLimit PrinterOpts Maybe
p1)
, poFunctionArrows :: f FunctionArrowsStyle
poFunctionArrows = f FunctionArrowsStyle
-> (FunctionArrowsStyle -> f FunctionArrowsStyle)
-> Maybe FunctionArrowsStyle
-> f FunctionArrowsStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f FunctionArrowsStyle
forall (f :: * -> *). PrinterOpts f -> f FunctionArrowsStyle
poFunctionArrows PrinterOpts f
p2) FunctionArrowsStyle -> f FunctionArrowsStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe FunctionArrowsStyle
forall (f :: * -> *). PrinterOpts f -> f FunctionArrowsStyle
poFunctionArrows PrinterOpts Maybe
p1)
, poCommaStyle :: f CommaStyle
poCommaStyle = f CommaStyle
-> (CommaStyle -> f CommaStyle) -> Maybe CommaStyle -> f CommaStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f CommaStyle
forall (f :: * -> *). PrinterOpts f -> f CommaStyle
poCommaStyle PrinterOpts f
p2) CommaStyle -> f CommaStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe CommaStyle
forall (f :: * -> *). PrinterOpts f -> f CommaStyle
poCommaStyle PrinterOpts Maybe
p1)
, poImportExportStyle :: f ImportExportStyle
poImportExportStyle = f ImportExportStyle
-> (ImportExportStyle -> f ImportExportStyle)
-> Maybe ImportExportStyle
-> f ImportExportStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f ImportExportStyle
forall (f :: * -> *). PrinterOpts f -> f ImportExportStyle
poImportExportStyle PrinterOpts f
p2) ImportExportStyle -> f ImportExportStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe ImportExportStyle
forall (f :: * -> *). PrinterOpts f -> f ImportExportStyle
poImportExportStyle PrinterOpts Maybe
p1)
, poImportGrouping :: f ImportGrouping
poImportGrouping = f ImportGrouping
-> (ImportGrouping -> f ImportGrouping)
-> Maybe ImportGrouping
-> f ImportGrouping
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f ImportGrouping
forall (f :: * -> *). PrinterOpts f -> f ImportGrouping
poImportGrouping PrinterOpts f
p2) ImportGrouping -> f ImportGrouping
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe ImportGrouping
forall (f :: * -> *). PrinterOpts f -> f ImportGrouping
poImportGrouping PrinterOpts Maybe
p1)
, poIndentWheres :: f Bool
poIndentWheres = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poIndentWheres PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poIndentWheres PrinterOpts Maybe
p1)
, poRecordBraceSpace :: f Bool
poRecordBraceSpace = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poRecordBraceSpace PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poRecordBraceSpace PrinterOpts Maybe
p1)
, poNewlinesBetweenDecls :: f Int
poNewlinesBetweenDecls = f Int -> (Int -> f Int) -> Maybe Int -> f Int
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Int
forall (f :: * -> *). PrinterOpts f -> f Int
poNewlinesBetweenDecls PrinterOpts f
p2) Int -> f Int
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Int
forall (f :: * -> *). PrinterOpts f -> f Int
poNewlinesBetweenDecls PrinterOpts Maybe
p1)
, poHaddockStyle :: f HaddockPrintStyle
poHaddockStyle = f HaddockPrintStyle
-> (HaddockPrintStyle -> f HaddockPrintStyle)
-> Maybe HaddockPrintStyle
-> f HaddockPrintStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f HaddockPrintStyle
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyle
poHaddockStyle PrinterOpts f
p2) HaddockPrintStyle -> f HaddockPrintStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe HaddockPrintStyle
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyle
poHaddockStyle PrinterOpts Maybe
p1)
, poHaddockStyleModule :: f HaddockPrintStyleModule
poHaddockStyleModule = f HaddockPrintStyleModule
-> (HaddockPrintStyleModule -> f HaddockPrintStyleModule)
-> Maybe HaddockPrintStyleModule
-> f HaddockPrintStyleModule
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f HaddockPrintStyleModule
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyleModule
poHaddockStyleModule PrinterOpts f
p2) HaddockPrintStyleModule -> f HaddockPrintStyleModule
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe HaddockPrintStyleModule
forall (f :: * -> *). PrinterOpts f -> f HaddockPrintStyleModule
poHaddockStyleModule PrinterOpts Maybe
p1)
, poHaddockLocSignature :: f HaddockLocSignature
poHaddockLocSignature = f HaddockLocSignature
-> (HaddockLocSignature -> f HaddockLocSignature)
-> Maybe HaddockLocSignature
-> f HaddockLocSignature
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f HaddockLocSignature
forall (f :: * -> *). PrinterOpts f -> f HaddockLocSignature
poHaddockLocSignature PrinterOpts f
p2) HaddockLocSignature -> f HaddockLocSignature
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe HaddockLocSignature
forall (f :: * -> *). PrinterOpts f -> f HaddockLocSignature
poHaddockLocSignature PrinterOpts Maybe
p1)
, poLetStyle :: f LetStyle
poLetStyle = f LetStyle
-> (LetStyle -> f LetStyle) -> Maybe LetStyle -> f LetStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f LetStyle
forall (f :: * -> *). PrinterOpts f -> f LetStyle
poLetStyle PrinterOpts f
p2) LetStyle -> f LetStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe LetStyle
forall (f :: * -> *). PrinterOpts f -> f LetStyle
poLetStyle PrinterOpts Maybe
p1)
, poInStyle :: f InStyle
poInStyle = f InStyle -> (InStyle -> f InStyle) -> Maybe InStyle -> f InStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f InStyle
forall (f :: * -> *). PrinterOpts f -> f InStyle
poInStyle PrinterOpts f
p2) InStyle -> f InStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe InStyle
forall (f :: * -> *). PrinterOpts f -> f InStyle
poInStyle PrinterOpts Maybe
p1)
, poIfStyle :: f IfStyle
poIfStyle = f IfStyle -> (IfStyle -> f IfStyle) -> Maybe IfStyle -> f IfStyle
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f IfStyle
forall (f :: * -> *). PrinterOpts f -> f IfStyle
poIfStyle PrinterOpts f
p2) IfStyle -> f IfStyle
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe IfStyle
forall (f :: * -> *). PrinterOpts f -> f IfStyle
poIfStyle PrinterOpts Maybe
p1)
, poSingleConstraintParens :: f SingleConstraintParens
poSingleConstraintParens = f SingleConstraintParens
-> (SingleConstraintParens -> f SingleConstraintParens)
-> Maybe SingleConstraintParens
-> f SingleConstraintParens
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f SingleConstraintParens
forall (f :: * -> *). PrinterOpts f -> f SingleConstraintParens
poSingleConstraintParens PrinterOpts f
p2) SingleConstraintParens -> f SingleConstraintParens
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe SingleConstraintParens
forall (f :: * -> *). PrinterOpts f -> f SingleConstraintParens
poSingleConstraintParens PrinterOpts Maybe
p1)
, poSingleDerivingParens :: f SingleDerivingParens
poSingleDerivingParens = f SingleDerivingParens
-> (SingleDerivingParens -> f SingleDerivingParens)
-> Maybe SingleDerivingParens
-> f SingleDerivingParens
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f SingleDerivingParens
forall (f :: * -> *). PrinterOpts f -> f SingleDerivingParens
poSingleDerivingParens PrinterOpts f
p2) SingleDerivingParens -> f SingleDerivingParens
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe SingleDerivingParens
forall (f :: * -> *). PrinterOpts f -> f SingleDerivingParens
poSingleDerivingParens PrinterOpts Maybe
p1)
, poSortConstraints :: f Bool
poSortConstraints = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortConstraints PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortConstraints PrinterOpts Maybe
p1)
, poSortDerivedClasses :: f Bool
poSortDerivedClasses = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivedClasses PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivedClasses PrinterOpts Maybe
p1)
, poSortDerivingClauses :: f Bool
poSortDerivingClauses = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivingClauses PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poSortDerivingClauses PrinterOpts Maybe
p1)
, poTrailingSectionOperators :: f Bool
poTrailingSectionOperators = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poTrailingSectionOperators PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poTrailingSectionOperators PrinterOpts Maybe
p1)
, poUnicode :: f Unicode
poUnicode = f Unicode -> (Unicode -> f Unicode) -> Maybe Unicode -> f Unicode
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Unicode
forall (f :: * -> *). PrinterOpts f -> f Unicode
poUnicode PrinterOpts f
p2) Unicode -> f Unicode
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Unicode
forall (f :: * -> *). PrinterOpts f -> f Unicode
poUnicode PrinterOpts Maybe
p1)
, poRespectful :: f Bool
poRespectful = f Bool -> (Bool -> f Bool) -> Maybe Bool -> f Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (PrinterOpts f -> f Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poRespectful PrinterOpts f
p2) Bool -> f Bool
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PrinterOpts Maybe -> Maybe Bool
forall (f :: * -> *). PrinterOpts f -> f Bool
poRespectful PrinterOpts Maybe
p1)
}
parsePrinterOptsCLI ::
Applicative f =>
(forall a. PrinterOptsFieldType a => String -> String -> String -> f (Maybe a)) ->
f (PrinterOpts Maybe)
parsePrinterOptsCLI :: forall (f :: * -> *).
Applicative f =>
(forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a))
-> f (PrinterOpts Maybe)
parsePrinterOptsCLI forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f =
(Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe
forall (f :: * -> *).
f Int
-> f ColumnLimit
-> f FunctionArrowsStyle
-> f CommaStyle
-> f ImportExportStyle
-> f ImportGrouping
-> f Bool
-> f Bool
-> f Int
-> f HaddockPrintStyle
-> f HaddockPrintStyleModule
-> f HaddockLocSignature
-> f LetStyle
-> f InStyle
-> f IfStyle
-> f SingleConstraintParens
-> f SingleDerivingParens
-> f Bool
-> f Bool
-> f Bool
-> f Bool
-> f Unicode
-> f Bool
-> PrinterOpts f
PrinterOpts
f (Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int)
-> f (Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Int)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"indentation"
String
"Number of spaces per indentation step (default: 4)"
String
"INT"
f (Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ColumnLimit)
-> f (Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe ColumnLimit)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"column-limit"
String
"Max line length for automatic line breaking (default: none)"
String
"OPTION"
f (Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe FunctionArrowsStyle)
-> f (Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe FunctionArrowsStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"function-arrows"
String
"Styling of arrows in type signatures (choices: \"trailing\", \"leading\", or \"leading-args\") (default: trailing)"
String
"OPTION"
f (Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe CommaStyle)
-> f (Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe CommaStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"comma-style"
String
"How to place commas in multi-line lists, records, etc. (choices: \"leading\" or \"trailing\") (default: leading)"
String
"OPTION"
f (Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ImportExportStyle)
-> f (Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe ImportExportStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"import-export-style"
String
"Styling of import/export lists (choices: \"leading\", \"trailing\", or \"diff-friendly\") (default: diff-friendly)"
String
"OPTION"
f (Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ImportGrouping)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe ImportGrouping)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"import-grouping"
String
"Rules for grouping import declarations (default: legacy)"
String
"OPTION"
f (Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"indent-wheres"
String
"Whether to full-indent or half-indent 'where' bindings past the preceding body (default: false)"
String
"BOOL"
f (Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"record-brace-space"
String
"Whether to leave a space before an opening record brace (default: false)"
String
"BOOL"
f (Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int)
-> f (Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Int)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"newlines-between-decls"
String
"Number of spaces between top-level declarations (default: 1)"
String
"INT"
f (Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockPrintStyle)
-> f (Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe HaddockPrintStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"haddock-style"
String
"How to print Haddock comments (choices: \"single-line\", \"multi-line\", or \"multi-line-compact\") (default: multi-line)"
String
"OPTION"
f (Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockPrintStyleModule)
-> f (Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe HaddockPrintStyleModule)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"haddock-style-module"
String
"How to print module docstring (default: same as 'haddock-style')"
String
"OPTION"
f (Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockLocSignature)
-> f (Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe HaddockLocSignature)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"haddock-location-signature"
String
"Where to put docstring comments in function signatures (choices: \"auto\", \"leading\", or \"trailing\") (default: leading if function-arrows is trailing, or vice-versa)"
String
"OPTION"
f (Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe LetStyle)
-> f (Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe LetStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"let-style"
String
"Styling of let blocks (choices: \"auto\", \"inline\", \"newline\", or \"mixed\") (default: auto)"
String
"OPTION"
f (Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe InStyle)
-> f (Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe InStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"in-style"
String
"How to align the 'in' keyword with respect to the 'let' keyword (choices: \"left-align\", \"right-align\", or \"no-space\") (default: right-align)"
String
"OPTION"
f (Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe IfStyle)
-> f (Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe IfStyle)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"if-style"
String
"Styling of if-statements (choices: \"indented\" or \"hanging\") (default: indented)"
String
"OPTION"
f (Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe SingleConstraintParens)
-> f (Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe SingleConstraintParens)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"single-constraint-parens"
String
"Whether to put parentheses around a single constraint (choices: \"auto\", \"always\", or \"never\") (default: always)"
String
"OPTION"
f (Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe SingleDerivingParens)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe SingleDerivingParens)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"single-deriving-parens"
String
"Whether to put parentheses around a single deriving class (choices: \"auto\", \"always\", or \"never\") (default: always)"
String
"OPTION"
f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"sort-constraints"
String
"Whether to sort constraints (default: false)"
String
"BOOL"
f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"sort-derived-classes"
String
"Whether to sort derived classes (default: false)"
String
"BOOL"
f (Maybe Bool
-> Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"sort-deriving-clauses"
String
"Whether to sort deriving clauses (default: false)"
String
"BOOL"
f (Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"trailing-section-operators"
String
"Whether to place section operators (those that are infixr 0, such as $) in trailing position, continuing the expression indented below (default: true)"
String
"BOOL"
f (Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Unicode) -> f (Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Unicode)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"unicode"
String
"Output Unicode syntax (choices: \"detect\", \"always\", or \"never\") (default: never)"
String
"OPTION"
f (Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool) -> f (PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> String -> String -> f (Maybe Bool)
forall a.
PrinterOptsFieldType a =>
String -> String -> String -> f (Maybe a)
f
String
"respectful"
String
"Give the programmer more choice on where to insert blank lines (default: true)"
String
"BOOL"
parsePrinterOptsJSON ::
Applicative f =>
(forall a. PrinterOptsFieldType a => String -> f (Maybe a)) ->
f (PrinterOpts Maybe)
parsePrinterOptsJSON :: forall (f :: * -> *).
Applicative f =>
(forall a. PrinterOptsFieldType a => String -> f (Maybe a))
-> f (PrinterOpts Maybe)
parsePrinterOptsJSON forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f =
(Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe
forall (f :: * -> *).
f Int
-> f ColumnLimit
-> f FunctionArrowsStyle
-> f CommaStyle
-> f ImportExportStyle
-> f ImportGrouping
-> f Bool
-> f Bool
-> f Int
-> f HaddockPrintStyle
-> f HaddockPrintStyleModule
-> f HaddockLocSignature
-> f LetStyle
-> f InStyle
-> f IfStyle
-> f SingleConstraintParens
-> f SingleDerivingParens
-> f Bool
-> f Bool
-> f Bool
-> f Bool
-> f Unicode
-> f Bool
-> PrinterOpts f
PrinterOpts
f (Maybe Int
-> Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int)
-> f (Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Int)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"indentation"
f (Maybe ColumnLimit
-> Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ColumnLimit)
-> f (Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe ColumnLimit)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"column-limit"
f (Maybe FunctionArrowsStyle
-> Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe FunctionArrowsStyle)
-> f (Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe FunctionArrowsStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"function-arrows"
f (Maybe CommaStyle
-> Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe CommaStyle)
-> f (Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe CommaStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"comma-style"
f (Maybe ImportExportStyle
-> Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ImportExportStyle)
-> f (Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe ImportExportStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"import-export-style"
f (Maybe ImportGrouping
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe ImportGrouping)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe ImportGrouping)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"import-grouping"
f (Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"indent-wheres"
f (Maybe Bool
-> Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"record-brace-space"
f (Maybe Int
-> Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Int)
-> f (Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Int)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"newlines-between-decls"
f (Maybe HaddockPrintStyle
-> Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockPrintStyle)
-> f (Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe HaddockPrintStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"haddock-style"
f (Maybe HaddockPrintStyleModule
-> Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockPrintStyleModule)
-> f (Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe HaddockPrintStyleModule)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"haddock-style-module"
f (Maybe HaddockLocSignature
-> Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe HaddockLocSignature)
-> f (Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe HaddockLocSignature)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"haddock-location-signature"
f (Maybe LetStyle
-> Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe LetStyle)
-> f (Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe LetStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"let-style"
f (Maybe InStyle
-> Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe InStyle)
-> f (Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe InStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"in-style"
f (Maybe IfStyle
-> Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe IfStyle)
-> f (Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe IfStyle)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"if-style"
f (Maybe SingleConstraintParens
-> Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe SingleConstraintParens)
-> f (Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe SingleConstraintParens)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"single-constraint-parens"
f (Maybe SingleDerivingParens
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe SingleDerivingParens)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe SingleDerivingParens)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"single-deriving-parens"
f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"sort-constraints"
f (Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Unicode
-> Maybe Bool
-> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"sort-derived-classes"
f (Maybe Bool
-> Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Bool
-> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"sort-deriving-clauses"
f (Maybe Bool -> Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool)
-> f (Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"trailing-section-operators"
f (Maybe Unicode -> Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Unicode) -> f (Maybe Bool -> PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Unicode)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"unicode"
f (Maybe Bool -> PrinterOpts Maybe)
-> f (Maybe Bool) -> f (PrinterOpts Maybe)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> String -> f (Maybe Bool)
forall a. PrinterOptsFieldType a => String -> f (Maybe a)
f String
"respectful"
class Aeson.FromJSON a => PrinterOptsFieldType a where
parsePrinterOptType :: String -> Either String a
instance PrinterOptsFieldType Int where
parsePrinterOptType :: String -> Either String Int
parsePrinterOptType = String -> Either String Int
forall a. Read a => String -> Either String a
readEither
instance PrinterOptsFieldType Bool where
parsePrinterOptType :: String -> Either String Bool
parsePrinterOptType String
s =
case String
s of
String
"false" -> Bool -> Either String Bool
forall a b. b -> Either a b
Right Bool
False
String
"true" -> Bool -> Either String Bool
forall a b. b -> Either a b
Right Bool
True
String
_ ->
String -> Either String Bool
forall a b. a -> Either a b
Left (String -> Either String Bool)
-> ([String] -> String) -> [String] -> Either String Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String Bool) -> [String] -> Either String Bool
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s,
String
"Valid values are: \"false\" or \"true\""
]
class RenderPrinterOpt a where
renderPrinterOpt :: a -> String
instance RenderPrinterOpt Int where
renderPrinterOpt :: Int -> String
renderPrinterOpt = Int -> String
forall a. Show a => a -> String
show
instance RenderPrinterOpt Bool where
renderPrinterOpt :: Bool -> String
renderPrinterOpt = Bool -> String
forall a. Show a => a -> String
show
data CommaStyle
= Leading
| Trailing
deriving (CommaStyle -> CommaStyle -> Bool
(CommaStyle -> CommaStyle -> Bool)
-> (CommaStyle -> CommaStyle -> Bool) -> Eq CommaStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CommaStyle -> CommaStyle -> Bool
== :: CommaStyle -> CommaStyle -> Bool
$c/= :: CommaStyle -> CommaStyle -> Bool
/= :: CommaStyle -> CommaStyle -> Bool
Eq, Int -> CommaStyle -> String -> String
[CommaStyle] -> String -> String
CommaStyle -> String
(Int -> CommaStyle -> String -> String)
-> (CommaStyle -> String)
-> ([CommaStyle] -> String -> String)
-> Show CommaStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> CommaStyle -> String -> String
showsPrec :: Int -> CommaStyle -> String -> String
$cshow :: CommaStyle -> String
show :: CommaStyle -> String
$cshowList :: [CommaStyle] -> String -> String
showList :: [CommaStyle] -> String -> String
Show, Int -> CommaStyle
CommaStyle -> Int
CommaStyle -> [CommaStyle]
CommaStyle -> CommaStyle
CommaStyle -> CommaStyle -> [CommaStyle]
CommaStyle -> CommaStyle -> CommaStyle -> [CommaStyle]
(CommaStyle -> CommaStyle)
-> (CommaStyle -> CommaStyle)
-> (Int -> CommaStyle)
-> (CommaStyle -> Int)
-> (CommaStyle -> [CommaStyle])
-> (CommaStyle -> CommaStyle -> [CommaStyle])
-> (CommaStyle -> CommaStyle -> [CommaStyle])
-> (CommaStyle -> CommaStyle -> CommaStyle -> [CommaStyle])
-> Enum CommaStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: CommaStyle -> CommaStyle
succ :: CommaStyle -> CommaStyle
$cpred :: CommaStyle -> CommaStyle
pred :: CommaStyle -> CommaStyle
$ctoEnum :: Int -> CommaStyle
toEnum :: Int -> CommaStyle
$cfromEnum :: CommaStyle -> Int
fromEnum :: CommaStyle -> Int
$cenumFrom :: CommaStyle -> [CommaStyle]
enumFrom :: CommaStyle -> [CommaStyle]
$cenumFromThen :: CommaStyle -> CommaStyle -> [CommaStyle]
enumFromThen :: CommaStyle -> CommaStyle -> [CommaStyle]
$cenumFromTo :: CommaStyle -> CommaStyle -> [CommaStyle]
enumFromTo :: CommaStyle -> CommaStyle -> [CommaStyle]
$cenumFromThenTo :: CommaStyle -> CommaStyle -> CommaStyle -> [CommaStyle]
enumFromThenTo :: CommaStyle -> CommaStyle -> CommaStyle -> [CommaStyle]
Enum, CommaStyle
CommaStyle -> CommaStyle -> Bounded CommaStyle
forall a. a -> a -> Bounded a
$cminBound :: CommaStyle
minBound :: CommaStyle
$cmaxBound :: CommaStyle
maxBound :: CommaStyle
Bounded)
data FunctionArrowsStyle
= TrailingArrows
| LeadingArrows
| LeadingArgsArrows
deriving (FunctionArrowsStyle -> FunctionArrowsStyle -> Bool
(FunctionArrowsStyle -> FunctionArrowsStyle -> Bool)
-> (FunctionArrowsStyle -> FunctionArrowsStyle -> Bool)
-> Eq FunctionArrowsStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FunctionArrowsStyle -> FunctionArrowsStyle -> Bool
== :: FunctionArrowsStyle -> FunctionArrowsStyle -> Bool
$c/= :: FunctionArrowsStyle -> FunctionArrowsStyle -> Bool
/= :: FunctionArrowsStyle -> FunctionArrowsStyle -> Bool
Eq, Int -> FunctionArrowsStyle -> String -> String
[FunctionArrowsStyle] -> String -> String
FunctionArrowsStyle -> String
(Int -> FunctionArrowsStyle -> String -> String)
-> (FunctionArrowsStyle -> String)
-> ([FunctionArrowsStyle] -> String -> String)
-> Show FunctionArrowsStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> FunctionArrowsStyle -> String -> String
showsPrec :: Int -> FunctionArrowsStyle -> String -> String
$cshow :: FunctionArrowsStyle -> String
show :: FunctionArrowsStyle -> String
$cshowList :: [FunctionArrowsStyle] -> String -> String
showList :: [FunctionArrowsStyle] -> String -> String
Show, Int -> FunctionArrowsStyle
FunctionArrowsStyle -> Int
FunctionArrowsStyle -> [FunctionArrowsStyle]
FunctionArrowsStyle -> FunctionArrowsStyle
FunctionArrowsStyle -> FunctionArrowsStyle -> [FunctionArrowsStyle]
FunctionArrowsStyle
-> FunctionArrowsStyle
-> FunctionArrowsStyle
-> [FunctionArrowsStyle]
(FunctionArrowsStyle -> FunctionArrowsStyle)
-> (FunctionArrowsStyle -> FunctionArrowsStyle)
-> (Int -> FunctionArrowsStyle)
-> (FunctionArrowsStyle -> Int)
-> (FunctionArrowsStyle -> [FunctionArrowsStyle])
-> (FunctionArrowsStyle
-> FunctionArrowsStyle -> [FunctionArrowsStyle])
-> (FunctionArrowsStyle
-> FunctionArrowsStyle -> [FunctionArrowsStyle])
-> (FunctionArrowsStyle
-> FunctionArrowsStyle
-> FunctionArrowsStyle
-> [FunctionArrowsStyle])
-> Enum FunctionArrowsStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: FunctionArrowsStyle -> FunctionArrowsStyle
succ :: FunctionArrowsStyle -> FunctionArrowsStyle
$cpred :: FunctionArrowsStyle -> FunctionArrowsStyle
pred :: FunctionArrowsStyle -> FunctionArrowsStyle
$ctoEnum :: Int -> FunctionArrowsStyle
toEnum :: Int -> FunctionArrowsStyle
$cfromEnum :: FunctionArrowsStyle -> Int
fromEnum :: FunctionArrowsStyle -> Int
$cenumFrom :: FunctionArrowsStyle -> [FunctionArrowsStyle]
enumFrom :: FunctionArrowsStyle -> [FunctionArrowsStyle]
$cenumFromThen :: FunctionArrowsStyle -> FunctionArrowsStyle -> [FunctionArrowsStyle]
enumFromThen :: FunctionArrowsStyle -> FunctionArrowsStyle -> [FunctionArrowsStyle]
$cenumFromTo :: FunctionArrowsStyle -> FunctionArrowsStyle -> [FunctionArrowsStyle]
enumFromTo :: FunctionArrowsStyle -> FunctionArrowsStyle -> [FunctionArrowsStyle]
$cenumFromThenTo :: FunctionArrowsStyle
-> FunctionArrowsStyle
-> FunctionArrowsStyle
-> [FunctionArrowsStyle]
enumFromThenTo :: FunctionArrowsStyle
-> FunctionArrowsStyle
-> FunctionArrowsStyle
-> [FunctionArrowsStyle]
Enum, FunctionArrowsStyle
FunctionArrowsStyle
-> FunctionArrowsStyle -> Bounded FunctionArrowsStyle
forall a. a -> a -> Bounded a
$cminBound :: FunctionArrowsStyle
minBound :: FunctionArrowsStyle
$cmaxBound :: FunctionArrowsStyle
maxBound :: FunctionArrowsStyle
Bounded)
data HaddockPrintStyle
= HaddockSingleLine
| HaddockMultiLine
| HaddockMultiLineCompact
deriving (HaddockPrintStyle -> HaddockPrintStyle -> Bool
(HaddockPrintStyle -> HaddockPrintStyle -> Bool)
-> (HaddockPrintStyle -> HaddockPrintStyle -> Bool)
-> Eq HaddockPrintStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HaddockPrintStyle -> HaddockPrintStyle -> Bool
== :: HaddockPrintStyle -> HaddockPrintStyle -> Bool
$c/= :: HaddockPrintStyle -> HaddockPrintStyle -> Bool
/= :: HaddockPrintStyle -> HaddockPrintStyle -> Bool
Eq, Int -> HaddockPrintStyle -> String -> String
[HaddockPrintStyle] -> String -> String
HaddockPrintStyle -> String
(Int -> HaddockPrintStyle -> String -> String)
-> (HaddockPrintStyle -> String)
-> ([HaddockPrintStyle] -> String -> String)
-> Show HaddockPrintStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> HaddockPrintStyle -> String -> String
showsPrec :: Int -> HaddockPrintStyle -> String -> String
$cshow :: HaddockPrintStyle -> String
show :: HaddockPrintStyle -> String
$cshowList :: [HaddockPrintStyle] -> String -> String
showList :: [HaddockPrintStyle] -> String -> String
Show, Int -> HaddockPrintStyle
HaddockPrintStyle -> Int
HaddockPrintStyle -> [HaddockPrintStyle]
HaddockPrintStyle -> HaddockPrintStyle
HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
HaddockPrintStyle
-> HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
(HaddockPrintStyle -> HaddockPrintStyle)
-> (HaddockPrintStyle -> HaddockPrintStyle)
-> (Int -> HaddockPrintStyle)
-> (HaddockPrintStyle -> Int)
-> (HaddockPrintStyle -> [HaddockPrintStyle])
-> (HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle])
-> (HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle])
-> (HaddockPrintStyle
-> HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle])
-> Enum HaddockPrintStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: HaddockPrintStyle -> HaddockPrintStyle
succ :: HaddockPrintStyle -> HaddockPrintStyle
$cpred :: HaddockPrintStyle -> HaddockPrintStyle
pred :: HaddockPrintStyle -> HaddockPrintStyle
$ctoEnum :: Int -> HaddockPrintStyle
toEnum :: Int -> HaddockPrintStyle
$cfromEnum :: HaddockPrintStyle -> Int
fromEnum :: HaddockPrintStyle -> Int
$cenumFrom :: HaddockPrintStyle -> [HaddockPrintStyle]
enumFrom :: HaddockPrintStyle -> [HaddockPrintStyle]
$cenumFromThen :: HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
enumFromThen :: HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
$cenumFromTo :: HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
enumFromTo :: HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
$cenumFromThenTo :: HaddockPrintStyle
-> HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
enumFromThenTo :: HaddockPrintStyle
-> HaddockPrintStyle -> HaddockPrintStyle -> [HaddockPrintStyle]
Enum, HaddockPrintStyle
HaddockPrintStyle -> HaddockPrintStyle -> Bounded HaddockPrintStyle
forall a. a -> a -> Bounded a
$cminBound :: HaddockPrintStyle
minBound :: HaddockPrintStyle
$cmaxBound :: HaddockPrintStyle
maxBound :: HaddockPrintStyle
Bounded)
data HaddockPrintStyleModule
= PrintStyleInherit
| PrintStyleOverride HaddockPrintStyle
deriving (HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool
(HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool)
-> (HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool)
-> Eq HaddockPrintStyleModule
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool
== :: HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool
$c/= :: HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool
/= :: HaddockPrintStyleModule -> HaddockPrintStyleModule -> Bool
Eq, Int -> HaddockPrintStyleModule -> String -> String
[HaddockPrintStyleModule] -> String -> String
HaddockPrintStyleModule -> String
(Int -> HaddockPrintStyleModule -> String -> String)
-> (HaddockPrintStyleModule -> String)
-> ([HaddockPrintStyleModule] -> String -> String)
-> Show HaddockPrintStyleModule
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> HaddockPrintStyleModule -> String -> String
showsPrec :: Int -> HaddockPrintStyleModule -> String -> String
$cshow :: HaddockPrintStyleModule -> String
show :: HaddockPrintStyleModule -> String
$cshowList :: [HaddockPrintStyleModule] -> String -> String
showList :: [HaddockPrintStyleModule] -> String -> String
Show)
data HaddockLocSignature
= HaddockLocSigAuto
| HaddockLocSigLeading
| HaddockLocSigTrailing
deriving (HaddockLocSignature -> HaddockLocSignature -> Bool
(HaddockLocSignature -> HaddockLocSignature -> Bool)
-> (HaddockLocSignature -> HaddockLocSignature -> Bool)
-> Eq HaddockLocSignature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HaddockLocSignature -> HaddockLocSignature -> Bool
== :: HaddockLocSignature -> HaddockLocSignature -> Bool
$c/= :: HaddockLocSignature -> HaddockLocSignature -> Bool
/= :: HaddockLocSignature -> HaddockLocSignature -> Bool
Eq, Int -> HaddockLocSignature -> String -> String
[HaddockLocSignature] -> String -> String
HaddockLocSignature -> String
(Int -> HaddockLocSignature -> String -> String)
-> (HaddockLocSignature -> String)
-> ([HaddockLocSignature] -> String -> String)
-> Show HaddockLocSignature
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> HaddockLocSignature -> String -> String
showsPrec :: Int -> HaddockLocSignature -> String -> String
$cshow :: HaddockLocSignature -> String
show :: HaddockLocSignature -> String
$cshowList :: [HaddockLocSignature] -> String -> String
showList :: [HaddockLocSignature] -> String -> String
Show, Int -> HaddockLocSignature
HaddockLocSignature -> Int
HaddockLocSignature -> [HaddockLocSignature]
HaddockLocSignature -> HaddockLocSignature
HaddockLocSignature -> HaddockLocSignature -> [HaddockLocSignature]
HaddockLocSignature
-> HaddockLocSignature
-> HaddockLocSignature
-> [HaddockLocSignature]
(HaddockLocSignature -> HaddockLocSignature)
-> (HaddockLocSignature -> HaddockLocSignature)
-> (Int -> HaddockLocSignature)
-> (HaddockLocSignature -> Int)
-> (HaddockLocSignature -> [HaddockLocSignature])
-> (HaddockLocSignature
-> HaddockLocSignature -> [HaddockLocSignature])
-> (HaddockLocSignature
-> HaddockLocSignature -> [HaddockLocSignature])
-> (HaddockLocSignature
-> HaddockLocSignature
-> HaddockLocSignature
-> [HaddockLocSignature])
-> Enum HaddockLocSignature
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: HaddockLocSignature -> HaddockLocSignature
succ :: HaddockLocSignature -> HaddockLocSignature
$cpred :: HaddockLocSignature -> HaddockLocSignature
pred :: HaddockLocSignature -> HaddockLocSignature
$ctoEnum :: Int -> HaddockLocSignature
toEnum :: Int -> HaddockLocSignature
$cfromEnum :: HaddockLocSignature -> Int
fromEnum :: HaddockLocSignature -> Int
$cenumFrom :: HaddockLocSignature -> [HaddockLocSignature]
enumFrom :: HaddockLocSignature -> [HaddockLocSignature]
$cenumFromThen :: HaddockLocSignature -> HaddockLocSignature -> [HaddockLocSignature]
enumFromThen :: HaddockLocSignature -> HaddockLocSignature -> [HaddockLocSignature]
$cenumFromTo :: HaddockLocSignature -> HaddockLocSignature -> [HaddockLocSignature]
enumFromTo :: HaddockLocSignature -> HaddockLocSignature -> [HaddockLocSignature]
$cenumFromThenTo :: HaddockLocSignature
-> HaddockLocSignature
-> HaddockLocSignature
-> [HaddockLocSignature]
enumFromThenTo :: HaddockLocSignature
-> HaddockLocSignature
-> HaddockLocSignature
-> [HaddockLocSignature]
Enum, HaddockLocSignature
HaddockLocSignature
-> HaddockLocSignature -> Bounded HaddockLocSignature
forall a. a -> a -> Bounded a
$cminBound :: HaddockLocSignature
minBound :: HaddockLocSignature
$cmaxBound :: HaddockLocSignature
maxBound :: HaddockLocSignature
Bounded)
data ImportExportStyle
= ImportExportLeading
| ImportExportTrailing
| ImportExportDiffFriendly
deriving (ImportExportStyle -> ImportExportStyle -> Bool
(ImportExportStyle -> ImportExportStyle -> Bool)
-> (ImportExportStyle -> ImportExportStyle -> Bool)
-> Eq ImportExportStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ImportExportStyle -> ImportExportStyle -> Bool
== :: ImportExportStyle -> ImportExportStyle -> Bool
$c/= :: ImportExportStyle -> ImportExportStyle -> Bool
/= :: ImportExportStyle -> ImportExportStyle -> Bool
Eq, Int -> ImportExportStyle -> String -> String
[ImportExportStyle] -> String -> String
ImportExportStyle -> String
(Int -> ImportExportStyle -> String -> String)
-> (ImportExportStyle -> String)
-> ([ImportExportStyle] -> String -> String)
-> Show ImportExportStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> ImportExportStyle -> String -> String
showsPrec :: Int -> ImportExportStyle -> String -> String
$cshow :: ImportExportStyle -> String
show :: ImportExportStyle -> String
$cshowList :: [ImportExportStyle] -> String -> String
showList :: [ImportExportStyle] -> String -> String
Show, Int -> ImportExportStyle
ImportExportStyle -> Int
ImportExportStyle -> [ImportExportStyle]
ImportExportStyle -> ImportExportStyle
ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
ImportExportStyle
-> ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
(ImportExportStyle -> ImportExportStyle)
-> (ImportExportStyle -> ImportExportStyle)
-> (Int -> ImportExportStyle)
-> (ImportExportStyle -> Int)
-> (ImportExportStyle -> [ImportExportStyle])
-> (ImportExportStyle -> ImportExportStyle -> [ImportExportStyle])
-> (ImportExportStyle -> ImportExportStyle -> [ImportExportStyle])
-> (ImportExportStyle
-> ImportExportStyle -> ImportExportStyle -> [ImportExportStyle])
-> Enum ImportExportStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: ImportExportStyle -> ImportExportStyle
succ :: ImportExportStyle -> ImportExportStyle
$cpred :: ImportExportStyle -> ImportExportStyle
pred :: ImportExportStyle -> ImportExportStyle
$ctoEnum :: Int -> ImportExportStyle
toEnum :: Int -> ImportExportStyle
$cfromEnum :: ImportExportStyle -> Int
fromEnum :: ImportExportStyle -> Int
$cenumFrom :: ImportExportStyle -> [ImportExportStyle]
enumFrom :: ImportExportStyle -> [ImportExportStyle]
$cenumFromThen :: ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
enumFromThen :: ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
$cenumFromTo :: ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
enumFromTo :: ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
$cenumFromThenTo :: ImportExportStyle
-> ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
enumFromThenTo :: ImportExportStyle
-> ImportExportStyle -> ImportExportStyle -> [ImportExportStyle]
Enum, ImportExportStyle
ImportExportStyle -> ImportExportStyle -> Bounded ImportExportStyle
forall a. a -> a -> Bounded a
$cminBound :: ImportExportStyle
minBound :: ImportExportStyle
$cmaxBound :: ImportExportStyle
maxBound :: ImportExportStyle
Bounded)
data LetStyle
= LetAuto
| LetInline
| LetNewline
| LetMixed
deriving (LetStyle -> LetStyle -> Bool
(LetStyle -> LetStyle -> Bool)
-> (LetStyle -> LetStyle -> Bool) -> Eq LetStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LetStyle -> LetStyle -> Bool
== :: LetStyle -> LetStyle -> Bool
$c/= :: LetStyle -> LetStyle -> Bool
/= :: LetStyle -> LetStyle -> Bool
Eq, Int -> LetStyle -> String -> String
[LetStyle] -> String -> String
LetStyle -> String
(Int -> LetStyle -> String -> String)
-> (LetStyle -> String)
-> ([LetStyle] -> String -> String)
-> Show LetStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> LetStyle -> String -> String
showsPrec :: Int -> LetStyle -> String -> String
$cshow :: LetStyle -> String
show :: LetStyle -> String
$cshowList :: [LetStyle] -> String -> String
showList :: [LetStyle] -> String -> String
Show, Int -> LetStyle
LetStyle -> Int
LetStyle -> [LetStyle]
LetStyle -> LetStyle
LetStyle -> LetStyle -> [LetStyle]
LetStyle -> LetStyle -> LetStyle -> [LetStyle]
(LetStyle -> LetStyle)
-> (LetStyle -> LetStyle)
-> (Int -> LetStyle)
-> (LetStyle -> Int)
-> (LetStyle -> [LetStyle])
-> (LetStyle -> LetStyle -> [LetStyle])
-> (LetStyle -> LetStyle -> [LetStyle])
-> (LetStyle -> LetStyle -> LetStyle -> [LetStyle])
-> Enum LetStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LetStyle -> LetStyle
succ :: LetStyle -> LetStyle
$cpred :: LetStyle -> LetStyle
pred :: LetStyle -> LetStyle
$ctoEnum :: Int -> LetStyle
toEnum :: Int -> LetStyle
$cfromEnum :: LetStyle -> Int
fromEnum :: LetStyle -> Int
$cenumFrom :: LetStyle -> [LetStyle]
enumFrom :: LetStyle -> [LetStyle]
$cenumFromThen :: LetStyle -> LetStyle -> [LetStyle]
enumFromThen :: LetStyle -> LetStyle -> [LetStyle]
$cenumFromTo :: LetStyle -> LetStyle -> [LetStyle]
enumFromTo :: LetStyle -> LetStyle -> [LetStyle]
$cenumFromThenTo :: LetStyle -> LetStyle -> LetStyle -> [LetStyle]
enumFromThenTo :: LetStyle -> LetStyle -> LetStyle -> [LetStyle]
Enum, LetStyle
LetStyle -> LetStyle -> Bounded LetStyle
forall a. a -> a -> Bounded a
$cminBound :: LetStyle
minBound :: LetStyle
$cmaxBound :: LetStyle
maxBound :: LetStyle
Bounded)
data InStyle
= InLeftAlign
| InRightAlign
| InNoSpace
deriving (InStyle -> InStyle -> Bool
(InStyle -> InStyle -> Bool)
-> (InStyle -> InStyle -> Bool) -> Eq InStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InStyle -> InStyle -> Bool
== :: InStyle -> InStyle -> Bool
$c/= :: InStyle -> InStyle -> Bool
/= :: InStyle -> InStyle -> Bool
Eq, Int -> InStyle -> String -> String
[InStyle] -> String -> String
InStyle -> String
(Int -> InStyle -> String -> String)
-> (InStyle -> String)
-> ([InStyle] -> String -> String)
-> Show InStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> InStyle -> String -> String
showsPrec :: Int -> InStyle -> String -> String
$cshow :: InStyle -> String
show :: InStyle -> String
$cshowList :: [InStyle] -> String -> String
showList :: [InStyle] -> String -> String
Show, Int -> InStyle
InStyle -> Int
InStyle -> [InStyle]
InStyle -> InStyle
InStyle -> InStyle -> [InStyle]
InStyle -> InStyle -> InStyle -> [InStyle]
(InStyle -> InStyle)
-> (InStyle -> InStyle)
-> (Int -> InStyle)
-> (InStyle -> Int)
-> (InStyle -> [InStyle])
-> (InStyle -> InStyle -> [InStyle])
-> (InStyle -> InStyle -> [InStyle])
-> (InStyle -> InStyle -> InStyle -> [InStyle])
-> Enum InStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: InStyle -> InStyle
succ :: InStyle -> InStyle
$cpred :: InStyle -> InStyle
pred :: InStyle -> InStyle
$ctoEnum :: Int -> InStyle
toEnum :: Int -> InStyle
$cfromEnum :: InStyle -> Int
fromEnum :: InStyle -> Int
$cenumFrom :: InStyle -> [InStyle]
enumFrom :: InStyle -> [InStyle]
$cenumFromThen :: InStyle -> InStyle -> [InStyle]
enumFromThen :: InStyle -> InStyle -> [InStyle]
$cenumFromTo :: InStyle -> InStyle -> [InStyle]
enumFromTo :: InStyle -> InStyle -> [InStyle]
$cenumFromThenTo :: InStyle -> InStyle -> InStyle -> [InStyle]
enumFromThenTo :: InStyle -> InStyle -> InStyle -> [InStyle]
Enum, InStyle
InStyle -> InStyle -> Bounded InStyle
forall a. a -> a -> Bounded a
$cminBound :: InStyle
minBound :: InStyle
$cmaxBound :: InStyle
maxBound :: InStyle
Bounded)
data IfStyle
= IfIndented
| IfHanging
deriving (IfStyle -> IfStyle -> Bool
(IfStyle -> IfStyle -> Bool)
-> (IfStyle -> IfStyle -> Bool) -> Eq IfStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IfStyle -> IfStyle -> Bool
== :: IfStyle -> IfStyle -> Bool
$c/= :: IfStyle -> IfStyle -> Bool
/= :: IfStyle -> IfStyle -> Bool
Eq, Int -> IfStyle -> String -> String
[IfStyle] -> String -> String
IfStyle -> String
(Int -> IfStyle -> String -> String)
-> (IfStyle -> String)
-> ([IfStyle] -> String -> String)
-> Show IfStyle
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> IfStyle -> String -> String
showsPrec :: Int -> IfStyle -> String -> String
$cshow :: IfStyle -> String
show :: IfStyle -> String
$cshowList :: [IfStyle] -> String -> String
showList :: [IfStyle] -> String -> String
Show, Int -> IfStyle
IfStyle -> Int
IfStyle -> [IfStyle]
IfStyle -> IfStyle
IfStyle -> IfStyle -> [IfStyle]
IfStyle -> IfStyle -> IfStyle -> [IfStyle]
(IfStyle -> IfStyle)
-> (IfStyle -> IfStyle)
-> (Int -> IfStyle)
-> (IfStyle -> Int)
-> (IfStyle -> [IfStyle])
-> (IfStyle -> IfStyle -> [IfStyle])
-> (IfStyle -> IfStyle -> [IfStyle])
-> (IfStyle -> IfStyle -> IfStyle -> [IfStyle])
-> Enum IfStyle
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: IfStyle -> IfStyle
succ :: IfStyle -> IfStyle
$cpred :: IfStyle -> IfStyle
pred :: IfStyle -> IfStyle
$ctoEnum :: Int -> IfStyle
toEnum :: Int -> IfStyle
$cfromEnum :: IfStyle -> Int
fromEnum :: IfStyle -> Int
$cenumFrom :: IfStyle -> [IfStyle]
enumFrom :: IfStyle -> [IfStyle]
$cenumFromThen :: IfStyle -> IfStyle -> [IfStyle]
enumFromThen :: IfStyle -> IfStyle -> [IfStyle]
$cenumFromTo :: IfStyle -> IfStyle -> [IfStyle]
enumFromTo :: IfStyle -> IfStyle -> [IfStyle]
$cenumFromThenTo :: IfStyle -> IfStyle -> IfStyle -> [IfStyle]
enumFromThenTo :: IfStyle -> IfStyle -> IfStyle -> [IfStyle]
Enum, IfStyle
IfStyle -> IfStyle -> Bounded IfStyle
forall a. a -> a -> Bounded a
$cminBound :: IfStyle
minBound :: IfStyle
$cmaxBound :: IfStyle
maxBound :: IfStyle
Bounded)
data Unicode
= UnicodeDetect
| UnicodeAlways
| UnicodeNever
deriving (Unicode -> Unicode -> Bool
(Unicode -> Unicode -> Bool)
-> (Unicode -> Unicode -> Bool) -> Eq Unicode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Unicode -> Unicode -> Bool
== :: Unicode -> Unicode -> Bool
$c/= :: Unicode -> Unicode -> Bool
/= :: Unicode -> Unicode -> Bool
Eq, Int -> Unicode -> String -> String
[Unicode] -> String -> String
Unicode -> String
(Int -> Unicode -> String -> String)
-> (Unicode -> String)
-> ([Unicode] -> String -> String)
-> Show Unicode
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> Unicode -> String -> String
showsPrec :: Int -> Unicode -> String -> String
$cshow :: Unicode -> String
show :: Unicode -> String
$cshowList :: [Unicode] -> String -> String
showList :: [Unicode] -> String -> String
Show, Int -> Unicode
Unicode -> Int
Unicode -> [Unicode]
Unicode -> Unicode
Unicode -> Unicode -> [Unicode]
Unicode -> Unicode -> Unicode -> [Unicode]
(Unicode -> Unicode)
-> (Unicode -> Unicode)
-> (Int -> Unicode)
-> (Unicode -> Int)
-> (Unicode -> [Unicode])
-> (Unicode -> Unicode -> [Unicode])
-> (Unicode -> Unicode -> [Unicode])
-> (Unicode -> Unicode -> Unicode -> [Unicode])
-> Enum Unicode
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Unicode -> Unicode
succ :: Unicode -> Unicode
$cpred :: Unicode -> Unicode
pred :: Unicode -> Unicode
$ctoEnum :: Int -> Unicode
toEnum :: Int -> Unicode
$cfromEnum :: Unicode -> Int
fromEnum :: Unicode -> Int
$cenumFrom :: Unicode -> [Unicode]
enumFrom :: Unicode -> [Unicode]
$cenumFromThen :: Unicode -> Unicode -> [Unicode]
enumFromThen :: Unicode -> Unicode -> [Unicode]
$cenumFromTo :: Unicode -> Unicode -> [Unicode]
enumFromTo :: Unicode -> Unicode -> [Unicode]
$cenumFromThenTo :: Unicode -> Unicode -> Unicode -> [Unicode]
enumFromThenTo :: Unicode -> Unicode -> Unicode -> [Unicode]
Enum, Unicode
Unicode -> Unicode -> Bounded Unicode
forall a. a -> a -> Bounded a
$cminBound :: Unicode
minBound :: Unicode
$cmaxBound :: Unicode
maxBound :: Unicode
Bounded)
data SingleConstraintParens
= ConstraintAuto
| ConstraintAlways
| ConstraintNever
deriving (SingleConstraintParens -> SingleConstraintParens -> Bool
(SingleConstraintParens -> SingleConstraintParens -> Bool)
-> (SingleConstraintParens -> SingleConstraintParens -> Bool)
-> Eq SingleConstraintParens
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SingleConstraintParens -> SingleConstraintParens -> Bool
== :: SingleConstraintParens -> SingleConstraintParens -> Bool
$c/= :: SingleConstraintParens -> SingleConstraintParens -> Bool
/= :: SingleConstraintParens -> SingleConstraintParens -> Bool
Eq, Int -> SingleConstraintParens -> String -> String
[SingleConstraintParens] -> String -> String
SingleConstraintParens -> String
(Int -> SingleConstraintParens -> String -> String)
-> (SingleConstraintParens -> String)
-> ([SingleConstraintParens] -> String -> String)
-> Show SingleConstraintParens
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> SingleConstraintParens -> String -> String
showsPrec :: Int -> SingleConstraintParens -> String -> String
$cshow :: SingleConstraintParens -> String
show :: SingleConstraintParens -> String
$cshowList :: [SingleConstraintParens] -> String -> String
showList :: [SingleConstraintParens] -> String -> String
Show, Int -> SingleConstraintParens
SingleConstraintParens -> Int
SingleConstraintParens -> [SingleConstraintParens]
SingleConstraintParens -> SingleConstraintParens
SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens]
SingleConstraintParens
-> SingleConstraintParens
-> SingleConstraintParens
-> [SingleConstraintParens]
(SingleConstraintParens -> SingleConstraintParens)
-> (SingleConstraintParens -> SingleConstraintParens)
-> (Int -> SingleConstraintParens)
-> (SingleConstraintParens -> Int)
-> (SingleConstraintParens -> [SingleConstraintParens])
-> (SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens])
-> (SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens])
-> (SingleConstraintParens
-> SingleConstraintParens
-> SingleConstraintParens
-> [SingleConstraintParens])
-> Enum SingleConstraintParens
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SingleConstraintParens -> SingleConstraintParens
succ :: SingleConstraintParens -> SingleConstraintParens
$cpred :: SingleConstraintParens -> SingleConstraintParens
pred :: SingleConstraintParens -> SingleConstraintParens
$ctoEnum :: Int -> SingleConstraintParens
toEnum :: Int -> SingleConstraintParens
$cfromEnum :: SingleConstraintParens -> Int
fromEnum :: SingleConstraintParens -> Int
$cenumFrom :: SingleConstraintParens -> [SingleConstraintParens]
enumFrom :: SingleConstraintParens -> [SingleConstraintParens]
$cenumFromThen :: SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens]
enumFromThen :: SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens]
$cenumFromTo :: SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens]
enumFromTo :: SingleConstraintParens
-> SingleConstraintParens -> [SingleConstraintParens]
$cenumFromThenTo :: SingleConstraintParens
-> SingleConstraintParens
-> SingleConstraintParens
-> [SingleConstraintParens]
enumFromThenTo :: SingleConstraintParens
-> SingleConstraintParens
-> SingleConstraintParens
-> [SingleConstraintParens]
Enum, SingleConstraintParens
SingleConstraintParens
-> SingleConstraintParens -> Bounded SingleConstraintParens
forall a. a -> a -> Bounded a
$cminBound :: SingleConstraintParens
minBound :: SingleConstraintParens
$cmaxBound :: SingleConstraintParens
maxBound :: SingleConstraintParens
Bounded)
data ColumnLimit
= NoLimit
| ColumnLimit Int
deriving (ColumnLimit -> ColumnLimit -> Bool
(ColumnLimit -> ColumnLimit -> Bool)
-> (ColumnLimit -> ColumnLimit -> Bool) -> Eq ColumnLimit
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ColumnLimit -> ColumnLimit -> Bool
== :: ColumnLimit -> ColumnLimit -> Bool
$c/= :: ColumnLimit -> ColumnLimit -> Bool
/= :: ColumnLimit -> ColumnLimit -> Bool
Eq, Int -> ColumnLimit -> String -> String
[ColumnLimit] -> String -> String
ColumnLimit -> String
(Int -> ColumnLimit -> String -> String)
-> (ColumnLimit -> String)
-> ([ColumnLimit] -> String -> String)
-> Show ColumnLimit
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> ColumnLimit -> String -> String
showsPrec :: Int -> ColumnLimit -> String -> String
$cshow :: ColumnLimit -> String
show :: ColumnLimit -> String
$cshowList :: [ColumnLimit] -> String -> String
showList :: [ColumnLimit] -> String -> String
Show)
data SingleDerivingParens
= DerivingAuto
| DerivingAlways
| DerivingNever
deriving (SingleDerivingParens -> SingleDerivingParens -> Bool
(SingleDerivingParens -> SingleDerivingParens -> Bool)
-> (SingleDerivingParens -> SingleDerivingParens -> Bool)
-> Eq SingleDerivingParens
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SingleDerivingParens -> SingleDerivingParens -> Bool
== :: SingleDerivingParens -> SingleDerivingParens -> Bool
$c/= :: SingleDerivingParens -> SingleDerivingParens -> Bool
/= :: SingleDerivingParens -> SingleDerivingParens -> Bool
Eq, Int -> SingleDerivingParens -> String -> String
[SingleDerivingParens] -> String -> String
SingleDerivingParens -> String
(Int -> SingleDerivingParens -> String -> String)
-> (SingleDerivingParens -> String)
-> ([SingleDerivingParens] -> String -> String)
-> Show SingleDerivingParens
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> SingleDerivingParens -> String -> String
showsPrec :: Int -> SingleDerivingParens -> String -> String
$cshow :: SingleDerivingParens -> String
show :: SingleDerivingParens -> String
$cshowList :: [SingleDerivingParens] -> String -> String
showList :: [SingleDerivingParens] -> String -> String
Show, Int -> SingleDerivingParens
SingleDerivingParens -> Int
SingleDerivingParens -> [SingleDerivingParens]
SingleDerivingParens -> SingleDerivingParens
SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens]
SingleDerivingParens
-> SingleDerivingParens
-> SingleDerivingParens
-> [SingleDerivingParens]
(SingleDerivingParens -> SingleDerivingParens)
-> (SingleDerivingParens -> SingleDerivingParens)
-> (Int -> SingleDerivingParens)
-> (SingleDerivingParens -> Int)
-> (SingleDerivingParens -> [SingleDerivingParens])
-> (SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens])
-> (SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens])
-> (SingleDerivingParens
-> SingleDerivingParens
-> SingleDerivingParens
-> [SingleDerivingParens])
-> Enum SingleDerivingParens
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SingleDerivingParens -> SingleDerivingParens
succ :: SingleDerivingParens -> SingleDerivingParens
$cpred :: SingleDerivingParens -> SingleDerivingParens
pred :: SingleDerivingParens -> SingleDerivingParens
$ctoEnum :: Int -> SingleDerivingParens
toEnum :: Int -> SingleDerivingParens
$cfromEnum :: SingleDerivingParens -> Int
fromEnum :: SingleDerivingParens -> Int
$cenumFrom :: SingleDerivingParens -> [SingleDerivingParens]
enumFrom :: SingleDerivingParens -> [SingleDerivingParens]
$cenumFromThen :: SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens]
enumFromThen :: SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens]
$cenumFromTo :: SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens]
enumFromTo :: SingleDerivingParens
-> SingleDerivingParens -> [SingleDerivingParens]
$cenumFromThenTo :: SingleDerivingParens
-> SingleDerivingParens
-> SingleDerivingParens
-> [SingleDerivingParens]
enumFromThenTo :: SingleDerivingParens
-> SingleDerivingParens
-> SingleDerivingParens
-> [SingleDerivingParens]
Enum, SingleDerivingParens
SingleDerivingParens
-> SingleDerivingParens -> Bounded SingleDerivingParens
forall a. a -> a -> Bounded a
$cminBound :: SingleDerivingParens
minBound :: SingleDerivingParens
$cmaxBound :: SingleDerivingParens
maxBound :: SingleDerivingParens
Bounded)
data ImportGrouping
= ImportGroupLegacy
| ImportGroupPreserve
| ImportGroupSingle
| ImportGroupByScope
| ImportGroupByQualified
| ImportGroupByScopeThenQualified
| ImportGroupCustom (NonEmpty CT.ImportGroup)
deriving (ImportGrouping -> ImportGrouping -> Bool
(ImportGrouping -> ImportGrouping -> Bool)
-> (ImportGrouping -> ImportGrouping -> Bool) -> Eq ImportGrouping
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ImportGrouping -> ImportGrouping -> Bool
== :: ImportGrouping -> ImportGrouping -> Bool
$c/= :: ImportGrouping -> ImportGrouping -> Bool
/= :: ImportGrouping -> ImportGrouping -> Bool
Eq, Int -> ImportGrouping -> String -> String
[ImportGrouping] -> String -> String
ImportGrouping -> String
(Int -> ImportGrouping -> String -> String)
-> (ImportGrouping -> String)
-> ([ImportGrouping] -> String -> String)
-> Show ImportGrouping
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> ImportGrouping -> String -> String
showsPrec :: Int -> ImportGrouping -> String -> String
$cshow :: ImportGrouping -> String
show :: ImportGrouping -> String
$cshowList :: [ImportGrouping] -> String -> String
showList :: [ImportGrouping] -> String -> String
Show)
instance Aeson.FromJSON CommaStyle where
parseJSON :: Value -> Parser CommaStyle
parseJSON =
String -> (Text -> Parser CommaStyle) -> Value -> Parser CommaStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"CommaStyle" ((Text -> Parser CommaStyle) -> Value -> Parser CommaStyle)
-> (Text -> Parser CommaStyle) -> Value -> Parser CommaStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser CommaStyle)
-> (CommaStyle -> Parser CommaStyle)
-> Either String CommaStyle
-> Parser CommaStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser CommaStyle
forall a. String -> Parser a
Aeson.parseFail CommaStyle -> Parser CommaStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String CommaStyle -> Parser CommaStyle)
-> Either String CommaStyle -> Parser CommaStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String CommaStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType CommaStyle where
parsePrinterOptType :: String -> Either String CommaStyle
parsePrinterOptType String
s =
case String
s of
String
"leading" -> CommaStyle -> Either String CommaStyle
forall a b. b -> Either a b
Right CommaStyle
Leading
String
"trailing" -> CommaStyle -> Either String CommaStyle
forall a b. b -> Either a b
Right CommaStyle
Trailing
String
_ ->
String -> Either String CommaStyle
forall a b. a -> Either a b
Left (String -> Either String CommaStyle)
-> ([String] -> String) -> [String] -> Either String CommaStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String CommaStyle)
-> [String] -> Either String CommaStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"leading\" or \"trailing\""
]
instance RenderPrinterOpt CommaStyle where
renderPrinterOpt :: CommaStyle -> String
renderPrinterOpt = \case
CommaStyle
Leading -> String
"leading"
CommaStyle
Trailing -> String
"trailing"
instance Aeson.FromJSON FunctionArrowsStyle where
parseJSON :: Value -> Parser FunctionArrowsStyle
parseJSON =
String
-> (Text -> Parser FunctionArrowsStyle)
-> Value
-> Parser FunctionArrowsStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"FunctionArrowsStyle" ((Text -> Parser FunctionArrowsStyle)
-> Value -> Parser FunctionArrowsStyle)
-> (Text -> Parser FunctionArrowsStyle)
-> Value
-> Parser FunctionArrowsStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser FunctionArrowsStyle)
-> (FunctionArrowsStyle -> Parser FunctionArrowsStyle)
-> Either String FunctionArrowsStyle
-> Parser FunctionArrowsStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser FunctionArrowsStyle
forall a. String -> Parser a
Aeson.parseFail FunctionArrowsStyle -> Parser FunctionArrowsStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String FunctionArrowsStyle -> Parser FunctionArrowsStyle)
-> Either String FunctionArrowsStyle -> Parser FunctionArrowsStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String FunctionArrowsStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType FunctionArrowsStyle where
parsePrinterOptType :: String -> Either String FunctionArrowsStyle
parsePrinterOptType String
s =
case String
s of
String
"trailing" -> FunctionArrowsStyle -> Either String FunctionArrowsStyle
forall a b. b -> Either a b
Right FunctionArrowsStyle
TrailingArrows
String
"leading" -> FunctionArrowsStyle -> Either String FunctionArrowsStyle
forall a b. b -> Either a b
Right FunctionArrowsStyle
LeadingArrows
String
"leading-args" -> FunctionArrowsStyle -> Either String FunctionArrowsStyle
forall a b. b -> Either a b
Right FunctionArrowsStyle
LeadingArgsArrows
String
_ ->
String -> Either String FunctionArrowsStyle
forall a b. a -> Either a b
Left (String -> Either String FunctionArrowsStyle)
-> ([String] -> String)
-> [String]
-> Either String FunctionArrowsStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String FunctionArrowsStyle)
-> [String] -> Either String FunctionArrowsStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"trailing\", \"leading\", or \"leading-args\""
]
instance RenderPrinterOpt FunctionArrowsStyle where
renderPrinterOpt :: FunctionArrowsStyle -> String
renderPrinterOpt = \case
FunctionArrowsStyle
TrailingArrows -> String
"trailing"
FunctionArrowsStyle
LeadingArrows -> String
"leading"
FunctionArrowsStyle
LeadingArgsArrows -> String
"leading-args"
instance Aeson.FromJSON HaddockPrintStyle where
parseJSON :: Value -> Parser HaddockPrintStyle
parseJSON =
String
-> (Text -> Parser HaddockPrintStyle)
-> Value
-> Parser HaddockPrintStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"HaddockPrintStyle" ((Text -> Parser HaddockPrintStyle)
-> Value -> Parser HaddockPrintStyle)
-> (Text -> Parser HaddockPrintStyle)
-> Value
-> Parser HaddockPrintStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser HaddockPrintStyle)
-> (HaddockPrintStyle -> Parser HaddockPrintStyle)
-> Either String HaddockPrintStyle
-> Parser HaddockPrintStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser HaddockPrintStyle
forall a. String -> Parser a
Aeson.parseFail HaddockPrintStyle -> Parser HaddockPrintStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String HaddockPrintStyle -> Parser HaddockPrintStyle)
-> Either String HaddockPrintStyle -> Parser HaddockPrintStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String HaddockPrintStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType HaddockPrintStyle where
parsePrinterOptType :: String -> Either String HaddockPrintStyle
parsePrinterOptType String
s =
case String
s of
String
"single-line" -> HaddockPrintStyle -> Either String HaddockPrintStyle
forall a b. b -> Either a b
Right HaddockPrintStyle
HaddockSingleLine
String
"multi-line" -> HaddockPrintStyle -> Either String HaddockPrintStyle
forall a b. b -> Either a b
Right HaddockPrintStyle
HaddockMultiLine
String
"multi-line-compact" -> HaddockPrintStyle -> Either String HaddockPrintStyle
forall a b. b -> Either a b
Right HaddockPrintStyle
HaddockMultiLineCompact
String
_ ->
String -> Either String HaddockPrintStyle
forall a b. a -> Either a b
Left (String -> Either String HaddockPrintStyle)
-> ([String] -> String)
-> [String]
-> Either String HaddockPrintStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String HaddockPrintStyle)
-> [String] -> Either String HaddockPrintStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"single-line\", \"multi-line\", or \"multi-line-compact\""
]
instance RenderPrinterOpt HaddockPrintStyle where
renderPrinterOpt :: HaddockPrintStyle -> String
renderPrinterOpt = \case
HaddockPrintStyle
HaddockSingleLine -> String
"single-line"
HaddockPrintStyle
HaddockMultiLine -> String
"multi-line"
HaddockPrintStyle
HaddockMultiLineCompact -> String
"multi-line-compact"
instance Aeson.FromJSON HaddockPrintStyleModule where
parseJSON :: Value -> Parser HaddockPrintStyleModule
parseJSON =
\Value
v -> case Value
v of
Value
Aeson.Null -> HaddockPrintStyleModule -> Parser HaddockPrintStyleModule
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockPrintStyleModule
PrintStyleInherit
Aeson.String Text
"" -> HaddockPrintStyleModule -> Parser HaddockPrintStyleModule
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockPrintStyleModule
PrintStyleInherit
Value
_ -> HaddockPrintStyle -> HaddockPrintStyleModule
PrintStyleOverride (HaddockPrintStyle -> HaddockPrintStyleModule)
-> Parser HaddockPrintStyle -> Parser HaddockPrintStyleModule
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser HaddockPrintStyle
forall a. FromJSON a => Value -> Parser a
Aeson.parseJSON Value
v
instance PrinterOptsFieldType HaddockPrintStyleModule where
parsePrinterOptType :: String -> Either String HaddockPrintStyleModule
parsePrinterOptType =
\String
s -> case String
s of
String
"" -> HaddockPrintStyleModule -> Either String HaddockPrintStyleModule
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockPrintStyleModule
PrintStyleInherit
String
_ -> HaddockPrintStyle -> HaddockPrintStyleModule
PrintStyleOverride (HaddockPrintStyle -> HaddockPrintStyleModule)
-> Either String HaddockPrintStyle
-> Either String HaddockPrintStyleModule
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> Either String HaddockPrintStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType String
s
instance Aeson.FromJSON HaddockLocSignature where
parseJSON :: Value -> Parser HaddockLocSignature
parseJSON =
String
-> (Text -> Parser HaddockLocSignature)
-> Value
-> Parser HaddockLocSignature
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"HaddockLocSignature" ((Text -> Parser HaddockLocSignature)
-> Value -> Parser HaddockLocSignature)
-> (Text -> Parser HaddockLocSignature)
-> Value
-> Parser HaddockLocSignature
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser HaddockLocSignature)
-> (HaddockLocSignature -> Parser HaddockLocSignature)
-> Either String HaddockLocSignature
-> Parser HaddockLocSignature
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser HaddockLocSignature
forall a. String -> Parser a
Aeson.parseFail HaddockLocSignature -> Parser HaddockLocSignature
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String HaddockLocSignature -> Parser HaddockLocSignature)
-> Either String HaddockLocSignature -> Parser HaddockLocSignature
forall a b. (a -> b) -> a -> b
$
String -> Either String HaddockLocSignature
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType HaddockLocSignature where
parsePrinterOptType :: String -> Either String HaddockLocSignature
parsePrinterOptType String
s =
case String
s of
String
"auto" -> HaddockLocSignature -> Either String HaddockLocSignature
forall a b. b -> Either a b
Right HaddockLocSignature
HaddockLocSigAuto
String
"leading" -> HaddockLocSignature -> Either String HaddockLocSignature
forall a b. b -> Either a b
Right HaddockLocSignature
HaddockLocSigLeading
String
"trailing" -> HaddockLocSignature -> Either String HaddockLocSignature
forall a b. b -> Either a b
Right HaddockLocSignature
HaddockLocSigTrailing
String
_ ->
String -> Either String HaddockLocSignature
forall a b. a -> Either a b
Left (String -> Either String HaddockLocSignature)
-> ([String] -> String)
-> [String]
-> Either String HaddockLocSignature
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String HaddockLocSignature)
-> [String] -> Either String HaddockLocSignature
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"auto\", \"leading\", or \"trailing\""
]
instance RenderPrinterOpt HaddockLocSignature where
renderPrinterOpt :: HaddockLocSignature -> String
renderPrinterOpt = \case
HaddockLocSignature
HaddockLocSigAuto -> String
"auto"
HaddockLocSignature
HaddockLocSigLeading -> String
"leading"
HaddockLocSignature
HaddockLocSigTrailing -> String
"trailing"
instance Aeson.FromJSON ImportExportStyle where
parseJSON :: Value -> Parser ImportExportStyle
parseJSON =
String
-> (Text -> Parser ImportExportStyle)
-> Value
-> Parser ImportExportStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"ImportExportStyle" ((Text -> Parser ImportExportStyle)
-> Value -> Parser ImportExportStyle)
-> (Text -> Parser ImportExportStyle)
-> Value
-> Parser ImportExportStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser ImportExportStyle)
-> (ImportExportStyle -> Parser ImportExportStyle)
-> Either String ImportExportStyle
-> Parser ImportExportStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser ImportExportStyle
forall a. String -> Parser a
Aeson.parseFail ImportExportStyle -> Parser ImportExportStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String ImportExportStyle -> Parser ImportExportStyle)
-> Either String ImportExportStyle -> Parser ImportExportStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String ImportExportStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType ImportExportStyle where
parsePrinterOptType :: String -> Either String ImportExportStyle
parsePrinterOptType String
s =
case String
s of
String
"leading" -> ImportExportStyle -> Either String ImportExportStyle
forall a b. b -> Either a b
Right ImportExportStyle
ImportExportLeading
String
"trailing" -> ImportExportStyle -> Either String ImportExportStyle
forall a b. b -> Either a b
Right ImportExportStyle
ImportExportTrailing
String
"diff-friendly" -> ImportExportStyle -> Either String ImportExportStyle
forall a b. b -> Either a b
Right ImportExportStyle
ImportExportDiffFriendly
String
_ ->
String -> Either String ImportExportStyle
forall a b. a -> Either a b
Left (String -> Either String ImportExportStyle)
-> ([String] -> String)
-> [String]
-> Either String ImportExportStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String ImportExportStyle)
-> [String] -> Either String ImportExportStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"leading\", \"trailing\", or \"diff-friendly\""
]
instance RenderPrinterOpt ImportExportStyle where
renderPrinterOpt :: ImportExportStyle -> String
renderPrinterOpt = \case
ImportExportStyle
ImportExportLeading -> String
"leading"
ImportExportStyle
ImportExportTrailing -> String
"trailing"
ImportExportStyle
ImportExportDiffFriendly -> String
"diff-friendly"
instance Aeson.FromJSON LetStyle where
parseJSON :: Value -> Parser LetStyle
parseJSON =
String -> (Text -> Parser LetStyle) -> Value -> Parser LetStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"LetStyle" ((Text -> Parser LetStyle) -> Value -> Parser LetStyle)
-> (Text -> Parser LetStyle) -> Value -> Parser LetStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser LetStyle)
-> (LetStyle -> Parser LetStyle)
-> Either String LetStyle
-> Parser LetStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser LetStyle
forall a. String -> Parser a
Aeson.parseFail LetStyle -> Parser LetStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String LetStyle -> Parser LetStyle)
-> Either String LetStyle -> Parser LetStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String LetStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType LetStyle where
parsePrinterOptType :: String -> Either String LetStyle
parsePrinterOptType String
s =
case String
s of
String
"auto" -> LetStyle -> Either String LetStyle
forall a b. b -> Either a b
Right LetStyle
LetAuto
String
"inline" -> LetStyle -> Either String LetStyle
forall a b. b -> Either a b
Right LetStyle
LetInline
String
"newline" -> LetStyle -> Either String LetStyle
forall a b. b -> Either a b
Right LetStyle
LetNewline
String
"mixed" -> LetStyle -> Either String LetStyle
forall a b. b -> Either a b
Right LetStyle
LetMixed
String
_ ->
String -> Either String LetStyle
forall a b. a -> Either a b
Left (String -> Either String LetStyle)
-> ([String] -> String) -> [String] -> Either String LetStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String LetStyle)
-> [String] -> Either String LetStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"auto\", \"inline\", \"newline\", or \"mixed\""
]
instance RenderPrinterOpt LetStyle where
renderPrinterOpt :: LetStyle -> String
renderPrinterOpt = \case
LetStyle
LetAuto -> String
"auto"
LetStyle
LetInline -> String
"inline"
LetStyle
LetNewline -> String
"newline"
LetStyle
LetMixed -> String
"mixed"
instance Aeson.FromJSON InStyle where
parseJSON :: Value -> Parser InStyle
parseJSON =
String -> (Text -> Parser InStyle) -> Value -> Parser InStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"InStyle" ((Text -> Parser InStyle) -> Value -> Parser InStyle)
-> (Text -> Parser InStyle) -> Value -> Parser InStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser InStyle)
-> (InStyle -> Parser InStyle)
-> Either String InStyle
-> Parser InStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser InStyle
forall a. String -> Parser a
Aeson.parseFail InStyle -> Parser InStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String InStyle -> Parser InStyle)
-> Either String InStyle -> Parser InStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String InStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType InStyle where
parsePrinterOptType :: String -> Either String InStyle
parsePrinterOptType String
s =
case String
s of
String
"left-align" -> InStyle -> Either String InStyle
forall a b. b -> Either a b
Right InStyle
InLeftAlign
String
"right-align" -> InStyle -> Either String InStyle
forall a b. b -> Either a b
Right InStyle
InRightAlign
String
"no-space" -> InStyle -> Either String InStyle
forall a b. b -> Either a b
Right InStyle
InNoSpace
String
_ ->
String -> Either String InStyle
forall a b. a -> Either a b
Left (String -> Either String InStyle)
-> ([String] -> String) -> [String] -> Either String InStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String InStyle)
-> [String] -> Either String InStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"left-align\", \"right-align\", or \"no-space\""
]
instance RenderPrinterOpt InStyle where
renderPrinterOpt :: InStyle -> String
renderPrinterOpt = \case
InStyle
InLeftAlign -> String
"left-align"
InStyle
InRightAlign -> String
"right-align"
InStyle
InNoSpace -> String
"no-space"
instance Aeson.FromJSON IfStyle where
parseJSON :: Value -> Parser IfStyle
parseJSON =
String -> (Text -> Parser IfStyle) -> Value -> Parser IfStyle
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"IfStyle" ((Text -> Parser IfStyle) -> Value -> Parser IfStyle)
-> (Text -> Parser IfStyle) -> Value -> Parser IfStyle
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser IfStyle)
-> (IfStyle -> Parser IfStyle)
-> Either String IfStyle
-> Parser IfStyle
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser IfStyle
forall a. String -> Parser a
Aeson.parseFail IfStyle -> Parser IfStyle
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String IfStyle -> Parser IfStyle)
-> Either String IfStyle -> Parser IfStyle
forall a b. (a -> b) -> a -> b
$
String -> Either String IfStyle
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType IfStyle where
parsePrinterOptType :: String -> Either String IfStyle
parsePrinterOptType String
s =
case String
s of
String
"indented" -> IfStyle -> Either String IfStyle
forall a b. b -> Either a b
Right IfStyle
IfIndented
String
"hanging" -> IfStyle -> Either String IfStyle
forall a b. b -> Either a b
Right IfStyle
IfHanging
String
_ ->
String -> Either String IfStyle
forall a b. a -> Either a b
Left (String -> Either String IfStyle)
-> ([String] -> String) -> [String] -> Either String IfStyle
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String IfStyle)
-> [String] -> Either String IfStyle
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"indented\" or \"hanging\""
]
instance RenderPrinterOpt IfStyle where
renderPrinterOpt :: IfStyle -> String
renderPrinterOpt = \case
IfStyle
IfIndented -> String
"indented"
IfStyle
IfHanging -> String
"hanging"
instance Aeson.FromJSON Unicode where
parseJSON :: Value -> Parser Unicode
parseJSON =
String -> (Text -> Parser Unicode) -> Value -> Parser Unicode
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"Unicode" ((Text -> Parser Unicode) -> Value -> Parser Unicode)
-> (Text -> Parser Unicode) -> Value -> Parser Unicode
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser Unicode)
-> (Unicode -> Parser Unicode)
-> Either String Unicode
-> Parser Unicode
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser Unicode
forall a. String -> Parser a
Aeson.parseFail Unicode -> Parser Unicode
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String Unicode -> Parser Unicode)
-> Either String Unicode -> Parser Unicode
forall a b. (a -> b) -> a -> b
$
String -> Either String Unicode
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType Unicode where
parsePrinterOptType :: String -> Either String Unicode
parsePrinterOptType String
s =
case String
s of
String
"detect" -> Unicode -> Either String Unicode
forall a b. b -> Either a b
Right Unicode
UnicodeDetect
String
"always" -> Unicode -> Either String Unicode
forall a b. b -> Either a b
Right Unicode
UnicodeAlways
String
"never" -> Unicode -> Either String Unicode
forall a b. b -> Either a b
Right Unicode
UnicodeNever
String
_ ->
String -> Either String Unicode
forall a b. a -> Either a b
Left (String -> Either String Unicode)
-> ([String] -> String) -> [String] -> Either String Unicode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String Unicode)
-> [String] -> Either String Unicode
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"detect\", \"always\", or \"never\""
]
instance RenderPrinterOpt Unicode where
renderPrinterOpt :: Unicode -> String
renderPrinterOpt = \case
Unicode
UnicodeDetect -> String
"detect"
Unicode
UnicodeAlways -> String
"always"
Unicode
UnicodeNever -> String
"never"
instance Aeson.FromJSON SingleConstraintParens where
parseJSON :: Value -> Parser SingleConstraintParens
parseJSON =
String
-> (Text -> Parser SingleConstraintParens)
-> Value
-> Parser SingleConstraintParens
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"SingleConstraintParens" ((Text -> Parser SingleConstraintParens)
-> Value -> Parser SingleConstraintParens)
-> (Text -> Parser SingleConstraintParens)
-> Value
-> Parser SingleConstraintParens
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser SingleConstraintParens)
-> (SingleConstraintParens -> Parser SingleConstraintParens)
-> Either String SingleConstraintParens
-> Parser SingleConstraintParens
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser SingleConstraintParens
forall a. String -> Parser a
Aeson.parseFail SingleConstraintParens -> Parser SingleConstraintParens
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String SingleConstraintParens
-> Parser SingleConstraintParens)
-> Either String SingleConstraintParens
-> Parser SingleConstraintParens
forall a b. (a -> b) -> a -> b
$
String -> Either String SingleConstraintParens
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType SingleConstraintParens where
parsePrinterOptType :: String -> Either String SingleConstraintParens
parsePrinterOptType String
s =
case String
s of
String
"auto" -> SingleConstraintParens -> Either String SingleConstraintParens
forall a b. b -> Either a b
Right SingleConstraintParens
ConstraintAuto
String
"always" -> SingleConstraintParens -> Either String SingleConstraintParens
forall a b. b -> Either a b
Right SingleConstraintParens
ConstraintAlways
String
"never" -> SingleConstraintParens -> Either String SingleConstraintParens
forall a b. b -> Either a b
Right SingleConstraintParens
ConstraintNever
String
_ ->
String -> Either String SingleConstraintParens
forall a b. a -> Either a b
Left (String -> Either String SingleConstraintParens)
-> ([String] -> String)
-> [String]
-> Either String SingleConstraintParens
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String SingleConstraintParens)
-> [String] -> Either String SingleConstraintParens
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"auto\", \"always\", or \"never\""
]
instance RenderPrinterOpt SingleConstraintParens where
renderPrinterOpt :: SingleConstraintParens -> String
renderPrinterOpt = \case
SingleConstraintParens
ConstraintAuto -> String
"auto"
SingleConstraintParens
ConstraintAlways -> String
"always"
SingleConstraintParens
ConstraintNever -> String
"never"
instance Aeson.FromJSON ColumnLimit where
parseJSON :: Value -> Parser ColumnLimit
parseJSON =
\case
Aeson.String Text
"none" ->
ColumnLimit -> Parser ColumnLimit
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ColumnLimit
NoLimit
Aeson.Number Scientific
x
| Right Int
x' <- (Scientific -> Either Double Int
forall r i. (RealFloat r, Integral i) => Scientific -> Either r i
floatingOrInteger Scientific
x :: Either Double Int) ->
ColumnLimit -> Parser ColumnLimit
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ColumnLimit -> Parser ColumnLimit)
-> ColumnLimit -> Parser ColumnLimit
forall a b. (a -> b) -> a -> b
$ Int -> ColumnLimit
ColumnLimit Int
x'
Value
s ->
String -> Parser ColumnLimit
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ColumnLimit)
-> ([String] -> String) -> [String] -> Parser ColumnLimit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Parser ColumnLimit) -> [String] -> Parser ColumnLimit
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Value -> String
forall a. Show a => a -> String
show Value
s,
String
"Valid values are: \"none\", or an integer"
]
instance PrinterOptsFieldType ColumnLimit where
parsePrinterOptType :: String -> Either String ColumnLimit
parsePrinterOptType =
\String
s ->
case String
s of
String
"none" -> ColumnLimit -> Either String ColumnLimit
forall a b. b -> Either a b
Right ColumnLimit
NoLimit
String
_
| Just Int
someInt <- String -> Maybe Int
forall a. Read a => String -> Maybe a
readMaybe String
s ->
ColumnLimit -> Either String ColumnLimit
forall a b. b -> Either a b
Right (ColumnLimit -> Either String ColumnLimit)
-> (Int -> ColumnLimit) -> Int -> Either String ColumnLimit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ColumnLimit
ColumnLimit (Int -> Either String ColumnLimit)
-> Int -> Either String ColumnLimit
forall a b. (a -> b) -> a -> b
$ Int
someInt
String
_ ->
String -> Either String ColumnLimit
forall a b. a -> Either a b
Left (String -> Either String ColumnLimit)
-> ([String] -> String) -> [String] -> Either String ColumnLimit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String ColumnLimit)
-> [String] -> Either String ColumnLimit
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s,
String
"Valid values are: \"none\", or an integer"
]
instance Aeson.FromJSON SingleDerivingParens where
parseJSON :: Value -> Parser SingleDerivingParens
parseJSON =
String
-> (Text -> Parser SingleDerivingParens)
-> Value
-> Parser SingleDerivingParens
forall a. String -> (Text -> Parser a) -> Value -> Parser a
Aeson.withText String
"SingleDerivingParens" ((Text -> Parser SingleDerivingParens)
-> Value -> Parser SingleDerivingParens)
-> (Text -> Parser SingleDerivingParens)
-> Value
-> Parser SingleDerivingParens
forall a b. (a -> b) -> a -> b
$ \Text
s ->
(String -> Parser SingleDerivingParens)
-> (SingleDerivingParens -> Parser SingleDerivingParens)
-> Either String SingleDerivingParens
-> Parser SingleDerivingParens
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either String -> Parser SingleDerivingParens
forall a. String -> Parser a
Aeson.parseFail SingleDerivingParens -> Parser SingleDerivingParens
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either String SingleDerivingParens -> Parser SingleDerivingParens)
-> Either String SingleDerivingParens
-> Parser SingleDerivingParens
forall a b. (a -> b) -> a -> b
$
String -> Either String SingleDerivingParens
forall a. PrinterOptsFieldType a => String -> Either String a
parsePrinterOptType (Text -> String
Text.unpack Text
s)
instance PrinterOptsFieldType SingleDerivingParens where
parsePrinterOptType :: String -> Either String SingleDerivingParens
parsePrinterOptType String
s =
case String
s of
String
"auto" -> SingleDerivingParens -> Either String SingleDerivingParens
forall a b. b -> Either a b
Right SingleDerivingParens
DerivingAuto
String
"always" -> SingleDerivingParens -> Either String SingleDerivingParens
forall a b. b -> Either a b
Right SingleDerivingParens
DerivingAlways
String
"never" -> SingleDerivingParens -> Either String SingleDerivingParens
forall a b. b -> Either a b
Right SingleDerivingParens
DerivingNever
String
_ ->
String -> Either String SingleDerivingParens
forall a b. a -> Either a b
Left (String -> Either String SingleDerivingParens)
-> ([String] -> String)
-> [String]
-> Either String SingleDerivingParens
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String SingleDerivingParens)
-> [String] -> Either String SingleDerivingParens
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"auto\", \"always\", or \"never\""
]
instance RenderPrinterOpt SingleDerivingParens where
renderPrinterOpt :: SingleDerivingParens -> String
renderPrinterOpt = \case
SingleDerivingParens
DerivingAuto -> String
"auto"
SingleDerivingParens
DerivingAlways -> String
"always"
SingleDerivingParens
DerivingNever -> String
"never"
instance Aeson.FromJSON ImportGrouping where
parseJSON :: Value -> Parser ImportGrouping
parseJSON =
\case
Aeson.String Text
"legacy" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupLegacy
Aeson.String Text
"preserve" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupPreserve
Aeson.String Text
"single" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupSingle
Aeson.String Text
"by-qualified" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupByQualified
Aeson.String Text
"by-scope" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupByScope
Aeson.String Text
"by-scope-then-qualified" -> ImportGrouping -> Parser ImportGrouping
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImportGrouping
ImportGroupByScopeThenQualified
arr :: Value
arr@(Aeson.Array Array
_) -> NonEmpty ImportGroup -> ImportGrouping
ImportGroupCustom (NonEmpty ImportGroup -> ImportGrouping)
-> Parser (NonEmpty ImportGroup) -> Parser ImportGrouping
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser (NonEmpty ImportGroup)
forall a. FromJSON a => Value -> Parser a
Aeson.parseJSON Value
arr
Value
other ->
String -> Parser ImportGrouping
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ImportGrouping)
-> ([String] -> String) -> [String] -> Parser ImportGrouping
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Parser ImportGrouping)
-> [String] -> Parser ImportGrouping
forall a b. (a -> b) -> a -> b
$
[ String
"unknown strategy value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Value -> String
forall a. Show a => a -> String
show Value
other,
String
"Valid values are: \"legacy\", \"preserve\", \"single\", \"by-qualified\", \"by-scope\", \"by-scope-then-qualified\" or a valid YAML configuration for import groups"
]
instance PrinterOptsFieldType ImportGrouping where
parsePrinterOptType :: String -> Either String ImportGrouping
parsePrinterOptType =
\case
String
"legacy" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupLegacy
String
"preserve" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupPreserve
String
"single" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupSingle
String
"by-qualified" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupByQualified
String
"by-scope" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupByScope
String
"by-scope-then-qualified" -> ImportGrouping -> Either String ImportGrouping
forall a b. b -> Either a b
Right ImportGrouping
ImportGroupByScopeThenQualified
String
s ->
String -> Either String ImportGrouping
forall a b. a -> Either a b
Left (String -> Either String ImportGrouping)
-> ([String] -> String) -> [String] -> Either String ImportGrouping
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> String
unlines ([String] -> Either String ImportGrouping)
-> [String] -> Either String ImportGrouping
forall a b. (a -> b) -> a -> b
$
[ String
"unknown value: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String -> String
forall a. Show a => a -> String
show String
s
, String
"Valid values are: \"legacy\", \"preserve\", \"single\", \"by-qualified\", \"by-scope\", \"by-scope-then-qualified\" or a valid YAML configuration for import groups (see fourmolu.yaml)"
]
defaultPrinterOptsYaml :: String
defaultPrinterOptsYaml :: String
defaultPrinterOptsYaml =
[String] -> String
unlines
[ String
"# Number of spaces per indentation step"
, String
"indentation: 4"
, String
""
, String
"# Max line length for automatic line breaking"
, String
"column-limit: none"
, String
""
, String
"# Styling of arrows in type signatures (choices: trailing, leading, or leading-args)"
, String
"function-arrows: trailing"
, String
""
, String
"# How to place commas in multi-line lists, records, etc. (choices: leading or trailing)"
, String
"comma-style: leading"
, String
""
, String
"# Styling of import/export lists (choices: leading, trailing, or diff-friendly)"
, String
"import-export-style: diff-friendly"
, String
""
, String
"# Rules for grouping import declarations"
, String
"import-grouping: legacy"
, String
""
, String
"# Whether to full-indent or half-indent 'where' bindings past the preceding body"
, String
"indent-wheres: false"
, String
""
, String
"# Whether to leave a space before an opening record brace"
, String
"record-brace-space: false"
, String
""
, String
"# Number of spaces between top-level declarations"
, String
"newlines-between-decls: 1"
, String
""
, String
"# How to print Haddock comments (choices: single-line, multi-line, or multi-line-compact)"
, String
"haddock-style: multi-line"
, String
""
, String
"# How to print module docstring"
, String
"haddock-style-module: null"
, String
""
, String
"# Where to put docstring comments in function signatures (choices: auto, leading, or trailing)"
, String
"haddock-location-signature: auto"
, String
""
, String
"# Styling of let blocks (choices: auto, inline, newline, or mixed)"
, String
"let-style: auto"
, String
""
, String
"# How to align the 'in' keyword with respect to the 'let' keyword (choices: left-align, right-align, or no-space)"
, String
"in-style: right-align"
, String
""
, String
"# Styling of if-statements (choices: indented or hanging)"
, String
"if-style: indented"
, String
""
, String
"# Whether to put parentheses around a single constraint (choices: auto, always, or never)"
, String
"single-constraint-parens: always"
, String
""
, String
"# Whether to put parentheses around a single deriving class (choices: auto, always, or never)"
, String
"single-deriving-parens: always"
, String
""
, String
"# Whether to sort constraints"
, String
"sort-constraints: false"
, String
""
, String
"# Whether to sort derived classes"
, String
"sort-derived-classes: false"
, String
""
, String
"# Whether to sort deriving clauses"
, String
"sort-deriving-clauses: false"
, String
""
, String
"# Whether to place section operators (those that are infixr 0, such as $) in trailing position, continuing the expression indented below"
, String
"trailing-section-operators: true"
, String
""
, String
"# Output Unicode syntax (choices: detect, always, or never)"
, String
"unicode: never"
, String
""
, String
"# Give the programmer more choice on where to insert blank lines"
, String
"respectful: true"
, String
""
, String
"# Fixity information for operators"
, String
"fixities: []"
, String
""
, String
"# Module reexports Fourmolu should know about"
, String
"reexports: []"
, String
""
, String
"# Modules defined by the current Cabal package for import grouping"
, String
"local-modules: []"
]