phsI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHLookup an entity, using  if it starts with  # and  otherwise %Lookup a numeric entity, the leading '#'! must have already been removed. & lookupNumericEntity "65" == Just 'A' ' lookupNumericEntity "x41" == Just 'A' ( lookupNumericEntity "x4E" === Just 'N' ( lookupNumericEntity "x4e" === Just 'N' * lookupNumericEntity "Haskell" == Nothing # lookupNumericEntity "" == Nothing 4 lookupNumericEntity "89439085908539082" == Nothing Lookup a named entity, using  % lookupNamedEntity "amp" == Just '&' ( lookupNamedEntity "haskell" == Nothing 1Escape a character before writing it out to XML.  escapeXMLChar 'a' == Nothing ! escapeXMLChar '&' == Just "amp" 1A table mapping XML entity names to code points.  Does not include apos. as Internet Explorer does not know about it. 1A table mapping HTML entity names to code points  LA class to generalise TagSoup parsing over many types of string-like types. + Examples are given for the String type.   empty = ""   cons = (:)   uncons [] = Nothing  uncons (x:xs) = Just (x, xs)   toString = id   fromString = id   fromChar = return   strConcat = concat   strNull = null   append = (++) +Convert a String from one type to another.        DA single HTML element. A whole document is represented by a list of Tag.  There is no requirement for  and  to match. 'Meta: The position of a parsed element 'Meta: A syntax error in the input file  A comment 3A text node, guaranteed not to be the empty string A closing tag An open tag with s in their original order IJ(The column of a position, starting at 1 The row/"line of a position, starting at 1 An HTML attribute id="name" generates ("id","name") KLMN Test if a  is a   Test if a  is a   Test if a  is a  Extract the string from within  , otherwise O Extract the string from within , crashes if not a  HExtract all text content from tags (similar to Verbatim found in HaXml) ! Test if a  is a  "Extract the string from within  , otherwise O # Test if a  is a  $'Extract an attribute, crashes if not a .  Returns "" if no attribute present. %Returns True if the  is  and matches the given name &Returns True if the  is  and matches the given name IJKLMN !"#$%&IJJKLMN !"#$%&'()*@Convert a list of tags into a tree. This version is not lazy at % all, that is saved for version 2. +,-'()*+,-')(*+-,')(()*+,- .These options control how  parseTags works. /0Should > values be given before some items (default=False,fast=False) 1Should , values be given (default=False,fast=False) 2+How to lookup an entity (Bool = has ending ';') 3;How to lookup an entity in an attribute (Bool = has ending ';'?) 4Require no adjacent " values (default=True,fast=False) 5.The default parse options value, described in /.. 6A /.< structure optimised for speed, following the fast options. P'Change the underlying string type of a /. value. ./0123456P ./01234/0123456PQRSTUVWXYZ[\]^_`abcdefghijklmn6QRSTUVWXYZ[\]^_`abcdefghijopkqrlmstuvwxyz{|}~nQRRSTUVWXYZTUVWXYZ[jihgfedcba`_^]\\]^_`abcdefghijklmn    match an opening tag match an closing tag  match a text match a opening tag's name literally match a closing tag's name literally 8Match a tag with given name, that contains an attribute -with given name, that satisfies a predicate. 'If an attribute occurs multiple times, all occurrences are checked.  Check if the 'Tag str' is  and matches the given name  Check if the 'Tag str' is  and matches the given name  7These options control how = works. %The strange quirk of only minimizing <br>+ tags is due to Internet Explorer treating  <br></br> as <br><br>. 89=Escape a piece of text (default = escape the four characters &"<>) : Minimise <b></b> -> <b/> (default = minimise only <br> tags) ;Replace the four characters &"<> with their HTML entities. </The default render options value, described in 87. =YShow a list of tags, as they might have been parsed, using the default settings given in  87. \ renderTags [TagOpen "hello" [],TagText "my&",TagClose "world"] == "<hello>my&amp;</world>" >3Show a list of tags using settings supplied by the 87 parameter, 6 eg. to avoid escaping any characters one could do: J renderTagsOptions renderOptions{optEscape = id} [TagText "my&"] == "my&" 789:;<=>789:89:;<=>?DParse a string to a list of tags, using an HTML 5 compliant parser. [ parseTags "<hello>my&amp;</world>" == [TagOpen "hello" [],TagText "my&",TagClose "world"] @AParse a string to a list of tags, using settings supplied by the /. parameter, ' eg. to output position information: R parseTagsOptions parseOptions{optTagPosition = True} "<hello>my&amp;</world>" == i [TagPosition 1 1,TagOpen "hello" [],TagPosition 1 8,TagText "my&",TagPosition 1 15,TagClose "world"] ./0123456?@?@ADefine a class to allow String' s or Tag str's to be used as matches B5Turns all tag names and attributes to lower case and # converts DOCTYPE to upper case. CHPerforms an inexact match, the first item should be the thing to match. M If the second item is a blank string, that is considered to match anything.  For example:  - (TagText "test" ~== TagText "" ) == True - (TagText "test" ~== TagText "test") == True . (TagText "test" ~== TagText "soup") == False For . missing attributes on the right are allowed. D Negation of C E;This function takes a list, and returns all suffixes whose % first item matches the predicate. FThis function is similar to E, but splits the list 0 so no element appears in any two partitions. / !"#$%&./0123456789:;<=>?@ABCDEF/?@./0123456=>;789:<B!#%&$" EFACDABCDEFG+This function opens a URL on the internet.  Any http:// prefix is ignored.  / openURL "www.haskell.org/haskellwiki/Haskell" Known Limitations:  Only HTTP on port 80 " Outputs the HTTP Headers as well  Does not work with all servers BIt is hoped that a more reliable version of this function will be - placed in a new HTTP library at some point! HOpen a URL (if it starts with http://) or a file otherwise GHGHGH !"#$%&'()*+,-./0123456789:;<==>?@ABCD E E F G H I J KLMNOPQRSTUVVWXYZ[\]^_`aabcdefghijklmnopqrstu vwxyz{|}~  M  tagsoup-0.9Text.HTML.TagSoup.EntityText.StringLikeText.HTML.TagSoupText.HTML.TagSoup.TreeText.HTML.DownloadText.HTML.TagSoup.TypeText.HTML.TagSoup.Options Text.HTML.TagSoup.ImplementationText.HTML.TagSoup.SpecificationText.HTML.TagSoup.ManualText.HTML.TagSoup.GeneratedText.HTML.TagSoup.MatchText.HTML.TagSoup.RenderText.HTML.TagSoup.Parser lookupEntitylookupNumericEntitylookupNamedEntity escapeXMLChar xmlEntities htmlEntities StringLikeemptyconsunconstoString fromStringfromChar strConcatstrNullappend castStringTag TagPosition TagWarning TagCommentTagTextTagCloseTagOpenColumnRow Attribute isTagOpen isTagClose isTagText maybeTagText fromTagText innerText isTagWarningmaybeTagWarning isTagPosition fromAttrib isTagOpenNameisTagCloseNameTagTreeTagLeaf TagBranchtagTree flattenTree universeTree transformTree ParseOptionsoptTagPosition optTagWarning optEntityDataoptEntityAttriboptTagTextMerge parseOptionsparseOptionsFast RenderOptions optEscape optMinimize escapeHTML renderOptions renderTagsrenderTagsOptions parseTagsparseTagsOptionsTagRepcanonicalizeTags~==~/=sections partitionsopenURLopenItemPosition nullPositionpositionString positionChar tagPositionbase Data.MaybeNothingfmapParseOptionsOutable&SstlhdeofnextposOutPosWarn EntityEnd EntityHex EntityNum EntityName CommentEndComment TagEndCloseTagEndAttValAttNameTagShutCharexpandstateoutput tagTextMergeerrSeenerrWantampCharampOut entityChrisEofisCharisTag isTagShut isAttNameisAttValisTagEnd isTagEndClose isComment isCommentEnd isEntityNameisEntityNumHex isEntityNum isEntityHex isEntityEndisWarnfromChrfromWarn getEntityEndParserparsedatcharRefAttValuecharReftagOpentagClosetagText tagComment tagOpenLit tagCloseLittagOpenAttrLittagOpenAttrNameLittagOpenNameLittagCloseNameLitanyAttr anyAttrName anyAttrValue anyAttrLitanyAttrNameLitanyAttrValueLit getTagContenttoTagRepclient readResponse