pretty-show-1.7: Tools for working with derived `Show` instances and generic inspection of values.

Copyright(c) Iavor S. Diatchki 2009
LicenseMIT
Maintaineriavor.diatchki@gmail.com
Stabilityprovisional
PortabilityHaskell 98
Safe HaskellSafe
LanguageHaskell98

Text.Show.Pretty

Contents

Description

Functions for human-readable derived Show instances.

Synopsis

Generic representation of values

data Value Source #

Generic Haskell values. NaN and Infinity are represented as constructors. The String in the literals is the text for the literals "as is".

A chain of infix constructors means that they appeared in the input string without parentheses, i.e

1 :+: 2 :*: 3 is represented with InfixCons 1 [(":+:",2),(":*:",3)], whereas

1 :+: (2 :*: 3) is represented with InfixCons 1 [(":+:",InfixCons 2 [(":*:",3)])].

Constructors

Con Name [Value]

Data constructor

InfixCons Value [(Name, Value)]

Infix data constructor chain

Rec Name [(Name, Value)]

Record value

Tuple [Value]

Tuple

List [Value]

List

Neg Value

Negated value

Ratio Value Value

Rational

Integer String

Non-negative integer

Float String

Non-negative floating num.

Char String

Character

String String

String

Instances

Eq Value Source # 

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

Show Value Source # 

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

type Name = String Source #

A name.

valToStr :: Value -> String Source #

Pretty print a generic value. Our intention is that the result is equivalent to the Show instance for the original value, except possibly easier to understand by a human.

valToDoc :: Value -> Doc Source #

Pretty print a generic value. Our intention is that the result is equivalent to the Show instance for the original value, except possibly easier to understand by a human.

valToHtmlPage :: HtmlOpts -> Value -> String Source #

Make an Html page representing the given value.

Values using the Show class

reify :: Show a => a -> Maybe Value Source #

ppDoc :: Show a => a -> Doc Source #

Try to show a value, prettily. If we do not understand the value, then we just use its standard Show instance.

ppShow :: Show a => a -> String Source #

Convert a generic value into a pretty String, if possible.

pPrint :: Show a => a -> IO () Source #

Pretty print a generic value to stdout. This is particularly useful in the GHCi interactive environment.

Working with listlike ("foldable") collections

ppDocList :: (Foldable f, Show a) => f a -> Doc Source #

Pretty print something that may be converted to a list as a list. Each entry is on a separate line, which means that we don't do clever pretty printing, and so this works well for large strucutures.

ppShowList :: (Foldable f, Show a) => f a -> String Source #

Pretty print something that may be converted to a list as a list. Each entry is on a separate line, which means that we don't do clever pretty printing, and so this works well for large strucutures.

pPrintList :: (Foldable f, Show a) => f a -> IO () Source #

Pretty print something that may be converted to a list as a list. Each entry is on a separate line, which means that we don't do clever pretty printing, and so this works well for large strucutures.

Values using the PrettyVal class

dumpDoc :: PrettyVal a => a -> Doc Source #

Render a value in the PrettyVal class to a Doc. The benefit of this function is that PrettyVal instances may be derived automatically using generics.

dumpStr :: PrettyVal a => a -> String Source #

Render a value in the PrettyVal class to a String. The benefit of this function is that PrettyVal instances may be derived automatically using generics.

class PrettyVal a where Source #

A class for types that may be reified into a value. Instances of this class may be derived automatically, for datatypes that support Generics.

Methods

prettyVal :: a -> Value Source #

prettyVal :: (GDump (Rep a), Generic a) => a -> Value Source #

Instances

PrettyVal Bool Source # 
PrettyVal Char Source # 
PrettyVal Double Source # 
PrettyVal Float Source # 
PrettyVal Int Source # 
PrettyVal Int8 Source # 
PrettyVal Int16 Source # 
PrettyVal Int32 Source # 
PrettyVal Int64 Source # 
PrettyVal Integer Source # 
PrettyVal Ordering Source # 
PrettyVal Word8 Source # 
PrettyVal Word16 Source # 
PrettyVal Word32 Source # 
PrettyVal Word64 Source # 
PrettyVal Text Source # 
PrettyVal a => PrettyVal [a] Source # 

Methods

prettyVal :: [a] -> Value Source #

listValue :: [[a]] -> Value

PrettyVal a => PrettyVal (Maybe a) Source # 

Methods

prettyVal :: Maybe a -> Value Source #

listValue :: [Maybe a] -> Value

(PrettyVal a, Integral a) => PrettyVal (Ratio a) Source # 

Methods

prettyVal :: Ratio a -> Value Source #

listValue :: [Ratio a] -> Value

(PrettyVal a, PrettyVal b) => PrettyVal (Either a b) Source # 

Methods

prettyVal :: Either a b -> Value Source #

listValue :: [Either a b] -> Value

(PrettyVal a1, PrettyVal a2) => PrettyVal (a1, a2) Source # 

Methods

prettyVal :: (a1, a2) -> Value Source #

listValue :: [(a1, a2)] -> Value

(PrettyVal a1, PrettyVal a2, PrettyVal a3) => PrettyVal (a1, a2, a3) Source # 

Methods

prettyVal :: (a1, a2, a3) -> Value Source #

listValue :: [(a1, a2, a3)] -> Value

(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4) => PrettyVal (a1, a2, a3, a4) Source # 

Methods

prettyVal :: (a1, a2, a3, a4) -> Value Source #

listValue :: [(a1, a2, a3, a4)] -> Value

(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5) => PrettyVal (a1, a2, a3, a4, a5) Source # 

Methods

prettyVal :: (a1, a2, a3, a4, a5) -> Value Source #

listValue :: [(a1, a2, a3, a4, a5)] -> Value

(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5, PrettyVal a6) => PrettyVal (a1, a2, a3, a4, a5, a6) Source # 

Methods

prettyVal :: (a1, a2, a3, a4, a5, a6) -> Value Source #

listValue :: [(a1, a2, a3, a4, a5, a6)] -> Value

(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5, PrettyVal a6, PrettyVal a7) => PrettyVal (a1, a2, a3, a4, a5, a6, a7) Source # 

Methods

prettyVal :: (a1, a2, a3, a4, a5, a6, a7) -> Value Source #

listValue :: [(a1, a2, a3, a4, a5, a6, a7)] -> Value

Rendering values to Html

valToHtml :: HtmlOpts -> Value -> Html Source #

Convert a value into an Html fragment.

data HtmlOpts Source #

Options on how to generate Html (more to come).

Constructors

HtmlOpts 

Fields

  • dataDir :: FilePath

    Path for extra files. If empty, we look in directory style, relative to document.

  • wideListWidth :: Int

    Max. number of columns in wide lists.

defaultHtmlOpts :: HtmlOpts Source #

Default options.

htmlPage :: HtmlOpts -> Html -> String Source #

Wrap an Html fragment to make an Html page.

newtype Html Source #

Constructors

Html 

Fields

Get location of data files

Deprecated

ppValue :: Value -> Doc Source #

Deprecated: Please use valToDoc instead.