úÎpüiňy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxSafe &Specifies how the place looks where a yO has been cut. Note that the cut mark may be cut itself, to fit into a column.#Display custom characters on a cut. Fill on the left until the y has the desired length. Fill on the right until the y has the desired length. %Fill on both sides equally until the y has the desired length. GFits to the given length by either trimming or filling it to the right.GFits to the given length by either trimming or filling it to the right.ˆFits to the given length by either trimming or filling it on both sides, but when only 1 character should be trimmed it will trim left. Applies a  to the left of a y, while preserving the length. Applies a  to the right of a y, while preserving the length.z{| }~  z{| }~SafeV`Justifies texts and presents the resulting lines in a grid structure (each text in one column).˛Justifies lists of words and presents the resulting lines in a grid structure (each list of words in one column). This is useful if you don't want to split just at whitespaces.xMerges multiple columns together and merges them to a valid grid without holes. The following example clarifies this:ZcolumnsAsGrid TopVPos [justifyText 10 "This text will not fit on one line.", ["42", "23"]]H[["This text","42"],["will not","23"],["fit on one",""],["line.",""]]%Fill all sublists to the same length.Uses 4 to split the text into words and justifies it with .4justifyText 10 "This text will not fit on one line."0["This text","will not","fit on one","line."]˘Fits as many words on a line, depending on the given width. Every line, but the last one, gets equally filled with spaces between the words, as far as possible.€JMap inits with the first function and the last one with the last function.şSplits a given number into summands of 2 different values, where the first one is exactly one bigger than the second one. Splitting 40 spaces into 9 almost equal parts would result in:dimorphicSummands 40 9[5,5,5,5,4,4,4,4,4]€   €SafeSSpecifies the different letters to construct the non-content structure of a table.6My usual ASCII table style.7:Uses special unicode characters to draw clean thin boxes. 8Same as 7 but uses bold headers.9Same as 7 but uses round edges.:Uses bold lines.;KUses bold lines with exception of group seperators, which are striped slim. !"#$%&'()*+,-./0123456789:; !"#$%&'()*+,-./0123456789:; !"#$%&'()*+,-./0123456789:; !"#$%&'()*+,-./0123456789:;SafeV)<aSpecifies how a header is layout, by omitting the cut mark it will use the one specified in the P% like the other cells in that column.>>Groups rows together, which are not seperated from each other.?/Specifies the length before and after a letter.A*Specifies how a column should be modified.E#Specifies an occurence of a letter.F<Determines whether a column will align at a specific letter.GkDetermines how a column will be positioned. Note that on an odd number of space, centering is left-biased.K%Determines how long a column will be.P"Determines the layout of a column.VDon't align text.YAlign all text at the dot.[)Use the same cut mark for left and right.\,Default cut mark used when cutting off text.]Don't use a cut mark.^BA single unicode character showing three dots is used as cut mark._KThe default layout will allow maximum expand and is positioned on the left.`JNumbers are positioned on the right and aligned on the floating point dot.a=Fixes the column length and positions according to the given G.b2Fixes the column length and positions on the left.cCAssume the given length is greater or equal than the length of the y passed. Pads the given y/ accordingly, using the position specification.pad LeftPos 10 "foo" "foo "d#If the given text is too long, the yĄ will be shortened according to the position specification, also adds some dots to indicate that the column has been trimmed in length, otherwise behaves like c.:trimOrPad LeftPos (singleCutMark "..") 10 "A longer text." "A longer.."eÔAlign a column by first finding the position to pad with and then padding the missing lengths to the maximum value. If no such position is found, it will align it such that it gets aligned before that position.This function assumes: ai <> deriveAlignInfo s = aifzAligns a column using a fixed width, fitting it to the width by either filling or cutting while respecting the alignment.g+Get the exact width after the modification.hRemove alignment from a A[. This is used to change alignment of headers, while using the combined width information.iWEnsures that the modification provides a minimum width, but only if it is not limited.jEnsures that the given y$ will fit into the modified columns.k,Generates a function which modifies a given y according to G,  and A.l The column width when using the ?.m Derive the A: by using layout specifications and looking at the cells.n Generate the ? of a cell using the E.o&Modifies cells according to the given P.p Behaves like  layoutCells/ but produces lines by joining with whitespace.q Behaves like  layoutCells but produces a y( by joining with the newline character.rqApplies functions alternating to given lines. This makes it easy to color lines to improve readability in a row.sŤApplies functions alternating to cells for every line, every other line gets shifted by one. This is useful for distinguishability of single cells in a grid arrangement.t*Construct a row group from a list of rows.uA centered header layout.v A left-positioned header layout.wŁLayouts a good-looking table with a optional header. Note that specifying fewer layout specifications than columns or vice versa will result in not showing them.‚ASince determining a maximum in two directions is not possible, a ƒ instance is provided.D<=>„…?@ABCDE†F‡ˆGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef‰ghijklmnopqrstuvwGroupsOptional header detailsLayout specification of columnsVisual table stylex‚f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxHPQRSTU_`abKLMNOGHIJFVXWYZE\^][opqrs>t<=uvwxcdefABCDghijk?@lmn.<=>„…?@ABCDE†F‡ˆGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef‰ghijklmnopqrstuvwx‚Š      !"##$%&'()*+,-./0123456789:;<=>?@@ABBCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€z‚ƒ„…z{†A‡Gˆ‰Š‹table_GgAMiqrH9Ow0mcjLdMifzjText.Layout.Table.PrimModText.Layout.Table.JustifyText.Layout.Table.StyleText.Layout.Table CutMarkSpeccutMarkspaces fillStart' fillStartfillEnd fillBoth'fillBoth fillLeft'fillLeft fillRight fillCenter' fillCenter fitRightWith fitLeftWith fitCenterWithapplyMarkLeftWithapplyMarkRightWith VertPosSpecTopVPos CenterVPos BottomVPosjustifyTextsAsGridjustifyWordListsAsGrid columnsAsGridvpadCols justifyTextjustifydimorphicSummandsdimorphicSummandsBy TableStyle headerSepH headerSepLC headerSepRC headerSepC headerTopL headerTopR headerTopC headerTopHheaderVgroupV groupSepH groupSepC groupSepLC groupSepRC groupTopC groupTopL groupTopR groupTopH groupBottomC groupBottomL groupBottomR groupBottomH asciiRoundSunicodeSunicodeBoldHeaderS unicodeRoundS unicodeBoldSunicodeBoldStripedSHeaderLayoutSpecRowGroup AlignInfo ColModInfo FillAlignedFillToFitToOccSpec AlignSpecPosSpecLeftPosRightPos CenterPosLenSpecExpandFixed ExpandUntil FixedUntil LayoutSpeclenSpecposSpec alignSpec cutMarkSpecnoAlign predAlign charAligndotAlign isAligned singleCutMarkdefaultCutMark noCutMarkellipsisCutMarkdefaultLnumLfixedL fixedLeftLpad trimOrPadalign alignFixedwidthCMI unalignedCMIensureWidthCMIensureWidthOfCMIcolumnModifierwidthAIderiveColModInfosderiveAlignInfo layoutToCells layoutToLineslayoutToStringaltLinescheckeredCellsrowGroupcenterHLleftHLlayoutTableToLineslayoutTableToStringbaseGHC.BaseStringleftMark rightMarkapplyMarkLeftBy$fShowCutMarkSpec Data.OldListwordsmapInitdimorphicSpaces$fMonoidAlignInfoMonoidrows AlignPredNoAlign splitAtOcc