| Cabal-1.6.0.3: A framework for packaging Haskell software | Source code | Contents | Index

Distribution.PackageDescription.Parse

Portability | portable
Maintainer | cabal-devel@haskell.org

Contents

Package descriptions
  Parsing
  Supplementary build information

Description
This defined parsers and partial pretty printers for the `.cabal` format. Some of the complexity in this module is due to the fact that we have to be backwards compatible with old `.cabal` files, so there's code to translate into the newer structure.
Synopsis

readPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription
writePackageDescription :: FilePath -> PackageDescription -> IO ()
parsePackageDescription :: String -> ParseResult GenericPackageDescription
showPackageDescription :: PackageDescription -> String

data ParseResult a

= ParseFailed PError
| ParseOk [PWarning] a

data FieldDescr a = FieldDescr {

fieldName :: String
fieldGet :: a -> Doc
fieldSet :: LineNo -> String -> a -> ParseResult a

}

type LineNo = Int
readHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo
parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo
writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()
showHookedBuildInfo :: HookedBuildInfo -> String

Package descriptions

readPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription | Source

Parse the given package file.

writePackageDescription :: FilePath -> PackageDescription -> IO () | Source

parsePackageDescription :: String -> 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.

showPackageDescription :: PackageDescription -> String | Source

Parsing

data ParseResult a | Source

Constructors

ParseFailed PError |
ParseOk [PWarning] a |

Instances

Monad ParseResult
Show a => Show (ParseResult a)

data FieldDescr a | Source

Field descriptor. The parameter `a` parameterizes over where the field's value is stored in.
Constructors

FieldDescr |

fieldName :: String |
fieldGet :: a -> Doc |
fieldSet :: LineNo -> String -> a -> ParseResult a | `fieldSet n str x` Parses the field value from the given input string `str` and stores the result in `x` if the parse was successful. Otherwise, reports an error on line number `n`.

type LineNo = Int | Source

Supplementary build information

readHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo | Source

parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo | Source

writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO () | Source

showHookedBuildInfo :: HookedBuildInfo -> String | Source

Produced by Haddock version 2.4.2