Cabal-2.4.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.

Methods

parsec :: CabalParsing m => m a Source #

Instances
Parsec Bool # 
Instance details

Defined in Distribution.Parsec.Class

Methods

parsec :: CabalParsing m => m Bool Source #

Parsec Version # 
Instance details

Defined in Distribution.Types.Version

Parsec VersionRange # 
Instance details

Defined in Distribution.Types.VersionRange

Parsec RepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec RepoKind # 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec PkgconfigName # 
Instance details

Defined in Distribution.Types.PkgconfigName

Parsec ForeignLibType # 
Instance details

Defined in Distribution.Types.ForeignLibType

Parsec ForeignLibOption # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ExecutableScope # 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec ComponentId # 
Instance details

Defined in Distribution.Types.ComponentId

Parsec BuildType # 
Instance details

Defined in Distribution.Types.BuildType

Parsec AbiHash # 
Instance details

Defined in Distribution.Types.AbiHash

Parsec Platform # 
Instance details

Defined in Distribution.System

Parsec Arch # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Arch Source #

Parsec OS # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m OS Source #

Parsec LicenseRef # 
Instance details

Defined in Distribution.SPDX.LicenseReference

Parsec LicenseId #
>>> 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

Defined in Distribution.SPDX.LicenseId

Parsec LicenseExceptionId # 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Parsec SimpleLicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec LicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec License #
>>> 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

Defined in Distribution.SPDX.License

Parsec ModuleName # 
Instance details

Defined in Distribution.ModuleName

Parsec ModuleRenaming # 
Instance details

Defined in Distribution.Types.ModuleRenaming

Parsec IncludeRenaming # 
Instance details

Defined in Distribution.Types.IncludeRenaming

Parsec TestType # 
Instance details

Defined in Distribution.Types.TestType

Parsec PkgconfigDependency # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec BenchmarkType # 
Instance details

Defined in Distribution.Types.BenchmarkType

Parsec License # 
Instance details

Defined in Distribution.License

Parsec Extension # 
Instance details

Defined in Language.Haskell.Extension

Parsec Language # 
Instance details

Defined in Language.Haskell.Extension

Parsec CompilerFlavor # 
Instance details

Defined in Distribution.Compiler

Parsec FilePathNT # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec FreeText # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec TestedWith # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec SpecLicense # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec SpecVersion # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec Token' # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

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

Parsec Token # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

parsec :: CabalParsing m => m Token Source #

Parsec PackageName # 
Instance details

Defined in Distribution.Types.PackageName

Parsec UnqualComponentName # 
Instance details

Defined in Distribution.Types.UnqualComponentName

Parsec PackageIdentifier # 
Instance details

Defined in Distribution.Types.PackageId

Parsec DefUnitId # 
Instance details

Defined in Distribution.Types.UnitId

Parsec UnitId #

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

Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m UnitId Source #

Parsec Module # 
Instance details

Defined in Distribution.Types.Module

Methods

parsec :: CabalParsing m => m Module Source #

Parsec OpenModule #
>>> 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

Defined in Distribution.Backpack

Parsec OpenUnitId #
>>> 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

Defined in Distribution.Backpack

Parsec ModuleReexport # 
Instance details

Defined in Distribution.Types.ModuleReexport

Parsec Mixin # 
Instance details

Defined in Distribution.Types.Mixin

Methods

parsec :: CabalParsing m => m Mixin Source #

Parsec ExeDependency # 
Instance details

Defined in Distribution.Types.ExeDependency

Parsec Dependency # 
Instance details

Defined in Distribution.Types.Dependency

Parsec MungedPackageName # 
Instance details

Defined in Distribution.Types.MungedPackageName

Parsec AbiDependency # 
Instance details

Defined in Distribution.Types.AbiDependency

Parsec LegacyExeDependency # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Parsec LibVersionInfo # 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec FlagName # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Parsec ExposedModule # 
Instance details

Defined in Distribution.Types.ExposedModule

Parsec TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Parsec a => Parsec (Identity a) # 
Instance details

Defined in Distribution.Parsec.Class

Methods

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

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

Defined in Distribution.Parsec.Newtypes

Methods

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

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

Defined in Distribution.Parsec.Newtypes

Methods

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

newtype ParsecParser a Source #

Constructors

PP 
Instances
Monad ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

Functor ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

Methods

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

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

MonadFail ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

Applicative ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

Alternative ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

MonadPlus ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

Parsing ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

CharParsing ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

CabalParsing ParsecParser # 
Instance details

Defined in Distribution.Parsec.Class

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 # 
Instance details

Defined in Distribution.Parsec.Common

Enum PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Eq PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Ord PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Show PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Generic PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Associated Types

type Rep PWarnType :: Type -> Type Source #

Binary PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

NFData PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

Methods

rnf :: PWarnType -> () Source #

type Rep PWarnType # 
Instance details

Defined in Distribution.Parsec.Common

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

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.