Cabal-2.4.0.1: A framework for packaging Haskell software
Safe HaskellNone
LanguageHaskell2010

Distribution.Parsec.Class

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

Instances details
Parsec Bool Source # 
Instance details

Defined in Distribution.Parsec.Class

Methods

parsec :: CabalParsing m => m Bool Source #

Parsec Version Source # 
Instance details

Defined in Distribution.Types.Version

Parsec VersionRange Source # 
Instance details

Defined in Distribution.Types.VersionRange

Parsec RepoType Source # 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec RepoKind Source # 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec PkgconfigName Source # 
Instance details

Defined in Distribution.Types.PkgconfigName

Parsec ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Parsec ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec ComponentId Source # 
Instance details

Defined in Distribution.Types.ComponentId

Parsec BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Parsec AbiHash Source # 
Instance details

Defined in Distribution.Types.AbiHash

Parsec Platform Source # 
Instance details

Defined in Distribution.System

Parsec Arch Source # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Arch Source #

Parsec OS Source # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m OS Source #

Parsec LicenseRef Source # 
Instance details

Defined in Distribution.SPDX.LicenseReference

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

Defined in Distribution.SPDX.LicenseId

Parsec LicenseExceptionId Source # 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Parsec SimpleLicenseExpression Source # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec LicenseExpression Source # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

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

Defined in Distribution.SPDX.License

Parsec ModuleName Source # 
Instance details

Defined in Distribution.ModuleName

Parsec ModuleRenaming Source # 
Instance details

Defined in Distribution.Types.ModuleRenaming

Parsec IncludeRenaming Source # 
Instance details

Defined in Distribution.Types.IncludeRenaming

Parsec TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Parsec PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Parsec License Source # 
Instance details

Defined in Distribution.License

Parsec Extension Source # 
Instance details

Defined in Language.Haskell.Extension

Parsec Language Source # 
Instance details

Defined in Language.Haskell.Extension

Parsec CompilerFlavor Source # 
Instance details

Defined in Distribution.Compiler

Parsec FilePathNT Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec FreeText Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec TestedWith Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec SpecLicense Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec SpecVersion Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Parsec Token' Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

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

Parsec Token Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

parsec :: CabalParsing m => m Token Source #

Parsec PackageName Source # 
Instance details

Defined in Distribution.Types.PackageName

Parsec UnqualComponentName Source # 
Instance details

Defined in Distribution.Types.UnqualComponentName

Parsec PackageIdentifier Source # 
Instance details

Defined in Distribution.Types.PackageId

Parsec DefUnitId Source # 
Instance details

Defined in Distribution.Types.UnitId

Parsec UnitId Source #

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

Defined in Distribution.Types.Module

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

Defined in Distribution.Backpack

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

Defined in Distribution.Backpack

Parsec ModuleReexport Source # 
Instance details

Defined in Distribution.Types.ModuleReexport

Parsec Mixin Source # 
Instance details

Defined in Distribution.Types.Mixin

Methods

parsec :: CabalParsing m => m Mixin Source #

Parsec ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Parsec Dependency Source # 
Instance details

Defined in Distribution.Types.Dependency

Parsec MungedPackageName Source # 
Instance details

Defined in Distribution.Types.MungedPackageName

Parsec AbiDependency Source # 
Instance details

Defined in Distribution.Types.AbiDependency

Parsec LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Parsec LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec FlagName Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Parsec ExposedModule Source # 
Instance details

Defined in Distribution.Types.ExposedModule

Parsec TestShowDetails Source # 
Instance details

Defined in Distribution.Simple.Setup

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

Defined in Distribution.Parsec.Class

Methods

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

Parsec a => Parsec (MQuoted a) Source # 
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) Source # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

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

newtype ParsecParser a Source #

Constructors

PP 

Instances

Instances details
Monad ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

Functor ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

Methods

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

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

MonadFail ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

Applicative ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

Alternative ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

MonadPlus ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

Parsing ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

CharParsing ParsecParser Source # 
Instance details

Defined in Distribution.Parsec.Class

CabalParsing ParsecParser Source # 
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

class (CharParsing m, MonadPlus m) => CabalParsing m where Source #

Parsing class which

  • can report Cabal parser warnings.
  • knows cabal-version we work with

Minimal complete definition

parsecWarning, askCabalSpecVersion

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

Instances details
Bounded PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Enum PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Eq PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Ord PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Show PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Generic PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Associated Types

type Rep PWarnType :: Type -> Type Source #

Binary PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

NFData PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

Methods

rnf :: PWarnType -> () Source #

type Rep PWarnType Source # 
Instance details

Defined in Distribution.Parsec.Common

type Rep PWarnType = D1 (MetaData "PWarnType" "Distribution.Parsec.Common" "Cabal-2.4.0.1" 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.