
    Mh                    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    c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prompt_toolkit/formatted_text/utils.pyr   r      s     !!25!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_DQRG5S5Ss47||5S5S5S5S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StO4PQ74R4R474R4R4R4RSSr   )joinr&   s    @r   r   r   A   s1     *O77SSSSy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KK1E43P-3P3PQQRRRJJJDDD-uRy/Q=/Q/QRRSSSS JJJJJr   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   