| Copyright | Isaac Jones 2003-2005 |
|---|---|
| License | BSD3 |
| Maintainer | cabal-devel@haskell.org |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Distribution.PackageDescription.Parsec
Description
This defined parsers and partial pretty printers for the .cabal format.
Synopsis
- parseGenericPackageDescription :: ByteString -> ParseResult src GenericPackageDescription
- parseGenericPackageDescriptionMaybe :: ByteString -> Maybe GenericPackageDescription
- data ParseResult src a
- runParseResult :: ParseResult src a -> ([PWarningWithSource src], Either (Maybe Version, NonEmpty (PErrorWithSource src)) a)
- data PSource src
- = PKnownSource src
- | PUnknownSource
- withSource :: src -> ParseResult src a -> ParseResult src a
- scanSpecVersion :: ByteString -> Maybe Version
- parseHookedBuildInfo :: ByteString -> ParseResult src HookedBuildInfo
Package descriptions
parseGenericPackageDescription :: ByteString -> ParseResult src 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.
parseGenericPackageDescriptionMaybe :: ByteString -> Maybe GenericPackageDescription Source #
Maybe variant of parseGenericPackageDescription
Parsing
data ParseResult src a Source #
A monad with failure and accumulating errors and warnings.
Instances
| Applicative (ParseResult src) Source # | |
Defined in Distribution.Fields.ParseResult Methods pure :: a -> ParseResult src a # (<*>) :: ParseResult src (a -> b) -> ParseResult src a -> ParseResult src b # liftA2 :: (a -> b -> c) -> ParseResult src a -> ParseResult src b -> ParseResult src c # (*>) :: ParseResult src a -> ParseResult src b -> ParseResult src b # (<*) :: ParseResult src a -> ParseResult src b -> ParseResult src a # | |
| Functor (ParseResult src) Source # | |
Defined in Distribution.Fields.ParseResult Methods fmap :: (a -> b) -> ParseResult src a -> ParseResult src b # (<$) :: a -> ParseResult src b -> ParseResult src a # | |
| Monad (ParseResult src) Source # | |
Defined in Distribution.Fields.ParseResult Methods (>>=) :: ParseResult src a -> (a -> ParseResult src b) -> ParseResult src b # (>>) :: ParseResult src a -> ParseResult src b -> ParseResult src b # return :: a -> ParseResult src a # | |
runParseResult :: ParseResult src a -> ([PWarningWithSource src], Either (Maybe Version, NonEmpty (PErrorWithSource src)) 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.
The source of a parse error
Constructors
| PKnownSource src | |
| PUnknownSource |
Instances
withSource :: src -> ParseResult src a -> ParseResult src a Source #
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-spec-version *WS spec-version = NUM "." NUM [ "." NUM ] NUM = DIGIT0 / DIGITP 1*DIGIT0 DIGIT0 = %x30-39 DIGITP = %x31-39 WS = %20