§
    ŒŸjä  ã                  óz   — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZ g d¢Zdd„Zdd„Zdd„Zdd„Zdd„ZdS )z¿
Utilities for manipulating formatted text.

When ``to_formatted_text`` has been called, we get a list of ``(style, text)``
tuples. This file contains functions for manipulating such a list.
é    )Úannotations)ÚIterableÚcast©Ú
get_cwidthé   )ÚAnyFormattedTextÚOneStyleAndTextTupleÚStyleAndTextTuplesÚto_formatted_text)Úto_plain_textÚfragment_list_lenÚfragment_list_widthÚfragment_list_to_textÚsplit_linesÚvaluer	   ÚreturnÚstrc                ó:   — t          t          | ¦  «        ¦  «        S )z?
    Turn any kind of formatted text back into plain text.
    )r   r   )r   s    úp/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/prompt_toolkit/formatted_text/utils.pyr   r      s   € õ !Õ!2°5Ñ!9Ô!9Ñ:Ô:Ð:ó    Ú	fragmentsr   Úintc                ó>   ‡— dŠt          ˆfd„| D ¦   «         ¦  «        S )z²
    Return the amount of characters in this text fragment list.

    :param fragments: List of ``(style_str, text)`` or
        ``(style_str, text, mouse_handler)`` tuples.
    ú[ZeroWidthEscape]c              3  óV   •K  — | ]#}‰|d          v¯t          |d         ¦  «        V — Œ$dS ©r   r   N)Úlen©Ú.0ÚitemÚZeroWidthEscapes     €r   ú	<genexpr>z$fragment_list_len.<locals>.<genexpr>-   s<   øè è € ÐTÐT °_ÈDÐQRÌGÐ5SÐ5S�s�4˜”7‰|Œ|Ð5SÐ5SÐ5SÐ5SÐTÐTr   ©Úsum©r   r"   s    @r   r   r   %   s-   ø€ ð *€OÝÐTÐTÐTÐT¨	ÐTÑTÔTÑTÔTÐTr   c                ó>   ‡— dŠt          ˆfd„| D ¦   «         ¦  «        S )zÞ
    Return the character width of this text fragment list.
    (Take double width characters into account.)

    :param fragments: List of ``(style_str, text)`` or
        ``(style_str, text, mouse_handler)`` tuples.
    r   c              3  ó`   •K  — | ](}|d          D ]}‰|d         v¯t          |¦  «        V — ŒŒ)dS )r   r   Nr   )r    r!   Úcr"   s      €r   r#   z&fragment_list_width.<locals>.<genexpr>9   s_   øè è € ð ð àØ�a”ðð ð Ø $ q¤'Ð)Ð)õ 	�1‰Œð *Ð)Ð)Ð)Ð)ð	ð r   r$   r&   s    @r   r   r   0   sB   ø€ ð *€OÝð ð ð ð àðñ ô ñ ô ð r   c                óJ   ‡— dŠd                      ˆfd„| D ¦   «         ¦  «        S )zœ
    Concatenate all the text parts again.

    :param fragments: List of ``(style_str, text)`` or
        ``(style_str, text, mouse_handler)`` tuples.
    r   Ú c              3  ó<   •K  — | ]}‰|d          v¯|d         V — ŒdS r   © r   s     €r   r#   z(fragment_list_to_text.<locals>.<genexpr>I   s6   øè è € ÐSÐS˜t°OÈ4ÐPQÌ7Ð4RÐ4R�4˜”7Ð4RÐ4RÐ4RÐ4RÐSÐSr   )Újoinr&   s    @r   r   r   A   s1   ø€ ð *€OØ�7Š7ÐSÐSÐSÐS yÐSÑSÔSÑSÔSÐSr   úIterable[OneStyleAndTextTuple]úIterable[StyleAndTextTuples]c           	   #  ó6  K  — g }| D ]�^}}}|                      d¦  «        }|dd…         D ]5}|                     t          t          ||g|¢R ¦  «        ¦  «         |V — g }Œ6|                     t          t          ||d         g|¢R ¦  «        ¦  «         ŒŽ|V — dS )a  
    Take a single list of (style_str, text) tuples and yield one such list for each
    line. Just like str.split, this will yield at least one item.

    :param fragments: Iterable of ``(style_str, text)`` or
        ``(style_str, text, mouse_handler)`` tuples.
    ú
Néÿÿÿÿ)ÚsplitÚappendr   r
   )r   ÚlineÚstyleÚstringÚmouse_handlerÚpartsÚparts          r   r   r   L   sÇ   è è € ð  "€Dà)2ð Tð TÐ%ˆˆv˜Ø—’˜TÑ"Ô"ˆà˜#˜2˜#”Jð 	ð 	ˆDØ�KŠK�Õ1°E¸4Ð3PÀ-Ð3PÐ3PÑQÔQÑRÔRÐRØˆJˆJˆJØˆDˆDà�Š•DÕ-°°u¸R´yÐ/QÀ=Ð/QÐ/QÑRÔRÑSÔSÐSÐSð €J€J€J€J€Jr   N)r   r	   r   r   )r   r   r   r   )r   r   r   r   )r   r/   r   r0   )Ú__doc__Ú
__future__r   Útypingr   r   Úprompt_toolkit.utilsr   Úbaser	   r
   r   r   Ú__all__r   r   r   r   r   r-   r   r   ú<module>rB      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ðð ð €ð;ð ;ð ;ð ;ðUð Uð Uð Uðð ð ð ð"Tð Tð Tð Tðð ð ð ð ð r   