Z_P      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  portable provisionaltagsoup@henning-thielemann.deHPosition in a file consisting of file name, row and column coordinates. PUpper left is (0,0), but show routines can display this with different offsets.  &Convert the file position to a format .that development environments can understand.     Needs + from utility-ht in order to be as lazy as  . Apply f to the first element, where p holds. 4If no such element exists, append the default value deflt to the list.     %Lookup a numeric entity, the leading '#'! must have already been removed.  " numberToChar "65" == Success 'A' # numberToChar "x41" == Success 'A' $ numberToChar "x4E" === Success 'N' $ numberToChar "x4e" === Success 'N' + numberToChar "Haskell" == Exception "..." $ numberToChar "" == Exception "..." 5 numberToChar "89439085908539082" == Exception "..." It'5s safe to use that for arbitrary big number strings, ,since we abort parsing as soon as possible. . numberToChar (repeat '1') == Exception "..." >We fail on leading zeros in order to prevent infinite loop on repeat '0'. This function assumes that 16 * ord maxBound is always representable as Int. 1A table mapping XML entity names to code points. OAlthough entity references can in principle represent more than one character, 2the standard entities only contain one character. This list excludes apos. as Internet Explorer does not know about it.  2A table mapping HTML entity names to code points. OAlthough entity references can in principle represent more than one character, 2the standard entities only contain one character.    >We need to distinguish between tag names and attribute names, 8because DOCTYPE as tag name must be written upper case, 8whereas as attribute name it may be written either way. !"#$%&  !"#$%& "#$ !%&  ! !"#$#$%&'()*+,-./0123456789:%Internet Explorer does not recognize &apos; )and thus we have to format it literally. ;<'()*+,-./0123456789:;<'(*+,-./012345678)9:;<'(()*+,-./0123456789:;<=>?@A"If a reference cannot be resolved then an  Exception0 constructor with an error message is returned. BC"If a reference cannot be resolved %then a reference string is returned. DEFGHIJKLMNO'Convert unicode character to XML Char, =where Unicode constructor is only used for ASCII characters. ,This is achieved by the following decision: *If there is a entity reference, use this. &If it is ASCII, represent it as Char. %Otherwise use a character reference. PQ.Generate XML character from Unicode character  with minimal use of references. 7The only references used are the XML entity references &apos;, &quot;, &amp;, &lt;, &gt;. RSTUVReduce the use of references. @Represent as much as possible characters as Unicode characters, (that is, using the Unicode constructor. W>try to convert a References to equivalent Unicode characters X=>?@ABCDEFGHIJKLMNOPQRSTUVWX=@?>ABCDEFGHIJKLMNRSTOPQVWXU=@?>>?@ABCDEFGHIJKLMNOPQRSTUVWX YZ['Convert unicode character to XML Char. )If there is a named reference, use this. &If it is ASCII, represent it as Char. #Otherwise use a numeric reference. \]^_`a=>?@EFGHIJKLMNQRSTUXYZ[\]^_`a=@?>YZEFGHIJKLMNRST[\Q]XU^_`a YZ[\]^_`a bcdeAn HTML attribute id="name" generates ("id","name") fghijklmnop'Each attribute is preceded by a space, 5that is there is a space between adjacent attributes and one leading space. qrst2Process specific attributes of an attribute list. +The function name is inspired by Data.Map. uvw,Insert an attribute into an attribute list. 7If an attribute with the same name is already present, /then the value of this attribute is changed to f newValue oldValue. ,The function name is analogous to Data.Map. xy$matchManyValues name [value0, value1] attrs checks whether (name, value0) or (name, value1) is contained in attrs. 'The values are handled case-sensitive. z{|}~ bcdefghijklmnopqrstuvwxyz{|}~ efghijklmnopqbcdrstuvwxyz{|}~ bcdcdefghfghijklmnopqrstuvwxyz{|}~    #Check whether a HTML tag is empty. Set of empty HTML tags. 9Some tags, namely those for text styles like FONT, B, I, are used quite sloppily. GThat is, they are not terminated or not terminated in the right order. 0We close them implicitly, if another tag closes &and ignore non-matching closing tags.  !"# !$%&"#'()*+,-./01-23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aJLXb_cdef   g  h i j k  l m n E o p q r s t u v w 0 x y z { | } ~     q  h  h . /   g hhl xml-basic-0.1Text.XML.Basic.PositionText.XML.Basic.UtilityText.XML.Basic.EntityText.HTML.Basic.EntityText.XML.Basic.NameText.XML.Basic.FormatText.XML.Basic.CharacterText.HTML.Basic.CharacterText.XML.Basic.Attribute$Text.XML.Basic.ProcessingInstructionText.XML.Basic.Name.MixedCaseText.XML.Basic.Name.QualifiedText.XML.Basic.TagText.XML.Basic.Name.LowerCaseText.HTML.Basic.TagTColumnRowFileNamenew initializefileNamerowcolumnupdateOnString updateOnChar toReportText updateAppend updateAppend'Name numberToChar mapNameToChar mapCharToNamelistlistInternetExplodermapCharToNameInternetExplodermapNameToUppermapNameToLower AttributeattributeFromStringattributeToStringTag tagFromString tagToStringC fromStringtoStringmatchmatchAnyrunnlblankeqltgtslashampsharpcolon semicolonaposquotlparrparexclamquestangle stringQuotednamemany EntityRefCharRefUnicode toUnicode toUnicodeGentoUnicodeOrFormattoUnicodeOrFormatGen fromUnicode fromCharRef fromEntityRef maybeUnicode maybeCharRefmaybeEntityRef isUnicode isCharRef isEntityRefisRefasciiFromUnicodeasciiFromUnicodeGenminimalRefFromUnicodeunicoderefCrefEswitchUnicodeRuns reduceRef reduceRefGen validCharRef asciiFromUnicodeInternetExploderisLowerisUppertoLowertoUpperunnameConsname_value_conslifttoPairfromPairvalueformatListBlankHeadmapName mapValues mapValuesAadjustOn adjustOnAinsert insertWith matchAnyValuelookup lookupLitanyanyNameanyValueanyLit anyNameLit anyValueLitUnknownKnown mapAttributesmapAttributesA namespace_local_ namespacelocaldoctypecdata doctypeString cdataStringisEmptyisSloppy isInnerOfcloses fileName_row_column_utility-ht-0.0.5.1Data.List.HT.PrivatebreakUpdate evalUpdate readBoundedupperLowerPairslistAdditionalemptySet sloppySetinnerMap closesMapnameMapnameSet nameSinglepSetdtdSetthdSetthdrSetliSet headingSet