úÎ976²1      !"#$%&'()*+,-./0 Safe-Inferred3 YConvenience 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"] ÿ(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 "Retrieve the contents of a header   e ss h" returns the same structure as h9 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°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  ), additionally applying  decorator4 if the item is followed by some kind of boundarySo  o o o | o o o | o o  gets converted into  O O X O O X O O  Column headerbesidesbesides with a linebesides with a double linebelowbelow with a linebelow with a double line        Safe-InferredHfor simplicity, we assume that each cell is rendered on a single line'We stop rendering on the shortest list!max width for each columnwidth specifications ! ! ! ! Safe-Inferred"delim#"#"#"# Safe-Inferred$Hfor simplicity, we assume that each cell is rendered on a single line$$$$ Safe-Inferred(AConvenience function to add a CSS string to your HTML document)DYou need to incorporate some CSS into your file with the classes  thinbottom,  thinright,  thickbottom and  thickright. See (%&'()%&'()%&'()%&'() Safe-Inferred*+=column header specifications including label (l,h,p{3cm},etc),-./0*+,-./0*+,-./0*+,-./01       !"#$%!"!!&'()!*+,-'&.tabular-0.2.2.7 Text.TabularText.Tabular.AsciiArtText.Tabular.SimpleTextText.Tabular.CsvText.Tabular.HtmlText.Tabular.Latex SemiTableTableHeaderGroup Properties DoubleLine SingleLineNoLineheaderContents zipHeader flattenHeadersquishemptycolcolHrowrowHbesidebelow^..^^|^^||^+.++----++====+$fFunctorHeaderrender renderColumns renderHLine renderHLine'padLeftvAttrhAttrcss defaultCss renderUsinghline addTableNllabel