úÎ!:75      !"#$%&'()*+,-./01234Safe>+O tabularYConvenience 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"]tabular ÿ(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 tabular"Retrieve the contents of a header tabular  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 etabular°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 tabular Column headertabularbesidestabularbesides with a linetabularbesides with a double linetabularbelowtabularbelow with a linetabularbelow with a double line    Safe/!tabularHfor simplicity, we assume that each cell is rendered on a single line"tabular'We stop rendering on the shortest list!"tabularmax width for each column#tabularwidth specifications!"#$%!"#$%Safe1#&tabularHfor simplicity, we assume that each cell is rendered on a single line&&Safe4Ï*tabularAConvenience function to add a CSS string to your HTML document+tabularDYou need to incorporate some CSS into your file with the classes  thinbottom,  thinright,  thickbottom and  thickright. See *'()*+'()*+Safe6P-tabular=column header specifications including label (l,h,p{3cm},etc),-./012,-./012Safe73tabulardelim34345       !"#$%&'()%%*+,-%./01+*%&2&tabular-0.2.2.8-CxCAZY3Z4n73GapwIfIYgw Text.TabularText.Tabular.AsciiArtText.Tabular.CsvText.Tabular.HtmlText.Tabular.LatexText.Tabular.SimpleText SemiTableTableHeaderGroup PropertiesNoLine SingleLine DoubleLineheaderContents zipHeader flattenHeadersquishemptycolcolHrowrowHbesidebelow^..^^|^^||^+.++----++====+$fFunctorHeader$fShowProperties $fShowHeader $fShowTable$fShowSemiTablerender renderColumns renderHLine renderHLine'padLeftvAttrhAttrcss defaultCss renderUsinghline addTableNllabel