§
    ¤”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                     e	¦  «        Z	 G d„ d	e¦  «        Z G d
„ de¦  «        ZdS )é    )Úabsolute_importÚdivisionÚunicode_literals)ÚNodeé   )Ú
namespacesÚvoidElementsÚspaceCharacters)	ÚDOCUMENTÚDOCTYPEÚTEXTÚELEMENTÚCOMMENTÚENTITYÚUNKNOWNÚ
TreeWalkerÚNonRecursiveTreeWalkerz<#UNKNOWN#>Ú c                   óX   — 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dS )r   z}Walks a tree yielding tokens

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

    c                 ó   — || _         dS )zCCreates a TreeWalker

        :arg tree: the tree to walk

        N)Útree)Úselfr   s     úh/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/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Ð6Ð6r   Fc              #   óR   K  — d|||dœV — |r|                       d¦  «        V — dS dS )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   s_   è è € ð "¨4Ø%Øðð ð 	ð 	ð 	ð ð 	:Ø—*’*Ð8Ñ9Ô9Ð9Ð9Ð9Ð9Ð9ð	:ð 	:r   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              #   ó0  K  — |}|                      t          ¦  «        }|dt          |¦  «        t          |¦  «        z
  …         }|rd|dœV — |}|                     t          ¦  «        }|t          |¦  «        d…         }|rd|dœV — |r	d|dœV — dS dS )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”Y¥ V¡¤Ñ,Ð,Ô-ˆØð 	<Ø,°dÐ;Ð;Ð;Ð;Ð;ØˆØ—’�_Ñ-Ô-ˆØ•S˜‘[”[�\�\Ô"ˆØð 	9Ø'°Ð8Ð8Ð8Ð8Ð8Øð 	=Ø,°eÐ<Ð<Ð<Ð<Ð<Ð<Ð<ð	=ð 	=r   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Ð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                 ó2   — |                       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ð 7ð 7ð:ð :ð :ð :ð*ð ð ð"(ð (ð (ð$=ð $=ð $=ðL1ð 1ð 1ð&ð &ð &ð &ð"0ð 0ð 0ð<ð <ð <ð <ð <r   r   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )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              #   óJ  K  — | j         }|��|                      |¦  «        }|d         |dd …         }}d}|t          k    r | j        |Ž V — �n|t          k    r | j        |Ž D ]}|V — Œnç|t          k    r_|\  }}}}|r|t          d         k    r+|t          v r"|  	                    ||||¦  «        D ]}|V — Œd}n—|  
                    |||¦  «        V — n}|t          k    r|                      |d         ¦  «        V — nT|t          k    r|                      |d         ¦  «        V — n+|t          k    rd}n|                      |d         ¦  «        V — |r|                      |¦  «        }	nd }	|	�|	}n¬|�ª|                      |¦  «        }|d         |dd …         }}|t          k    r;|\  }}}}|r|t          d         k    s	|t          vr|                      ||¦  «        V — | j         |u rd }n1|                      |¦  «        }
|
�|
}n|                      |¦  «        }|­ª|�­d S d S )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ˆØÑ%Ø×)Ò)¨+Ñ6Ô6ˆGØ# AœJ¨°°°¬�'ˆDØˆKà•wŠˆØ"�d”l GÐ,Ð,Ð,Ð,Ñ,à�’�Ø&˜TœY¨Ð0ð  ð  �EØ�K�K�K�Kð ð �’�Ø;BÑ8�	˜4 ¨[Ø!ð E Yµ*¸VÔ2DÒ%DÐ%DÈ$ÕR^ÐJ^ÐJ^Ø!%§¢¨y¸$À
Ø/:ñ"<ô "<ð $ð $˜à#˜˜˜˜Ø"'�K�KàŸ-š-¨	°4¸ÑDÔDÐDÐDÐDÐDà�’�Ø—l’l 7¨1¤:Ñ.Ô.Ð.Ð.Ð.Ð.à�’�Ø—k’k '¨!¤*Ñ-Ô-Ð-Ð-Ð-Ð-à�Ò!Ð!Ø"��ð —l’l 7¨1¤:Ñ.Ô.Ð.Ð.Ð.àð "Ø!×/Ò/°Ñ<Ô<�
�
à!�
àÐ%Ø(��à!Ð-Ø"×1Ò1°+Ñ>Ô>�GØ$+¨A¤J°¸¸¸´˜'�DØ�w’�ØCJÑ@˜	 4¨°[Ø%ð ?¨)µzÀ&Ô7IÒ*IÐ*IÈdÕZfÐNfÐNfØ"&§+¢+¨i¸Ñ">Ô">Ð>Ð>Ð>Ø”y KÐ/Ð/Ø&*˜ØØ"&×"5Ò"5°kÑ"BÔ"B�KØ"Ð.Ø&1˜Øà&*×&8Ò&8¸Ñ&EÔ&E˜ð "Ð-ðU Ñ%Ð%Ð%Ð%Ð%r   N)rQ   rR   rS   rY   r[   r]   r_   r    r'   r   r   r   r   ´   sd   € € € € € ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð;Fð ;Fð ;Fð ;Fð ;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Ð BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Að3ð 3ð 3€ð Ô€Ø
Ô
!€Ø„~€Ø
Ô
€Ø
Ô
€Ø	Ô	€Ø
€à—'’'˜/Ñ*Ô*€ð]<ð ]<ð ]<ð ]<ð ]<�ñ ]<ô ]<ð ]<ð@HFð HFð HFð HFð HF˜Zñ HFô HFð HFð HFð HFr   