h"5).      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Andy Gill, and the Oregon Graduate Institute of Science and Technology, 1999-2001 BSD-style (see the file LICENSE)$Chris Dornan StablePortableSafe?xhtmlCreates a (1x1) table entryxhtmlComposes tables vertically.xhtmlComposes tables horizontally.xhtmltrans flips (transposes) over the x and y axis of the table. It is only used internally, and typically in pairs, ie. (flip ... munge ... (un)flip).xhtmlThis is the other thing you can do with a Table; turn it into a 2D list, tagged with the (x,y) sizes of each cell in the table.34(c) Andy Gill, and the Oregon Graduate Institute of Science and Technology, 1999-2001, (c) Bjorn Bringert, 2004-2006 BSD-style (see the file LICENSE)$Chris Dornan StablePortableSafe!xhtml8CHANGEATTRS is a more expressive alternative to ADDATTRSxhtmlHTML is the class of things that can be validly put inside an HTML tag. So this can be one or more  elements, or a , for example.xhtmlAttributes with name and value.xhtmlA important property of Html is that all strings inside the structure are already in Html friendly format.xhtml?..just..plain..normal..text... but using © and &amb;, etc.xhtmltag with internal markup xhtml%Put something inside an HTML element. xhtmlCreate a piece of HTML which is the concatenation of two things which can be made into HTML. xhtmlAn empty piece of HTML.xhtml0Checks whether the given piece of HTML is empty.xhtml)Constructs an element with a custom name.xhtmlConstructs an element with a custom name, and without any children.xhtml-Processing Strings into Html friendly things.xhtmlThis is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like .xhtmlOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.xhtmlOutputs indented HTML. Because space matters in HTML, the output is quite messy.xhtmlOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtml or  renderHtml.xhtmlRender a piece of HTML without adding a DOCTYPE declaration or root element. Does not add any extra whitespace.xhtmlRender a piece of indented HTML without adding a DOCTYPE declaration or root element. Only adds whitespace where it does not change the meaning of the document.xhtmlRender a piece of indented HTML without adding a DOCTYPE declaration or a root element. The indentation is done inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using  or .xhtml6Show a single HTML element, without adding whitespace.xhtmlShow a start tagxhtmlShow an end tagxhtmlThe names of all elements which can represented using the empty tag short-hand.xhtml xhtmlParentxhtmlChildxhtml Element namexhtmlElement contentsxhtmlDOCTYPE declarationxhtmlDOCTYPE declarationxhtmlDOCTYPE declarationxhtml* if the empty tag shorthand should be usedxhtmlTag namexhtml Attributesxhtml"Whitespace to add after attributesxhtmlTag namexhtml Whitespace to add after tag name- 8 7 2Safe Safe ! Safe0"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ Safe'RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ SafeYxhtml Convert a  to , converting characters that need to be escaped to HTML entities.xhtml?This converts a string, but keeps spaces as non-line-breakable.xhtmlThis converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list.xhtmlCopyright sign.xhtmlNon-breaking space.xhtmlSame as .SafexhtmlThe DOCTYPE for XHTML 1.0 Strict.xhtmlOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.xhtmlOutputs indented HTML. Because space matters in HTML, the output is quite messy.xhtmlOutputs indented XHTML. Because space matters in HTML, the output is quite messy.xhtmlOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using  or .xhtml3The code of the "dominant" language of the webpage.xhtmlAll the , including a header. "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  RSTUVWXYZ[]\^_`adbcefghijklmnopqrstuvwxyz{|}~"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQSafeFxhtmlOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.xhtmlOutputs indented HTML. Because space matters in HTML, the output is quite messy.xhtmlOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using  or .  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  RSTUVWXYZ[]\^_`adbcefghijklmnopqrstuvwxyz{|}~"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ !Safe$xhtmlWe internally represent the Cell inside a Table with an object of the type  Int -> Int -> HtmlWhen we render it later, we find out how many columns or rows this cell will span over, and can include the correct colspan/rowspan command.xhtmlrenderTable takes the HtmlTable, and renders it back into and Html object.xhtmlIf you can't be bothered with the above, then you can build simple tables with simpleTable. Just provide the attributes for the whole table, attributes for the cells (same for every cell), and a list of lists of cell contents, and this function will build the table for you. It does presume that all the lists are non-empty, and there is at least one list.Different length lists means that the last cell gets padded. If you want more power, then use the system above, or build tables explicitly.  34 Safe&hxhtmlThe basic idea is you render your structure in the form of this tree, and then use treeHtml to turn it into a Html object with the structure explicit.xhtmlThis uses the above tree rendering function, and displays the Html as a tree structure, allowing debugging of what is actually getting produced.Safe&"Safe& Safe)bxhtmlOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.xhtmlOutputs indented HTML. Because space matters in HTML, the output is quite messy.xhtmlOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using  or .  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  RSTUVWXYZ[]\^_`adbcefghijklmnopqrstuvwxyz{|}~"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ !(c) Andy Gill, and the Oregon Graduate Institute of Science and Technology, 1999-2001, (c) Bjorn Bringert, 2004-2006 BSD-style (see the file LICENSE)$Chris Dornan StablePortableSafe-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+, - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                    7xhtml-3000.2.2.1Text.XHtml.StrictText.XHtml.FramesetText.XHtml.Table Text.XHtmlText.XHtml.TransitionalText.XHtml.BlockTableText.XHtml.InternalsText.XHtml.Frameset.ElementsText.XHtml.Frameset.AttributesText.XHtml.Strict.AttributesText.XHtml.Strict.ElementsText.XHtml.ExtrasText.XHtml.Debug"Text.XHtml.Transitional.Attributes Text.XHtml.Transitional.Elements CHANGEATTRS changeAttrsADDATTRS!HTMLtoHtmltoHtmlFromListHtmlHtmlAttr htmlAttrPair<< concatHtml+++noHtmlisNoHtmltagitag emptyAttrintAttrstrAttrhtmlAttrstringToHtmlStringprimHtmlshowHtmlFragmentrenderHtmlFragmentprettyHtmlFragmentframeframesetnoframes frameborder marginheight marginwidthnoresize scrollingactionalignaltaltcodearchivebaseborder bordercolor cellpadding cellspacingcheckedcodebasecolscolspancontentcoordsdisabledenctypeheighthrefhreflang httpequiv identifierismaplang maxlengthmethodmultiplenamenohrefrelrevrowsrowspanrulesselectedshapesizesrctheclasstheforthestylethetypetitleusemapvalignvaluewidthabbracronymaddressanchorareabdobig blockquotebodyboldbuttonbrcaptioncitecolcolgroupddefdefinedeldlistdterm emphasizefieldsetformh1h2h3h4h5h6headerhrimageinputinsitalicskeyboardlabellegendlimetanoscriptobjectolistoptgroupoption paragraphparamprequotesamplescriptselectsmallstrongstylesubsuptabletbodytdtextareatfootththeadthebasethecodethedivthehtmlthelinkthemapthespanthetitletrttulistvariableHotLink hotLinkURLhotLinkContentshotLinkAttributesURL stringToHtml lineToHtml linesToHtml primHtmlChar copyright spaceHtmlbulletphotlinkordList unordListdefListwidgetcheckboxhiddenradioresetsubmitpassword textfieldafileclickmapmenuguidocTypeshowHtml renderHtmlrenderHtmlWithLanguage prettyHtml HtmlTable HTMLTABLEcellabovebeside<->abovesbesides simpleTable$fShowHtmlTable$fHTMLHtmlTable$fHTMLTABLEHtml$fHTMLTABLEHtmlTableHtmlTreeHtmlLeafHtmlNodetreeHtml treeColors debugHtmlalink backgroundbgcolorclearcodecolorcompactfacehspacelinknoshadenowrapstarttargettextversionvlinkvspaceaquablackbluefuchsiagraygreenlimemaroonnavyolivepurpleredsilvertealyellowwhiteappletbasefontcenterdirfontiframeisindexthemenustrike underlinesingletrans getMatrix BlockTable showsTable showTableGHC.BaseString HtmlElement HtmlStringHtmlTagghc-prim GHC.Classes<showHtmlInternalrenderHtmlInternalprettyHtmlInternal showHtml' renderTag renderEndTagvalidHtmlITags$fSemigroupHtml GHC.TypesTruegetHtmlElements markupContent markupAttrs markupTagmkHtml renderHtml' prettyHtml' renderTable