Ë
    á]j4  ã                   ó"  — d dl mZmZmZ d dlmZ ddlmZmZm	Z	 g d¢Z
ej                  Zej                  Zej                  Zej"                  Zej&                  Zej*                  ZdZdj1                  e	«      Z	 G d„ d	e«      Z G d
„ de«      Zy)é    )Úabsolute_importÚdivisionÚunicode_literals)ÚNodeé   )Ú
namespacesÚvoidElementsÚspaceCharacters)	ÚDOCUMENTÚDOCTYPEÚTEXTÚELEMENTÚCOMMENTÚENTITYÚUNKNOWNÚ
TreeWalkerÚNonRecursiveTreeWalkerz<#UNKNOWN#>Ú c                   óV   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zdd„Zd„ Zd„ Zy
)r   z}Walks a tree yielding tokens

    Tokens are dicts that all have a ``type`` field specifying the type of the
    token.

    c                 ó   — || _         y)zCCreates a TreeWalker

        :arg tree: the tree to walk

        N)Útree)Úselfr   s     ú_/var/www/zogu/zoguvenv/lib/python3.12/site-packages/bleach/_vendor/html5lib/treewalkers/base.pyÚ__init__zTreeWalker.__init__   s   € ð ˆ�	ó    c                 ó   — t         ‚©N©ÚNotImplementedError)r   s    r   Ú__iter__zTreeWalker.__iter__#   ó   € Ü!Ð!r   c                 ó   — d|dœS )z†Generates an error token with the given message

        :arg msg: the error message

        :returns: SerializeError token

        ÚSerializeError©ÚtypeÚdata© )r   Úmsgs     r   ÚerrorzTreeWalker.error&   s   € ð )°#Ñ6Ð6r   c              #   óJ   K  — d|||dœ–— |r| j                  d«      –— yy­w)ar  Generates an EmptyTag token

        :arg namespace: the namespace of the token--can be ``None``

        :arg name: the name of the element

        :arg attrs: the attributes of the element as a dict

        :arg hasChildren: whether or not to yield a SerializationError because
            this tag shouldn't have children

        :returns: EmptyTag token

        ÚEmptyTag©r%   ÚnameÚ	namespacer&   zVoid element has childrenN©r)   )r   r.   r-   ÚattrsÚhasChildrens        r   ÚemptyTagzTreeWalker.emptyTag0   s7   è ø€ ð "¨4Ø%Øñò 	ñ Ø—*‘*Ð8Ó9Ó9ð ùs   ‚!#c                 ó   — d|||dœS )zôGenerates a StartTag token

        :arg namespace: the namespace of the token--can be ``None``

        :arg name: the name of the element

        :arg attrs: the attributes of the element as a dict

        :returns: StartTag token

        ÚStartTagr,   r'   )r   r.   r-   r0   s       r   ÚstartTagzTreeWalker.startTagE   s   € ð #ØØ&Øñð 	r   c                 ó   — d||dœS )z´Generates an EndTag token

        :arg namespace: the namespace of the token--can be ``None``

        :arg name: the name of the element

        :returns: EndTag token

        ÚEndTag)r%   r-   r.   r'   )r   r.   r-   s      r   ÚendTagzTreeWalker.endTagV   s   € ð !ØØ&ñ(ð 	(r   c              #   óð   K  — |}|j                  t        «      }|dt        |«      t        |«      z
   }|rd|dœ–— |}|j                  t        «      }|t        |«      d }|rd|dœ–— |rd|dœ–— yy­w)at  Generates SpaceCharacters and Characters tokens

        Depending on what's in the data, this generates one or more
        ``SpaceCharacters`` and ``Characters`` tokens.

        For example:

            >>> from html5lib.treewalkers.base import TreeWalker
            >>> # Give it an empty tree just so it instantiates
            >>> walker = TreeWalker([])
            >>> list(walker.text(''))
            []
            >>> list(walker.text('  '))
            [{u'data': '  ', u'type': u'SpaceCharacters'}]
            >>> list(walker.text(' abc '))  # doctest: +NORMALIZE_WHITESPACE
            [{u'data': ' ', u'type': u'SpaceCharacters'},
            {u'data': u'abc', u'type': u'Characters'},
            {u'data': u' ', u'type': u'SpaceCharacters'}]

        :arg data: the text data

        :returns: one or more ``SpaceCharacters`` and ``Characters`` tokens

        NÚSpaceCharactersr$   Ú
Characters)Úlstripr
   ÚlenÚrstrip)r   r&   ÚmiddleÚleftÚrights        r   ÚtextzTreeWalker.textd   s‡   è ø€ ð2 ˆØ—‘œ_Ó-ˆØÐ,”S˜“Y¤ V£Ñ,Ð-ˆÙØ,°dÑ;Ò;ØˆØ—‘œ_Ó-ˆØ”S˜“[�\Ð"ˆÙØ'°Ñ8Ò8ÙØ,°eÑ<Ó<ð ùs   ‚A4A6c                 ó   — d|dœS )zdGenerates a Comment token

        :arg data: the comment

        :returns: Comment token

        ÚCommentr$   r'   )r   r&   s     r   ÚcommentzTreeWalker.commentŠ   s   € ð "¨4Ñ0Ð0r   Nc                 ó   — d|||dœS )zŒGenerates a Doctype token

        :arg name:

        :arg publicId:

        :arg systemId:

        :returns: the Doctype token

        ÚDoctype)r%   r-   ÚpublicIdÚsystemIdr'   )r   r-   rH   rI   s       r   ÚdoctypezTreeWalker.doctype”   s   € ð "ØØ$Ø$ñ&ð 	&r   c                 ó   — d|dœS )zjGenerates an Entity token

        :arg name: the entity name

        :returns: an Entity token

        ÚEntity)r%   r-   r'   )r   r-   s     r   ÚentityzTreeWalker.entity¥   s   € ð !¨$Ñ/Ð/r   c                 ó*   — | j                  d|z   «      S )zHandles unknown node typeszUnknown node type: r/   )r   ÚnodeTypes     r   ÚunknownzTreeWalker.unknown¯   s   € à�z‰zÐ/°(Ñ:Ó;Ð;r   )F)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r)   r2   r5   r8   rB   rE   rJ   rM   rP   r'   r   r   r   r      s?   „ ñòò"ò7ó:ò*ò"(ò$=òL1ó&ò"0ó<r   r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r   c                 ó   — t         ‚r   r   ©r   Únodes     r   ÚgetNodeDetailsz%NonRecursiveTreeWalker.getNodeDetailsµ   r!   r   c                 ó   — t         ‚r   r   rW   s     r   ÚgetFirstChildz$NonRecursiveTreeWalker.getFirstChild¸   r!   r   c                 ó   — t         ‚r   r   rW   s     r   ÚgetNextSiblingz%NonRecursiveTreeWalker.getNextSibling»   r!   r   c                 ó   — t         ‚r   r   rW   s     r   ÚgetParentNodez$NonRecursiveTreeWalker.getParentNode¾   r!   r   c              #   ó¾  K  — | j                   }|��Ê| j                  |«      }|d   |dd  }}d}|t        k(  r | j                  |Ž –— nà|t        k(  r | j
                  |Ž D ]  }|–— Œ n¾|t        k(  rS|\  }}}}|r|t        d   k(  r(|t        v r | j                  ||||«      D ]  }|–— Œ d}nx| j                  |||«      –— nb|t        k(  r| j                  |d   «      –— nB|t        k(  r| j                  |d   «      –— n"|t        k(  rd}n| j!                  |d   «      –— |r| j#                  |«      }	nd }	|	�|	}n’|��| j                  |«      }|d   |dd  }}|t        k(  r1|\  }}}}|r|t        d   k7  s|t        vr| j%                  ||«      –— | j                   |u rd }n*| j'                  |«      }
|
�|
}n| j)                  |«      }|�Œ�|��ŒÉy y ­w)Nr   é   FÚhtmlT)r   rY   r   rJ   r   rB   r   r   r	   r2   r5   r   rE   r   rM   r   rP   r[   r8   r]   r_   )r   ÚcurrentNodeÚdetailsr%   r1   Útokenr.   r-   Ú
attributesÚ
firstChildÚnextSiblings              r   r    zNonRecursiveTreeWalker.__iter__Á   s  è ø€ Ø—i‘iˆØÑ%Ø×)Ñ)¨+Ó6ˆGØ# A™J¨°°¨�'ˆDØˆKà”wŠØ"�d—l‘l GÐ,Ó,àœ’Ø&˜TŸY™Y¨Ð0ò  �EØ“Kñ ð œ’Ø;BÑ8�	˜4 ¨[Ù! Y´*¸VÑ2DÒ%DÈ$ÔR^ÑJ^Ø!%§¡¨y¸$À
Ø/:ó"<ò $˜à#›ð$ð #(‘KàŸ-™-¨	°4¸ÓDÓDàœ’Ø—l‘l 7¨1¡:Ó.Ó.àœ’Ø—k‘k '¨!¡*Ó-Ó-àœÒ!Ø"‘ð —l‘l 7¨1¡:Ó.Ò.áØ!×/Ñ/°Ó<‘
à!�
àÐ%Ø(‘à!Ð-Ø"×1Ñ1°+Ó>�GØ$+¨A¡J°¸¸°˜'�DØœw’ØCJÑ@˜	 4¨°[Ù%¨)´zÀ&Ñ7IÒ*IÈdÔZfÑNfØ"&§+¡+¨i¸Ó">Ò>Ø—y‘y KÑ/Ø&*˜ØØ"&×"5Ñ"5°kÓ"B�KØ"Ð.Ø&1˜Øà&*×&8Ñ&8¸Ó&E˜ð "Ñ-ðU Ô%ùs   ‚GGÇGÇGN)rQ   rR   rS   rY   r[   r]   r_   r    r'   r   r   r   r   ´   s   „ ò"ò"ò"ò"ó;Fr   r   N)Ú
__future__r   r   r   Úxml.domr   Ú	constantsr   r	   r
   Ú__all__ÚDOCUMENT_NODEr   ÚDOCUMENT_TYPE_NODEr   Ú	TEXT_NODEr   ÚELEMENT_NODEr   ÚCOMMENT_NODEr   ÚENTITY_NODEr   r   ÚjoinÚobjectr   r   r'   r   r   ú<module>ru      s�   ðß BÑ Bå ß AÑ Aò3€ð ×Ñ€Ø
×
!Ñ
!€Ø‡~�~€Ø
×
Ñ
€Ø
×
Ñ
€Ø	×	Ñ	€Ø
€à—'‘'˜/Ó*€ô]<�ô ]<ô@HF˜Zõ HFr   