Cabal-2.2.0.0: A framework for packaging Haskell software

Safe HaskellNone
LanguageHaskell2010

Distribution.Parsec.Class

Contents

Synopsis

Documentation

class Parsec a where Source #

Class for parsing with parsec. Mainly used for .cabal file fields.

Minimal complete definition

parsec

Methods

parsec :: CabalParsing m => m a Source #

Instances
Parsec Bool Source # 
Instance details

Methods

parsec :: CabalParsing m => m Bool Source #

Parsec Version Source # 
Instance details
Parsec VersionRange Source # 
Instance details
Parsec RepoType Source # 
Instance details
Parsec RepoKind Source # 
Instance details
Parsec PkgconfigName Source # 
Instance details
Parsec ForeignLibType Source # 
Instance details
Parsec ForeignLibOption Source # 
Instance details
Parsec ExecutableScope Source # 
Instance details
Parsec ComponentId Source # 
Instance details
Parsec BuildType Source # 
Instance details
Parsec AbiHash Source # 
Instance details
Parsec Platform Source # 
Instance details
Parsec Arch Source # 
Instance details

Methods

parsec :: CabalParsing m => m Arch Source #

Parsec OS Source # 
Instance details

Methods

parsec :: CabalParsing m => m OS Source #

Parsec LicenseRef Source # 
Instance details
Parsec LicenseId Source #
>>> eitherParsec "BSD-3-Clause" :: Either String LicenseId
Right BSD_3_Clause
>>> eitherParsec "BSD3" :: Either String LicenseId
Left "...Unknown SPDX license identifier: 'BSD3' Do you mean BSD-3-Clause?"
Instance details
Parsec LicenseExceptionId Source # 
Instance details
Parsec SimpleLicenseExpression Source # 
Instance details
Parsec LicenseExpression Source # 
Instance details
Parsec License Source #
>>> eitherParsec "BSD-3-Clause AND MIT" :: Either String License
Right (License (EAnd (ELicense (ELicenseId BSD_3_Clause) Nothing) (ELicense (ELicenseId MIT) Nothing)))
>>> eitherParsec "NONE" :: Either String License
Right NONE
Instance details
Parsec ModuleName Source # 
Instance details
Parsec ModuleRenaming Source # 
Instance details
Parsec IncludeRenaming Source # 
Instance details
Parsec TestType Source # 
Instance details
Parsec PkgconfigDependency Source # 
Instance details
Parsec BenchmarkType Source # 
Instance details
Parsec License Source # 
Instance details
Parsec Extension Source # 
Instance details
Parsec Language Source # 
Instance details
Parsec CompilerFlavor Source # 
Instance details
Parsec FilePathNT Source # 
Instance details
Parsec FreeText Source # 
Instance details
Parsec TestedWith Source # 
Instance details
Parsec SpecLicense Source # 
Instance details
Parsec SpecVersion Source # 
Instance details
Parsec Token' Source # 
Instance details

Methods

parsec :: CabalParsing m => m Token' Source #

Parsec Token Source # 
Instance details

Methods

parsec :: CabalParsing m => m Token Source #

Parsec PackageName Source # 
Instance details
Parsec UnqualComponentName Source # 
Instance details
Parsec DefUnitId Source # 
Instance details
Parsec UnitId Source #

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Methods

parsec :: CabalParsing m => m UnitId Source #

Parsec Module Source # 
Instance details

Methods

parsec :: CabalParsing m => m Module Source #

Parsec OpenModule Source #
>>> eitherParsec "Includes2-0.1.0.0-inplace-mysql:Database.MySQL" :: Either String OpenModule
Right (OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"})) (ModuleName ["Database","MySQL"]))
Instance details
Parsec OpenUnitId Source #
>>> eitherParsec "foobar" :: Either String OpenUnitId
Right (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "foobar"}))
>>> eitherParsec "foo[Str=text-1.2.3:Data.Text.Text]" :: Either String OpenUnitId
Right (IndefFullUnitId (ComponentId "foo") (fromList [(ModuleName ["Str"],OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "text-1.2.3"})) (ModuleName ["Data","Text","Text"]))]))
Instance details
Parsec ModuleReexport Source # 
Instance details
Parsec Mixin Source # 
Instance details

Methods

parsec :: CabalParsing m => m Mixin Source #

Parsec ExeDependency Source # 
Instance details
Parsec Dependency Source # 
Instance details
Parsec MungedPackageName Source # 
Instance details
Parsec AbiDependency Source # 
Instance details
Parsec LegacyExeDependency Source # 
Instance details
Parsec LibVersionInfo Source # 
Instance details
Parsec FlagName Source # 
Instance details
Parsec ExposedModule Source # 
Instance details
Parsec TestShowDetails Source # 
Instance details
Parsec a => Parsec (Identity a) Source # 
Instance details

Methods

parsec :: CabalParsing m => m (Identity a) Source #

Parsec a => Parsec (MQuoted a) Source # 
Instance details

Methods

parsec :: CabalParsing m => m (MQuoted a) Source #

(Newtype b a, Sep sep, Parsec b) => Parsec (List sep b a) Source # 
Instance details

Methods

parsec :: CabalParsing m => m (List sep b a) Source #

newtype ParsecParser a Source #

Constructors

PP 
Instances
Monad ParsecParser Source # 
Instance details
Functor ParsecParser Source # 
Instance details

Methods

fmap :: (a -> b) -> ParsecParser a -> ParsecParser b Source #

(<$) :: a -> ParsecParser b -> ParsecParser a Source #

MonadFail ParsecParser Source # 
Instance details
Applicative ParsecParser Source # 
Instance details
Alternative ParsecParser Source # 
Instance details
MonadPlus ParsecParser Source # 
Instance details
Parsing ParsecParser Source # 
Instance details
CharParsing ParsecParser Source # 
Instance details
CabalParsing ParsecParser Source # 
Instance details

lexemeParsec :: (CabalParsing m, Parsec a) => m a Source #

parsec could consume trailing spaces, this function will consume.

explicitEitherParsec :: ParsecParser a -> String -> Either String a Source #

Parse a String with given ParsecParser. Trailing whitespace is accepted.

CabalParsing & warnings

data PWarnType Source #

Type of parser warning. We do classify warnings.

Different application may decide not to show some, or have fatal behaviour on others

Constructors

PWTOther

Unclassified warning

PWTUTF

Invalid UTF encoding

PWTBoolCase

true or false, not True or False

PWTVersionTag

there are version with tags

PWTNewSyntax

New syntax used, but no cabal-version: >= 1.2 specified

PWTOldSyntax

Old syntax used, and cabal-version >= 1.2 specified

PWTDeprecatedField 
PWTInvalidSubsection 
PWTUnknownField 
PWTUnknownSection 
PWTTrailingFields 
PWTExtraMainIs

extra main-is field

PWTExtraTestModule

extra test-module field

PWTExtraBenchmarkModule

extra benchmark-module field

PWTLexNBSP 
PWTLexBOM 
PWTLexTab 
PWTQuirkyCabalFile

legacy cabal file that we know how to patch

PWTDoubleDash

Double dash token, most likely it's a mistake - it's not a comment

PWTMultipleSingularField

e.g. name or version should be specified only once.

PWTBuildTypeDefault

Workaround for derive-package having build-type: Default. See https://github.com/haskell/cabal/issues/5020.

PWTVersionLeadingZeros

See https://github.com/haskell-infra/hackage-trustees/issues/128

Instances
Bounded PWarnType Source # 
Instance details
Enum PWarnType Source # 
Instance details
Eq PWarnType Source # 
Instance details
Ord PWarnType Source # 
Instance details
Show PWarnType Source # 
Instance details
Generic PWarnType Source # 
Instance details

Associated Types

type Rep PWarnType :: * -> * Source #

NFData PWarnType Source # 
Instance details

Methods

rnf :: PWarnType -> () Source #

Binary PWarnType Source # 
Instance details
type Rep PWarnType Source # 
Instance details
type Rep PWarnType = D1 (MetaData "PWarnType" "Distribution.Parsec.Common" "Cabal-2.2.0.0" False) ((((C1 (MetaCons "PWTOther" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTUTF" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "PWTBoolCase" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTVersionTag" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTNewSyntax" PrefixI False) (U1 :: * -> *)))) :+: ((C1 (MetaCons "PWTOldSyntax" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTDeprecatedField" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTInvalidSubsection" PrefixI False) (U1 :: * -> *))) :+: (C1 (MetaCons "PWTUnknownField" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTUnknownSection" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTTrailingFields" PrefixI False) (U1 :: * -> *))))) :+: (((C1 (MetaCons "PWTExtraMainIs" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTExtraTestModule" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "PWTExtraBenchmarkModule" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTLexNBSP" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTLexBOM" PrefixI False) (U1 :: * -> *)))) :+: ((C1 (MetaCons "PWTLexTab" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTQuirkyCabalFile" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTDoubleDash" PrefixI False) (U1 :: * -> *))) :+: (C1 (MetaCons "PWTMultipleSingularField" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "PWTBuildTypeDefault" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "PWTVersionLeadingZeros" PrefixI False) (U1 :: * -> *))))))

Utilities

parsecQuoted :: CabalParsing m => m a -> m a Source #

Content isn't unquoted

parsecMaybeQuoted :: CabalParsing m => m a -> m a Source #

parsecMaybeQuoted p = parsecQuoted p | p.

parsecCommaList :: CabalParsing m => m a -> m [a] Source #

parsecLeadingCommaList :: CabalParsing m => m a -> m [a] Source #

Like parsecCommaList but accept leading or trailing comma.

p (comma p)*  -- p sepBy comma
(comma p)*    -- leading comma
(p comma)*    -- trailing comma

parsecStandard :: (CabalParsing m, Parsec ver) => (ver -> String -> a) -> m a Source #

Parse a benchmark/test-suite types.