HORIZON HASKELLDocslts/ghc-10.0.x8fef28d2026-11-02Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8fef28d · 2026-11-02

Moduletabular-0.2.2.8Haskell2010

Text.Tabular

Contents
  1. Helper functions for rendering
  2. Combinators
Synopsis
  • Packagetabular-0.2.2.8
  • Exports21
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceTabular.hs
datadata Table rh ch a
example = Table
  (Group SingleLine
     [ Group NoLine [Header "A 1", Header "A 2"]
     , Group NoLine [Header "B 1", Header "B 2", Header "B 3"]
     ])
  (Group DoubleLine
     [ Group SingleLine [Header "memtest 1", Header "memtest 2"]
     , Group SingleLine [Header "time test 1", Header "time test 2"]
     ])
  [ ["hog", "terrible", "slow", "slower"]
  , ["pig", "not bad",  "fast", "slowest"]
  , ["good", "awful" ,  "intolerable", "bearable"]
  , ["better", "no chance", "crawling", "amazing"]
  , ["meh",  "well...", "worst ever", "ok"]
  ]
-- Text.Tabular.AsciiArt.render id id id example
--
--     || memtest 1 | memtest 2 ||  time test  | time test 2
-- ====++===========+===========++=============+============
-- A 1 ||       hog |  terrible ||        slow |      slower
-- A 2 ||       pig |   not bad ||        fast |     slowest
-- ----++-----------+-----------++-------------+------------
-- B 1 ||      good |     awful || intolerable |    bearable
-- B 2 ||    better | no chance ||    crawling |     amazing
-- B 3 ||       meh |   well... ||  worst ever |          ok

Constructors

Instances1Show

Helper functions for rendering

valuezipHeader :: h -> [h] -> Header a -> Header (h, a)

zipHeader e ss h returns the same structure as h except with all the text replaced by the contents of ss.

If ss has too many cells, the excess is ignored. If it has too few cells, the missing ones (at the end) and replaced with the empty contents e

valuesquish :: (Properties -> b -> b) -> (h -> b) -> Header h -> [b]

The idea is to deal with the fact that Properties (e.g. borders) are not standalone cells but attributes of a cell. A border is just a CSS decoration of a TD element.

squish decorator f h applies f to every item in the list represented by h (see flattenHeader), additionally applying decorator if the item is followed by some kind of boundary

So o o o | o o o | o o gets converted into O O X O O X O O

Combinators

datadata SemiTable h a

Convenience type for just one row (or column). To be used with combinators as follows:

example2 =
  empty ^..^ col "memtest 1" [] ^|^ col "memtest 2"   []
        ^||^ col "time test "[] ^|^ col "time test 2" []
  +.+ row "A 1" ["hog", "terrible", "slow", "slower"]
  +.+ row "A 2" ["pig", "not bad", "fast", "slowest"]
  +----+
      row "B 1" ["good", "awful", "intolerable", "bearable"]
  +.+ row "B 2" ["better", "no chance", "crawling", "amazing"]
  +.+ row "B 3" ["meh",  "well...", "worst ever", "ok"]

Constructors

Instances1Show