Cabal-2.1.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 BuildType Source # 
Instance details
Parsec ExecutableScope Source # 
Instance details
Parsec ForeignLibOption Source # 
Instance details
Parsec ForeignLibType Source # 
Instance details
Parsec Version Source # 
Instance details
Parsec VersionRange Source # 
Instance details
Parsec PkgconfigName Source # 
Instance details
Parsec ComponentId Source # 
Instance details
Parsec AbiHash Source # 
Instance details
Parsec ModuleName Source # 
Instance details
Parsec ModuleRenaming Source # 
Instance details
Parsec IncludeRenaming Source # 
Instance details
Parsec RepoType Source # 
Instance details
Parsec RepoKind 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 # 
Instance details
Parsec LicenseExceptionId Source # 
Instance details
Parsec SimpleLicenseExpression Source # 
Instance details
Parsec LicenseExpression Source # 
Instance details
Parsec License 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.

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.

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.