Cabal-3.4.0.0: A framework for packaging Haskell software
CopyrightIsaac Jones 2003-2005
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Distribution.PackageDescription.Parsec

Description

This defined parsers and partial pretty printers for the .cabal format.

Synopsis

Package descriptions

parseGenericPackageDescription :: ByteString -> ParseResult GenericPackageDescription Source #

Parses the given file into a GenericPackageDescription.

In Cabal 1.2 the syntax for package descriptions was changed to a format with sections and possibly indented property descriptions.

Parsing

data ParseResult a Source #

A monad with failure and accumulating errors and warnings.

Instances

Instances details
Monad ParseResult Source # 
Instance details

Defined in Distribution.Fields.ParseResult

Methods

(>>=) :: ParseResult a -> (a -> ParseResult b) -> ParseResult b #

(>>) :: ParseResult a -> ParseResult b -> ParseResult b #

return :: a -> ParseResult a #

Functor ParseResult Source # 
Instance details

Defined in Distribution.Fields.ParseResult

Methods

fmap :: (a -> b) -> ParseResult a -> ParseResult b #

(<$) :: a -> ParseResult b -> ParseResult a #

Applicative ParseResult Source # 
Instance details

Defined in Distribution.Fields.ParseResult

Methods

pure :: a -> ParseResult a #

(<*>) :: ParseResult (a -> b) -> ParseResult a -> ParseResult b #

liftA2 :: (a -> b -> c) -> ParseResult a -> ParseResult b -> ParseResult c #

(*>) :: ParseResult a -> ParseResult b -> ParseResult b #

(<*) :: ParseResult a -> ParseResult b -> ParseResult a #

runParseResult :: ParseResult a -> ([PWarning], Either (Maybe Version, NonEmpty PError) a) Source #

Destruct a ParseResult into the emitted warnings and either a successful value or list of errors and possibly recovered a spec-version declaration.

New-style spec-version

scanSpecVersion :: ByteString -> Maybe Version Source #

Quickly scan new-style spec-version

A new-style spec-version declaration begins the .cabal file and follow the following case-insensitive grammar (expressed in RFC5234 ABNF):

newstyle-spec-version-decl = "cabal-version" *WS ":" *WS newstyle-pec-version *WS

spec-version               = NUM "." NUM [ "." NUM ]

NUM    = DIGIT0 / DIGITP 1*DIGIT0
DIGIT0 = %x30-39
DIGITP = %x31-39
WS = %20

Supplementary build information