ó
    OÎhä  ã                  óŠ   • S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	J
r
JrJr  / SQrSS jrSS	 jrSS
 jrSS jr    SS jrg)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                ó*   • [        [        U 5      5      $ )z7
Turn any kind of formatted text back into plain text.
)r   r   )Úvalues    Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/formatted_text/utils.pyr   r      s   € ô !Ô!2°5Ó!9Ó:Ð:ó    c                ó2   ^• Sm[        U4S jU  5       5      $ )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   >#   • U  H  nTUS    ;  d  M  [        US   5      v •  M      g7f©r   r   N)Úlen©Ú.0ÚitemÚZeroWidthEscapes     €r   Ú	<genexpr>Ú$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                ó2   ^• Sm[        U4S jU  5       5      $ )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  ój   >#   • U  H(  nUS      H  nTUS   ;  d  M  [        U5      v •  M     M*     g7f)r   r   Nr   )r   r   Úcr   s      €r   r   Ú&fragment_list_width.<locals>.<genexpr>9   s=   øé € ð âˆDØ�a•ˆAØ $ q¡'Ñ)ó 	Œ
�1�ˆáñ 	Úùs   ƒ3�3r!   r#   s    @r   r   r   0   s$   ø€ ð *€OÜô áóó ð r   c                ó>   ^• SmSR                  U4S jU  5       5      $ )zŒ
Concatenate all the text parts again.

:param fragments: List of ``(style_str, text)`` or
    ``(style_str, text, mouse_handler)`` tuples.
r   Ú c              3  óD   >#   • U  H  nTUS    ;  d  M  US   v •  M     g7fr   © r   s     €r   r   Ú(fragment_list_to_text.<locals>.<genexpr>I   s#   øé € ÐS¢y˜t°OÈ4ÐPQÉ7Ñ4R“7�4˜–7¢yùs   ƒ ” )Újoinr#   s    @r   r   r   A   s   ø€ ð *€OØ�7‰7ÔS¡yÓSÓSÐSr   c           	   #  ó  #   • / nU  Hq  tp#nUR                  S5      nUSS  H,  nUR                  [        [        X&/UQ75      5        Uv •  / nM.     UR                  [        [        X%S   /UQ75      5        Ms     Uv •  g7f)zø
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Ó"ˆà˜#˜2“JˆDØ�K‰KœÔ1°EÐ3PÀ-Ñ3PÓQÔRØŠJØŠDñ ð
 	�‰”DÔ-°¸R±yÐ/QÀ=Ñ/QÓRÖSñ *3ð ƒJùs   ‚A?BN)r   r	   ÚreturnÚstr)r$   r   r:   Úint)r$   r   r:   r;   )r$   zIterable[OneStyleAndTextTuple]r:   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>rC      sQ   ðñõ #ç !å +÷ó ò€ô;ôUôô"TðØ-ðà!õr   