<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >Text.HTML.TagSoup</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_Text-HTML-TagSoup.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >tagsoup-0.12: Parsing and extracting information from (possibly malformed) HTML/XML documents</TD ><TD CLASS="topbut" ><A HREF="src/Text-HTML-TagSoup.html" >Source code</A ></TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >Text.HTML.TagSoup</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >Data structures and parsing </A ></DT ><DT ><A HREF="#2" >Tag identification </A ></DT ><DT ><A HREF="#3" >Extraction </A ></DT ><DT ><A HREF="#4" >Utility </A ></DT ><DT ><A HREF="#5" >Combinators </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P >This module is for working with HTML/XML. It deals with both well-formed XML and malformed HTML from the web. It features: </P ><UL ><LI > A lazy parser, based on the HTML 5 specification - see <TT ><A HREF="Text-HTML-TagSoup.html#v%3AparseTags" >parseTags</A ></TT >. </LI ><LI > A renderer that can write out HTML/XML - see <TT ><A HREF="Text-HTML-TagSoup.html#v%3ArenderTags" >renderTags</A ></TT >. </LI ><LI > Utilities for extracting information from a document - see <TT ><A HREF="Text-HTML-TagSoup.html#v%3A~%3D%3D" >~==</A ></TT >, <TT ><A HREF="Text-HTML-TagSoup.html#v%3Asections" >sections</A ></TT > and <TT ><A HREF="Text-HTML-TagSoup.html#v%3Apartitions" >partitions</A ></TT >. </LI ></UL ><P >The standard practice is to parse a <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TT > to <TT >[</TT ><TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TT ><TT >]</TT > using <TT ><A HREF="Text-HTML-TagSoup.html#v%3AparseTags" >parseTags</A ></TT >, then operate upon it to extract the necessary information. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ATag" >Tag</A > str </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ATagOpen" >TagOpen</A > str [<A HREF="Text-HTML-TagSoup.html#t%3AAttribute" >Attribute</A > str]</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATagClose" >TagClose</A > str</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATagText" >TagText</A > str</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATagComment" >TagComment</A > str</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATagWarning" >TagWarning</A > str</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATagPosition" >TagPosition</A > !<A HREF="Text-HTML-TagSoup.html#t%3ARow" >Row</A > !<A HREF="Text-HTML-TagSoup.html#t%3AColumn" >Column</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ARow" >Row</A > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AColumn" >Column</A > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AAttribute" >Attribute</A > str = (str, str)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AparseTags" >parseTags</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AparseTagsOptions" >parseTagsOptions</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str -> str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AParseOptions" >ParseOptions</A > str = <A HREF="#v%3AParseOptions" >ParseOptions</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptTagPosition" >optTagPosition</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptTagWarning" >optTagWarning</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptEntityData" >optEntityData</A > :: (str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptEntityAttrib" >optEntityAttrib</A > :: (str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> (str, [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str])</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptTagTextMerge" >optTagTextMerge</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AparseOptions" >parseOptions</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AparseOptionsFast" >parseOptionsFast</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenderTags" >renderTags</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenderTagsOptions" >renderTagsOptions</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A > str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AescapeHTML" >escapeHTML</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => str -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ARenderOptions" >RenderOptions</A > str = <A HREF="#v%3ARenderOptions" >RenderOptions</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptEscape" >optEscape</A > :: str -> str</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AoptMinimize" >optMinimize</A > :: str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenderOptions" >renderOptions</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A > str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcanonicalizeTags" >canonicalizeTags</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagOpen" >isTagOpen</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagClose" >isTagClose</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagText" >isTagText</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagWarning" >isTagWarning</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagPosition" >isTagPosition</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagOpenName" >isTagOpenName</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTagCloseName" >isTagCloseName</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromTagText" >fromTagText</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromAttrib" >fromAttrib</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str, <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str) => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmaybeTagText" >maybeTagText</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmaybeTagWarning" >maybeTagWarning</A > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AinnerText" >innerText</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asections" >sections</A > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [[a]]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Apartitions" >partitions</A > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [[a]]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATagRep" >TagRep</A > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoTagRep" >toTagRep</A > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => a -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A~%3D%3D" >(~==)</A > :: (<A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str, <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > t) => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> t -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A~%2F%3D" >(~/=)</A > :: (<A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str, <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > t) => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> t -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >Data structures and parsing </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Tag" ><A NAME="t%3ATag" ></A ></A ><B >Tag</B > str </TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#Tag" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A single HTML element. A whole document is represented by a list of <TT >Tag</TT >. There is no requirement for <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagOpen" >TagOpen</A ></TT > and <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagClose" >TagClose</A ></TT > to match. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:TagOpen" ><A NAME="v%3ATagOpen" ></A ></A ><B >TagOpen</B > str [<A HREF="Text-HTML-TagSoup.html#t%3AAttribute" >Attribute</A > str]</TD ><TD CLASS="rdoc" >An open tag with <TT ><A HREF="Text-HTML-TagSoup.html#t%3AAttribute" >Attribute</A ></TT >s in their original order </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TagClose" ><A NAME="v%3ATagClose" ></A ></A ><B >TagClose</B > str</TD ><TD CLASS="rdoc" >A closing tag </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TagText" ><A NAME="v%3ATagText" ></A ></A ><B >TagText</B > str</TD ><TD CLASS="rdoc" >A text node, guaranteed not to be the empty string </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TagComment" ><A NAME="v%3ATagComment" ></A ></A ><B >TagComment</B > str</TD ><TD CLASS="rdoc" >A comment </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TagWarning" ><A NAME="v%3ATagWarning" ></A ></A ><B >TagWarning</B > str</TD ><TD CLASS="rdoc" >Meta: A syntax error in the input file </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TagPosition" ><A NAME="v%3ATagPosition" ></A ></A ><B >TagPosition</B > !<A HREF="Text-HTML-TagSoup.html#t%3ARow" >Row</A > !<A HREF="Text-HTML-TagSoup.html#t%3AColumn" >Column</A ></TD ><TD CLASS="rdoc" >Meta: The position of a parsed element </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Tag')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Tag" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor" >Functor</A > <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#t%3AData" >Data</A > str => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#t%3AData" >Data</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > str => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > str => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Row" ><A NAME="t%3ARow" ></A ></A ><B >Row</B > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#Row" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >The row/line of a position, starting at 1 </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Column" ><A NAME="t%3AColumn" ></A ></A ><B >Column</B > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#Column" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >The column of a position, starting at 1 </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Attribute" ><A NAME="t%3AAttribute" ></A ></A ><B >Attribute</B > str = (str, str)</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#Attribute" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >An HTML attribute <TT >id="name"</TT > generates <TT >("id","name")</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:parseTags" ><A NAME="v%3AparseTags" ></A ></A ><B >parseTags</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Parser.html#parseTags" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Parse a string to a list of tags, using an HTML 5 compliant parser. </P ><PRE > parseTags "<hello>my&amp;</world>" == [TagOpen "hello" [],TagText "my&",TagClose "world"] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:parseTagsOptions" ><A NAME="v%3AparseTagsOptions" ></A ></A ><B >parseTagsOptions</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str -> str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Parser.html#parseTagsOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Parse a string to a list of tags, using settings supplied by the <TT ><A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A ></TT > parameter, eg. to output position information: </P ><PRE > parseTagsOptions parseOptions{optTagPosition = True} "<hello>my&amp;</world>" == [TagPosition 1 1,TagOpen "hello" [],TagPosition 1 8,TagText "my&",TagPosition 1 15,TagClose "world"] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ParseOptions" ><A NAME="t%3AParseOptions" ></A ></A ><B >ParseOptions</B > str </TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Options.html#ParseOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >These options control how parseTags works. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ParseOptions" ><A NAME="v%3AParseOptions" ></A ></A ><B >ParseOptions</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:optTagPosition" ><A NAME="v%3AoptTagPosition" ></A ></A ><B >optTagPosition</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >Should <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagPosition" >TagPosition</A ></TT > values be given before some items (default=False,fast=False) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:optTagWarning" ><A NAME="v%3AoptTagWarning" ></A ></A ><B >optTagWarning</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >Should <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagWarning" >TagWarning</A ></TT > values be given (default=False,fast=False) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:optEntityData" ><A NAME="v%3AoptEntityData" ></A ></A ><B >optEntityData</B > :: (str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ><TD CLASS="rdoc" >How to lookup an entity (Bool = has ending <TT >';'</TT >) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:optEntityAttrib" ><A NAME="v%3AoptEntityAttrib" ></A ></A ><B >optEntityAttrib</B > :: (str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> (str, [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str])</TD ><TD CLASS="rdoc" >How to lookup an entity in an attribute (Bool = has ending <TT >';'</TT >?) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:optTagTextMerge" ><A NAME="v%3AoptTagTextMerge" ></A ></A ><B >optTagTextMerge</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >Require no adjacent <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagText" >TagText</A ></TT > values (default=True,fast=False) </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ParseOptions')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ParseOptions" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:parseOptions" ><A NAME="v%3AparseOptions" ></A ></A ><B >parseOptions</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Options.html#parseOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >The default parse options value, described in <TT ><A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:parseOptionsFast" ><A NAME="v%3AparseOptionsFast" ></A ></A ><B >parseOptionsFast</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Options.html#parseOptionsFast" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >A <TT ><A HREF="Text-HTML-TagSoup.html#t%3AParseOptions" >ParseOptions</A ></TT > structure optimised for speed, following the fast options. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:renderTags" ><A NAME="v%3ArenderTags" ></A ></A ><B >renderTags</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Render.html#renderTags" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Show a list of tags, as they might have been parsed, using the default settings given in <TT ><A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A ></TT >. </P ><PRE > renderTags [TagOpen "hello" [],TagText "my&",TagClose "world"] == "<hello>my&amp;</world>" </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:renderTagsOptions" ><A NAME="v%3ArenderTagsOptions" ></A ></A ><B >renderTagsOptions</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A > str -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Render.html#renderTagsOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Show a list of tags using settings supplied by the <TT ><A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A ></TT > parameter, eg. to avoid escaping any characters one could do: </P ><PRE > renderTagsOptions renderOptions{optEscape = id} [TagText "my&"] == "my&" </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:escapeHTML" ><A NAME="v%3AescapeHTML" ></A ></A ><B >escapeHTML</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => str -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Render.html#escapeHTML" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Replace the four characters <TT >&"<></TT > with their HTML entities (the list from <TT ><A HREF="Text-HTML-TagSoup-Entity.html#v%3AxmlEntities" >xmlEntities</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:RenderOptions" ><A NAME="t%3ARenderOptions" ></A ></A ><B >RenderOptions</B > str </TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Render.html#RenderOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >These options control how <TT ><A HREF="Text-HTML-TagSoup.html#v%3ArenderTags" >renderTags</A ></TT > works. </P ><P >The strange quirk of only minimizing <TT ><br></TT > tags is due to Internet Explorer treating <TT ><br></br></TT > as <TT ><br><br></TT >. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:RenderOptions" ><A NAME="v%3ARenderOptions" ></A ></A ><B >RenderOptions</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:optEscape" ><A NAME="v%3AoptEscape" ></A ></A ><B >optEscape</B > :: str -> str</TD ><TD CLASS="rdoc" >Escape a piece of text (default = escape the four characters <TT >&"<></TT >) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:optMinimize" ><A NAME="v%3AoptMinimize" ></A ></A ><B >optMinimize</B > :: str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >Minimise <b></b> -> <b/> (default = minimise only <TT ><br></TT > tags) </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:renderOptions" ><A NAME="v%3ArenderOptions" ></A ></A ><B >renderOptions</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Render.html#renderOptions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >The default render options value, described in <TT ><A HREF="Text-HTML-TagSoup.html#t%3ARenderOptions" >RenderOptions</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:canonicalizeTags" ><A NAME="v%3AcanonicalizeTags" ></A ></A ><B >canonicalizeTags</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str]</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#canonicalizeTags" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Turns all tag names and attributes to lower case and converts DOCTYPE to upper case. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Tag identification </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagOpen" ><A NAME="v%3AisTagOpen" ></A ></A ><B >isTagOpen</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagOpen" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Test if a <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagOpen" >TagOpen</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagClose" ><A NAME="v%3AisTagClose" ></A ></A ><B >isTagClose</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagClose" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Test if a <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagClose" >TagClose</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagText" ><A NAME="v%3AisTagText" ></A ></A ><B >isTagText</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagText" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Test if a <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagText" >TagText</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagWarning" ><A NAME="v%3AisTagWarning" ></A ></A ><B >isTagWarning</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagWarning" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Test if a <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagWarning" >TagWarning</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagPosition" ><A NAME="v%3AisTagPosition" ></A ></A ><B >isTagPosition</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagPosition" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Test if a <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagPosition" >TagPosition</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagOpenName" ><A NAME="v%3AisTagOpenName" ></A ></A ><B >isTagOpenName</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagOpenName" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Returns True if the <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagOpen" >TagOpen</A ></TT > and matches the given name </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:isTagCloseName" ><A NAME="v%3AisTagCloseName" ></A ></A ><B >isTagCloseName</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#isTagCloseName" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Returns True if the <TT ><A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A ></TT > is <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagClose" >TagClose</A ></TT > and matches the given name </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >Extraction </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:fromTagText" ><A NAME="v%3AfromTagText" ></A ></A ><B >fromTagText</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#fromTagText" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Extract the string from within <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagText" >TagText</A ></TT >, crashes if not a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagText" >TagText</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:fromAttrib" ><A NAME="v%3AfromAttrib" ></A ></A ><B >fromAttrib</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > str, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > str, <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str) => str -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#fromAttrib" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Extract an attribute, crashes if not a <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagOpen" >TagOpen</A ></TT >. Returns <TT >""</TT > if no attribute present. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:maybeTagText" ><A NAME="v%3AmaybeTagText" ></A ></A ><B >maybeTagText</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#maybeTagText" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Extract the string from within <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagText" >TagText</A ></TT >, otherwise <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:maybeTagWarning" ><A NAME="v%3AmaybeTagWarning" ></A ></A ><B >maybeTagWarning</B > :: <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#maybeTagWarning" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Extract the string from within <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagWarning" >TagWarning</A ></TT >, otherwise <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:innerText" ><A NAME="v%3AinnerText" ></A ></A ><B >innerText</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => [<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str] -> str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup-Type.html#innerText" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Extract all text content from tags (similar to Verbatim found in HaXml) </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Utility </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:sections" ><A NAME="v%3Asections" ></A ></A ><B >sections</B > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [[a]]</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#sections" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >This function takes a list, and returns all suffixes whose first item matches the predicate. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:partitions" ><A NAME="v%3Apartitions" ></A ></A ><B >partitions</B > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [[a]]</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#partitions" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >This function is similar to <TT ><A HREF="Text-HTML-TagSoup.html#v%3Asections" >sections</A ></TT >, but splits the list so no element appears in any two partitions. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Combinators </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:TagRep" ><A NAME="t%3ATagRep" ></A ></A ><B >TagRep</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#TagRep" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Define a class to allow String's or Tag str's to be used as matches </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" >Methods</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:toTagRep" ><A NAME="v%3AtoTagRep" ></A ></A ><B >toTagRep</B > :: <A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => a -> <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str</TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#toTagRep" >Source</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TagRep')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:TagRep" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str => <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > (<A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:~==" ><A NAME="v%3A~%3D%3D" ></A ></A ><B >(~==)</B > :: (<A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str, <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > t) => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> t -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#~%3D%3D" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Performs an inexact match, the first item should be the thing to match. If the second item is a blank string, that is considered to match anything. For example: </P ><PRE > (TagText "test" ~== TagText "" ) == True (TagText "test" ~== TagText "test") == True (TagText "test" ~== TagText "soup") == False </PRE ><P >For <TT ><A HREF="Text-HTML-TagSoup.html#v%3ATagOpen" >TagOpen</A ></TT > missing attributes on the right are allowed. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:~/=" ><A NAME="v%3A~%2F%3D" ></A ></A ><B >(~/=)</B > :: (<A HREF="Text-StringLike.html#t%3AStringLike" >StringLike</A > str, <A HREF="Text-HTML-TagSoup.html#t%3ATagRep" >TagRep</A > t) => <A HREF="Text-HTML-TagSoup.html#t%3ATag" >Tag</A > str -> t -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-HTML-TagSoup.html#~%2F%3D" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Negation of <TT ><A HREF="Text-HTML-TagSoup.html#v%3A~%3D%3D" >~==</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >