Ë
    ¤2ÚiW  ã                   óT   — d Z ddlmZmZmZ ddlmZ ddlmZ ddgZ	i Z
dd	„Zd
„ Zd„ Zy)a…  A collection of modules for iterating through different kinds of
tree, generating tokens identical to those produced by the tokenizer
module.

To create a tree walker for a new type of tree, you need to
implement a tree walker object (called TreeWalker by convention) that
implements a 'serialize' method which takes a tree as sole argument and
returns an iterator which generates tokens.
é    )Úabsolute_importÚdivisionÚunicode_literalsé   )Ú	constants)Údefault_etreeÚgetTreeWalkerÚpprintNc                 óv  — | j                  «       } | t        vr�| dk(  rddlm} |j                  t        | <   nn| dk(  rddlm} |j                  t        | <   nO| dk(  rddlm} |j                  t        | <   n0| dk(  r+dd	lm} |€t        } |j                  |fi |¤Žj                  S t        j                  | «      S )
a;  Get a TreeWalker class for various types of tree with built-in support

    :arg str treeType: the name of the tree type required (case-insensitive).
        Supported values are:

        * "dom": The xml.dom.minidom DOM implementation
        * "etree": A generic walker for tree implementations exposing an
          elementtree-like interface (known to work with ElementTree,
          cElementTree and lxml.etree).
        * "lxml": Optimized walker for lxml.etree
        * "genshi": a Genshi stream

    :arg implementation: A module implementing the tree type e.g.
        xml.etree.ElementTree or cElementTree (Currently applies to the "etree"
        tree type only).

    :arg kwargs: keyword arguments passed to the etree walker--for other
        walkers, this has no effect

    :returns: a TreeWalker class

    Údomé   )r   Úgenshi)r   Úlxml)Ú
etree_lxmlÚetree)r   )ÚlowerÚtreeWalkerCacheÚ r   Ú
TreeWalkerr   r   r   r   ÚgetETreeModuleÚget)ÚtreeTypeÚimplementationÚkwargsr   r   r   r   s          úT/var/www/html/acx/venv/lib/python3.12/site-packages/html5lib/treewalkers/__init__.pyr	   r	      s¬   € ð0 �~‰~Ó€HØ”Ñ&Ø�uÒÝØ(+¯©ŒO˜HÒ%Ø˜Ò!Ý Ø(.×(9Ñ(9ŒO˜HÒ%Ø˜ÒÝ$Ø(2×(=Ñ(=ŒO˜HÒ%Ø˜Ò ÝØÐ%Ü!.�à'�5×'Ñ'¨ÑA¸&ÑA×LÑLÐLÜ×Ñ˜xÓ(Ð(ó    c              #   óÈ   K  — g }| D ]>  }|d   }|dv r|j                  |d   «       Œ!|rddj                  |«      dœ–— g }|–— Œ@ |rddj                  |«      dœ–— y y ­w)NÚtype)Ú
CharactersÚSpaceCharactersÚdatar   r   )r   r!   )ÚappendÚjoin)ÚtokensÚpendingCharactersÚtokenr   s       r   ÚconcatenateCharacterTokensr'   A   s�   è ø€ ØÐØò ˆØ�V‰}ˆØÐ4Ñ4Ø×$Ñ$ U¨6¡]Õ3á Ø+°R·W±WÐ=NÓ5OÑPÒPØ$&Ð!Ø‹Kðñ Ø#¨R¯W©WÐ5FÓ-GÑHÓHð ùs   ‚A A"c                 óŒ  — g }d}t        | «      D �]!  }|d   }|dv �r|d   rU|d   t        j                  d   k7  r<|d   t        j                  v rt        j                  |d      }n|d   }|›d|d   ›�}n|d   }|j	                  d|z  ›d|›d	�«       |d
z  }|d   }t        |j                  «       «      D ]X  \  \  }}	}
|r0|t        j                  v rt        j                  |   }n|}|›d|	›�}n|	}|j	                  d|z  ›|›d|
›d�«       ŒZ |dk(  s�Œ|d
z  }�Œ|dk(  r|d
z  }�Œ|dk(  r|j	                  d|z  ›d|d   ›d�«       �ŒC|dk(  rž|d   r€|d   r2|j	                  d|z  ›d|d   ›d|d   ›d|d   r|d   nd›d�«       �Œ„|d   r%|j	                  d|z  ›d|d   ›d|d   ›d�«       �Œ®|j	                  d|z  ›d|d   ›d	�«       �ŒÍ|j	                  d|z  ›d�«       �Œæ|dk(  r|j	                  d|z  ›d|d   ›d�«       �Œ
|dk(  rJ d«       ‚t        d |z  «      ‚ d!j                  |«      S )"z Pretty printer for tree walkers

    Takes a TreeWalker instance and pretty prints the output of walking the tree.

    :arg walker: a TreeWalker instance

    r   r   )ÚStartTagÚEmptyTagÚ	namespaceÚhtmlú Únameú<ú>r   r!   z="ú"r*   ÚEndTagÚCommentz<!-- z -->ÚDoctypeÚpublicIdz
<!DOCTYPE z "z" "ÚsystemIdr   z">z "" "z<!DOCTYPE >r   r    zBconcatenateCharacterTokens should have got rid of all Space tokenszUnknown token type, %sú
)	r'   r   Ú
namespacesÚprefixesr"   ÚsortedÚitemsÚ
ValueErrorr#   )ÚwalkerÚoutputÚindentr&   r   Únsr.   Úattrsr+   Ú	localnameÚvalues              r   r
   r
   P   s’  € ð €FØ€FÜ+¨FÓ3ó >>ˆØ�V‰}ˆØÐ+Ò+à�[Ò! e¨KÑ&8¼I×<PÑ<PÐQWÑ<XÒ&XØ˜Ñ%¬×);Ñ);Ñ;Ü"×+Ñ+¨E°+Ñ,>Ñ?‘Bà˜{Ñ+�BÚ"$ e¨F¢mÐ4‘à˜V‘}�Ø�M‰M c¨F£l²DÐ9Ô:Ø�a‰KˆFà˜&‘MˆEÜ17¸¿¹»Ó1Fò 	KÑ-Ñ&�˜I¨ÙØ ¤I×$6Ñ$6Ñ6Ü&×/Ñ/°	Ñ:™à&˜Ú&(©)Ð4‘Dà$�DØ—‘¨s°Vª|ºTÂ5ÐIÕJð	Kð �zÔ!Ø˜!‘’à�XÒØ�a‰KŠFà�YÒØ�M‰M¨S°6«\¸5À»=ÐIÖJà�YÒØ�VŠ}Ø˜Ò$Ø—M‘MØ#&¨£<Ø#(¨£=Ø#(¨Ó#4Ø8=¸jÒ8I 5¨Ò#4ÈrÑ#Qð	#Sö Tð
 ˜:Ò&Ø—M‘MØ#&¨£<Ø#(¨£=Ø#(¨Ó#4ð#6ö 7ð
 —M‘M°s¸V³|Ø7<¸V³}ð#Fö Gð —‘°°v³Ð?Ö@à�\Ò!Ø�M‰M¨¨f«°e¸F³mÐDÖEàÐ&Ò&Ø^Ð^Ó^�5ô Ð5¸Ñ<Ó=Ð=ð}>>ð@ �9‰9�VÓÐr   )N)Ú__doc__Ú
__future__r   r   r   r   r   Ú_utilsr   Ú__all__r   r	   r'   r
   © r   r   ú<module>rI      s:   ðñ÷ CÑ Bå Ý "à˜HÐ
%€à€ó))òXIóJr   