Ë
    V.jä  ã                  ó€   — 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y)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_linesc                ó*   — t        t        | «      «      S )z?
    Turn any kind of formatted text back into plain text.
    )r   r   )Úvalues    úeC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/formatted_text/utils.pyr   r      s   € ô !Ô!2°5Ó!9Ó:Ð:ó    c                ó0   ‡— 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  óJ   •K  — | ]  }‰|d    vsŒt        |d   «      –— Œ y­w©r   r   N)Úlen©Ú.0ÚitemÚZeroWidthEscapes     €r   Ú	<genexpr>z$fragment_list_len.<locals>.<genexpr>-   s&   øè ø€ ÐT©	 °_ÈDÐQRÉGÒ5SŒs�4˜‘7�|©	ùs   ƒ#�#©Úsum©Ú	fragmentsr   s    @r   r   r   %   s   ø€ ð *€OÜÓT©	ÓTÓTÐTr   c                ó0   ‡— 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  óV   •K  — | ]   }|d    D ]  }‰|d   vrt        |«      –— Œ Œ" y­w)r   r   Nr   )r   r   Úcr   s      €r   r   z&fragment_list_width.<locals>.<genexpr>9   s:   øè ø€ ð áˆDØ�a”ˆAØ $ q¡'Ñ)ô 	�1�àð 	Ùùs   ƒ&)r    r"   s    @r   r   r   0   s$   ø€ ð *€OÜó áóó ð r   c                ó<   ‡— dŠdj                  ˆ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  ó8   •K  — | ]  }‰|d    vsŒ|d   –— Œ y­wr   © r   s     €r   r   z(fragment_list_to_text.<locals>.<genexpr>I   s"   øè ø€ ÐS¡y˜t°OÈ4ÐPQÉ7Ò4R�4˜•7¡yùs   ƒ�
)Újoinr"   s    @r   r   r   A   s   ø€ ð *€OØ�7‰7ÓS¡yÓSÓSÐSr   c           	   #  ó  K  — g }| D ]q  ^}}}|j                  d«      }|dd D ],  }|j                  t        t        ||g|¢­«      «       |–— g }Œ. |j                  t        t        ||d   g|¢­«      «       Œs |–— y­w)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Ð%ˆˆv˜Ø—‘˜TÓ"ˆà˜#˜2“JˆDØ�K‰KœÔ1°E¸4Ð3PÀ-Ñ3PÓQÔRØŠJØ‰Dð ð
 	�‰”DÔ-°°u¸R±yÐ/QÀ=Ñ/QÓRÕSð *3ð ƒJùs   ‚A>B N)r   r	   ÚreturnÚstr)r#   r   r7   Úint)r#   r   r7   r8   )r#   zIterable[OneStyleAndTextTuple]r7   zIterable[StyleAndTextTuples])Ú__doc__Ú
__future__r   Útypingr   r   Úprompt_toolkit.utilsr   Úbaser	   r
   r   r   Ú__all__r   r   r   r   r   r*   r   r   Ú<module>r@      sQ   ðñõ #ç !å +÷ó ò€ó;óUóó"TðØ-ðà!ôr   