Cabal-3.0.0.0: A framework for packaging Haskell software

Safe HaskellNone
LanguageHaskell2010

Distribution.Pretty

Contents

Synopsis

Documentation

class Pretty a where #

Minimal complete definition

pretty

Methods

pretty :: a -> Doc #

prettyVersioned :: CabalSpecVersion -> a -> Doc #

Instances
Pretty Bool # 
Instance details

Defined in Distribution.Pretty

Pretty Int # 
Instance details

Defined in Distribution.Pretty

Pretty Version # 
Instance details

Defined in Distribution.Types.Version

Pretty VersionRange # 
Instance details

Defined in Distribution.Types.VersionRange.Internal

Pretty RepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoKind # 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty PkgconfigVersion # 
Instance details

Defined in Distribution.Types.PkgconfigVersion

Pretty PkgconfigVersionRange # 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Pretty PkgconfigName # 
Instance details

Defined in Distribution.Types.PkgconfigName

Pretty PkgconfigDependency # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Pretty PackageName # 
Instance details

Defined in Distribution.Types.PackageName

Pretty UnqualComponentName # 
Instance details

Defined in Distribution.Types.UnqualComponentName

Pretty PackageVersionConstraint # 
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Pretty LibraryVisibility # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Pretty MungedPackageName #

Computes the package name for a library. If this is the public library, it will just be the original package name; otherwise, it will be a munged package name recording the original package name as well as the name of the internal library.

A lot of tooling in the Haskell ecosystem assumes that if something is installed to the package database with the package name foo, then it actually is an entry for the (only public) library in package foo. With internal packages, this is not necessarily true: a public library as well as arbitrarily many internal libraries may come from the same package. To prevent tools from getting confused in this case, the package name of these internal libraries is munged so that they do not conflict the public library proper. A particular case where this matters is ghc-pkg: if we don't munge the package name, the inplace registration will OVERRIDE a different internal library.

We munge into a reserved namespace, "z-", and encode both the component name and the package name of an internal library using the following format:

compat-pkg-name ::= "z-" package-name "-z-" library-name

where package-name and library-name have "-" ( "z" + ) "-" segments encoded by adding an extra "z".

When we have the public library, the compat-pkg-name is just the package-name, no surprises there!

>>> prettyShow $ MungedPackageName "servant" LMainLibName
"servant"
>>> prettyShow $ MungedPackageName "servant" (LSubLibName "lackey")
"z-servant-z-lackey"
Instance details

Defined in Distribution.Types.MungedPackageName

Pretty ForeignLibType # 
Instance details

Defined in Distribution.Types.ForeignLibType

Pretty ForeignLibOption # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Pretty ExecutableScope # 
Instance details

Defined in Distribution.Types.ExecutableScope

Pretty ComponentName # 
Instance details

Defined in Distribution.Types.ComponentName

Pretty ComponentId # 
Instance details

Defined in Distribution.Types.ComponentId

Pretty BuildType # 
Instance details

Defined in Distribution.Types.BuildType

Pretty AbiHash # 
Instance details

Defined in Distribution.Types.AbiHash

Pretty Platform # 
Instance details

Defined in Distribution.System

Pretty Arch # 
Instance details

Defined in Distribution.System

Pretty OS # 
Instance details

Defined in Distribution.System

Pretty LicenseRef # 
Instance details

Defined in Distribution.SPDX.LicenseReference

Pretty LicenseId # 
Instance details

Defined in Distribution.SPDX.LicenseId

Pretty LicenseExceptionId # 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Pretty SimpleLicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty LicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty License # 
Instance details

Defined in Distribution.SPDX.License

Pretty ModuleName # 
Instance details

Defined in Distribution.ModuleName

Pretty ModuleRenaming # 
Instance details

Defined in Distribution.Types.ModuleRenaming

Pretty IncludeRenaming # 
Instance details

Defined in Distribution.Types.IncludeRenaming

Pretty Mixin # 
Instance details

Defined in Distribution.Types.Mixin

Pretty ModuleReexport # 
Instance details

Defined in Distribution.Types.ModuleReexport

Pretty TestType # 
Instance details

Defined in Distribution.Types.TestType

Pretty PackageIdentifier # 
Instance details

Defined in Distribution.Types.PackageId

Pretty DefUnitId # 
Instance details

Defined in Distribution.Types.UnitId

Pretty UnitId #

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Defined in Distribution.Types.UnitId

Pretty Module # 
Instance details

Defined in Distribution.Types.Module

Pretty OpenModule # 
Instance details

Defined in Distribution.Backpack

Pretty OpenUnitId # 
Instance details

Defined in Distribution.Backpack

Pretty ExposedModule # 
Instance details

Defined in Distribution.Types.ExposedModule

Pretty MungedPackageId #
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" LMainLibName) (mkVersion [1,2,3])
"servant-1.2.3"
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" (LSubLibName "lackey")) (mkVersion [0,1,2])
"z-servant-z-lackey-0.1.2"
Instance details

Defined in Distribution.Types.MungedPackageId

Pretty LegacyExeDependency # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Pretty ExeDependency # 
Instance details

Defined in Distribution.Types.ExeDependency

Pretty Dependency # 
Instance details

Defined in Distribution.Types.Dependency

Pretty BenchmarkType # 
Instance details

Defined in Distribution.Types.BenchmarkType

Pretty AbiDependency # 
Instance details

Defined in Distribution.Types.AbiDependency

Pretty License # 
Instance details

Defined in Distribution.License

Pretty KnownExtension # 
Instance details

Defined in Language.Haskell.Extension

Pretty Extension # 
Instance details

Defined in Language.Haskell.Extension

Pretty Language # 
Instance details

Defined in Language.Haskell.Extension

Pretty AbiTag # 
Instance details

Defined in Distribution.Compiler

Pretty CompilerId # 
Instance details

Defined in Distribution.Compiler

Pretty CompilerFlavor # 
Instance details

Defined in Distribution.Compiler

Pretty LibVersionInfo # 
Instance details

Defined in Distribution.Types.ForeignLib

Pretty FlagName # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Pretty FilePathNT # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty TestedWith # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty SpecLicense # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty SpecVersion # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty Token' # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty Token # 
Instance details

Defined in Distribution.Parsec.Newtypes

Pretty TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Pretty HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Pretty a => Pretty (Identity a) # 
Instance details

Defined in Distribution.Pretty

Pretty a => Pretty (MQuoted a) # 
Instance details

Defined in Distribution.Parsec.Newtypes

(Newtype a b, Sep sep, Pretty b) => Pretty (List sep b a) # 
Instance details

Defined in Distribution.Parsec.Newtypes

Methods

pretty :: List sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> List sep b a -> Doc #

prettyShow :: Pretty a => a -> String #

defaultStyle :: Style #

The default rendering style used in Cabal for console output. It has a fixed page width and adds line breaks automatically.

flatStyle :: Style #

A style for rendering all on one line.

Utilities

showFreeText :: String -> Doc #

Pretty-print free-format text, ensuring that it is vertically aligned, and with blank lines replaced by dots for correct re-parsing.

showFreeTextV3 :: String -> Doc #

Pretty-print free-format text. Since cabal-version: 3.0 we don't replace blank lines with dots.

Since: 3.0.0.0

Deprecated

type Separator = [Doc] -> Doc #