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

Copyright | (c) Iavor S. Diatchki 2009
License | MIT
Maintainer | iavor.diatchki@gmail.com
Stability | provisional
Portability | Haskell 98
Safe Haskell | Safe
Language | Haskell98

Text.Show.Pretty

Contents

- Generic representation of values
- Values using the `Show` class
- Values using the `PrettyVal` class
- Rendering values to Html
- Get location of data files
- Deprecated

Description

Functions for human-readable derived `Show` instances.

Synopsis

- data Value
  - = Con Name [Value]
  - | InfixCons Value [(Name, Value)]
  - | Rec Name [(Name, Value)]
  - | Tuple [Value]
  - | List [Value]
  - | Neg Value
  - | Ratio Value Value
  - | Integer String
  - | Float String
  - | Char String
  - | String String
- type Name = String
- valToStr :: Value -> String
- valToDoc :: Value -> Doc
- valToHtmlPage :: HtmlOpts -> Value -> String
- parseValue :: String -> Maybe Value
- reify :: Show a => a -> Maybe Value
- ppDoc :: Show a => a -> Doc
- ppShow :: Show a => a -> String
- dumpDoc :: PrettyVal a => a -> Doc
- dumpStr :: PrettyVal a => a -> String
- class PrettyVal a where
  - prettyVal :: a -> Value
- valToHtml :: HtmlOpts -> Value -> Html
- data HtmlOpts = HtmlOpts {
  - dataDir :: FilePath
  - wideListWidth :: Int
  }
- defaultHtmlOpts :: HtmlOpts
- htmlPage :: HtmlOpts -> Html -> String
- newtype Html = Html {
  - exportHtml :: String
  }
- getDataDir :: IO FilePath
- ppValue :: Value -> Doc

# 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 |
Show Value Source |

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

parseValue :: String -> Maybe Value Source

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.

# 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`.

Minimal complete definition

Nothing

Methods

prettyVal :: 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 a => PrettyVal [a] Source |
(PrettyVal a, Integral a) => PrettyVal (Ratio a) Source |
PrettyVal a => PrettyVal (Maybe a) Source |
(PrettyVal a, PrettyVal b) => PrettyVal (Either a b) Source |
(PrettyVal a1, PrettyVal a2) => PrettyVal (a1, a2) Source |
(PrettyVal a1, PrettyVal a2, PrettyVal a3) => PrettyVal (a1, a2, a3) Source |
(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4) => PrettyVal (a1, a2, a3, a4) Source |
(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5) => PrettyVal (a1, a2, a3, a4, a5) Source |
(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5, PrettyVal a6) => PrettyVal (a1, a2, a3, a4, a5, a6) Source |
(PrettyVal a1, PrettyVal a2, PrettyVal a3, PrettyVal a4, PrettyVal a5, PrettyVal a6, PrettyVal a7) => PrettyVal (a1, a2, a3, a4, a5, a6, a7) Source |

# 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.

Instances

Show HtmlOpts Source |

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

exportHtml :: String

# Get location of data files

getDataDir :: IO FilePath Source

# Deprecated

ppValue :: Value -> Doc Source

Deprecated: Please use `valToDoc` instead.