| Safe Haskell | Safe | 
|---|---|
| Language | Haskell2010 | 
Text.PrettyPrint.Records
Synopsis
- class FQuery a
- class VQuery a
- class (Typeable a, FQuery a, Show a) => RFmt a
- format :: RFmt a => a -> Format a -> Box
- formatUntil :: RFmt a => Int -> a -> Format a -> Box
- fields :: FQuery a => a -> [String]
- values :: VQuery a => a -> [String]
- dfltFmt :: Format a
- simpleFmt :: (VQuery a, FQuery a) => (String -> String -> b) -> a -> [b]
- tableFmt :: TableFmt
- data Format a = Format {}
- data TableFmt = TableFmt {}
- formatTable :: RFmt a => [a] -> TableFmt -> Box
Documentation
class (Typeable a, FQuery a, Show a) => RFmt a Source #
Reduce Record to Box given a Format
  Example:
      data List a = List { label :: String, val :: a, tail :: List a }
          | Nil deriving (Generic, Show)
      instance FQuery (List a)
      instance (Show a, Typeable a) => RFmt (List a)
      test = List "head" 3 $ List "mid" 4 $ List "tail" 5 $ Nil
      ghci> printBox $ format test dfltFmt
      label: "head"
      val: 3
      tail: label: "mid"
            val: 4
            tail: label: "tail"
                  val: 5
                  tail: Nil
format :: RFmt a => a -> Format a -> Box Source #
Format Record a record fully expanding the data structure if it is recursive
formatUntil :: RFmt a => Int -> a -> Format a -> Box Source #
Format Record a with up to n levels of recursivity
simpleFmt :: (VQuery a, FQuery a) => (String -> String -> b) -> a -> [b] Source #
Given String representation of accessor and value return b
A Format is responsible for converting a Record into a formatted Box.
   Example:
       dfltFmt :: Format a
       dfltFmt = Format
           { arg = text
           , label = \a b -> text (a <> ":") + b
           , finally = vcat left }
formatTable :: RFmt a => [a] -> TableFmt -> Box Source #
Format a list of RFmt instances as a table (no recursive expansion).
   Example:
       data Employee = E
          { eId :: Int
          , name :: String
          , email :: String } deriving (Generic, Show)
       instance FQuery Employee
       instance RFmt Employee
       e1 = E 3 "John" "johnbelcherfoobar.xyz"
       e1 = E 3 "John" "johnbelcherfoobar.xyz"
       e2 = E 17 "Maria" "Mariafoobarnet.net"
       e3 = E 1 "Stanley" "stanleytheceofoobar.org"
       e4 = E 2 "Kayla" "klabarfoo.com"
       e5 = E 4 "Sammy" "sammersfoobarfoo.bar"
       ghci> printBox $ formatTable [e1, e2, e3, e4, e5] tableFmt
       eId name      email
       3   "John"    "johnbelcherfoobar.xyz"
       17  "Maria"   "Mariafoobarnet.net"
       1   "Stanley" "stanleytheceofoobar.org"
       2   "Kayla"   "klabarfoo.com"
       4   "Sammy"   "sammersfoobar@foo.bar"