o
    eOd                     @   s  d dl mZmZmZ d dlmZ d dlmZmZ ddl	m
Z
 dZG dd deZd	d
 ZG dd deZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd deZe ZG dd  d eZe ZG d!d" d"eZe ZG d#d$ d$eZe ZG d%d& d&eZe Zed'd( e  ! D Z"G d)d* d*eZ#G d+d, d,e#Z$e$ Z$G d-d. d.e#Z%e% Z%G d/d0 d0e#Z&e& Z&G d1d2 d2e#Z'e' Z'G d3d4 d4eZ(G d5d6 d6e(Z)e)d7d8d9Z*e(d7d8d9Z*dDd;d<Z+d=d> Z,e-d?krde.d@dAe*/ f  e.d@d$e+e*e*j0f  e"D ]\Z1Z2e2e*Z3e.d@e1e+e*e3dBf  qEe)dCZ4ee4_0dS dS )E    )absolute_importprint_functionunicode_literalsN)biterensure_unicode   )wordmatcherFc                   @   s   e Zd ZdS )NotAWordErrorN)__name__
__module____qualname__ r   r   ND:\Projects\ConvertPro\env\Lib\site-packages\pyreadline3/lineeditor/lineobj.pyr	      s    r	   c                 C   s   t | dkr| S d S Nr   ord)cr   r   r   
quote_char   s   r   c                   @      e Zd Zdd ZdS )LinePositionerc                 C      t d d S NzBase class !!!NotImplementedErrorselfliner   r   r   __call__       zLinePositioner.__call__Nr
   r   r   r   r   r   r   r   r          r   c                   @   r   )NextCharc                 C   s    |j t|jk r|j d S |j S Nr   )pointlenline_bufferr   r   r   r   r   %   s   
zNextChar.__call__Nr   r   r   r   r   r!   $   r    r!   c                   @   r   )PrevCharc                 C   s   |j dkr
|j d S |j S Nr   r   r#   r   r   r   r   r   0   s   

zPrevChar.__call__Nr   r   r   r   r   r&   /   r    r&   c                   @   r   )NextWordStartc                 C      | |j|j|j S N)next_start_segmentr%   is_word_tokenr#   r   r   r   r   r   ;      zNextWordStart.__call__Nr   r   r   r   r   r)   :   r    r)   c                   @   r   )NextWordEndc                 C   r*   r+   )next_end_segmentr%   r-   r#   r   r   r   r   r   F   r.   zNextWordEnd.__call__Nr   r   r   r   r   r/   E   r    r/   c                   @   r   )PrevWordStartc                 C   r*   r+   )prev_start_segmentr%   r-   r#   r   r   r   r   r   Q   r.   zPrevWordStart.__call__Nr   r   r   r   r   r1   P   r    r1   c                   @   r   )	WordStartc                 C   sf   | | t|t|d  r/t|dkr,| | t|d t| r,t|S |jS td)Nr   r   Point is not in a word)r-   get_line_textPointr1   r#   r	   r   r   r   r   r   \   s   zWordStart.__call__Nr   r   r   r   r   r3   [   r    r3   c                   @   r   )WordEndc                 C   s^   | | t|t|d  r+| | t|d t|d  r(t|S |jS td)Nr      r4   )r-   r5   r6   r/   r#   r	   r   r   r   r   r   m   s   zWordEnd.__call__Nr   r   r   r   r   r7   l   r    r7   c                   @   r   )PrevWordEndc                 C   r*   r+   )prev_end_segmentr%   r-   r#   r   r   r   r   r      r.   zPrevWordEnd.__call__Nr   r   r   r   r   r9   ~   r    r9   c                   @   r   )	PrevSpacec                 C   s   |j }||d |  dkr3|dkr3||d |  dkr3|d8 }|dkr3||d |  dks|dkrW||d |  dkrW|d8 }|dkrW||d |  dksC|S )Nr    r   )r#   r5   )r   r   r#   r   r   r   r      s       zPrevSpace.__call__Nr   r   r   r   r   r;      r    r;   c                   @   r   )StartOfLinec                 C   s   dS r   r   r   r   r   r   r         zStartOfLine.__call__Nr   r   r   r   r   r=      r    r=   c                   @   r   )	EndOfLinec                 C   s
   t |jS r+   r$   r%   r   r   r   r   r         
zEndOfLine.__call__Nr   r   r   r   r   r?      r    r?   c                   @   r   )r6   c                 C      |j S r+   r(   r   r   r   r   r         zPoint.__call__Nr   r   r   r   r   r6      r    r6   c                   @   r   )Markc                 C   rB   r+   )markr   r   r   r   r      rC   zMark.__call__Nr   r   r   r   r   rD      r    rD   c                 C   s&   g | ]\}}t |tr|jj|fqS r   )
isinstancer   	__class__r
   ).0keyvaluer   r   r   
<listcomp>   s    rK   c                   @   r   )	LineSlicec                 C   r   r   r   r   r   r   r   r      r   zLineSlice.__call__Nr   r   r   r   r   rL      r    rL   c                   @   r   )CurrentWordc                 C   s   t t|t|d S r+   )slicer3   r7   r   r   r   r   r      s   zCurrentWord.__call__Nr   r   r   r   r   rM      r    rM   c                   @   r   )NextWordc                 C   s&   t |}t|_|j}t|}t||S r+   )TextLiner)   r#   r/   rN   )r   r   workstartstopr   r   r   r      
   
zNextWord.__call__Nr   r   r   r   r   rO      r    rO   c                   @   r   )PrevWordc                 C   s&   t |}t|_|j}t|}t||S r+   )rP   r9   r#   r1   rN   )r   r   rQ   rS   rR   r   r   r   r      rT   zPrevWord.__call__Nr   r   r   r   r   rU      r    rU   c                   @   r   )
PointSlicec                 C   s   t t|t|d d S r"   )rN   r6   r   r   r   r   r      s   zPointSlice.__call__Nr   r   r   r   r   rV      r    rV   c                   @   s   e Zd Zd5ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
ee
e	ZefddZdd Zdd Zd6ddZdd Zdd Zd7dd Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZdS )8rP   Nc                 C   s   g | _ d| _d| _g | _d| _t|tr5|j d d  | _ |d u r%|j| _n|| _|d u r1|j| _n|| _n| | |d u rBd| _n|| _|d u rMd| _n|| _t	j
| _
t	j| _t	j| _t	j| _t	j| _d S )Nr   F)r%   _pointrE   
undo_stack	overwriterF   rP   r#   _insert_textr   r-   r,   r0   r2   r:   r   Ztxtstrr#   rE   r   r   r   __init__   s2   



zTextLine.__init__c                 C   sF   |   }| jr|| jd   kr| j| jd _d S | j|   d S NrW   )r5   rY   r#   appendcopy)r   Zl_textr   r   r   	push_undo  s   zTextLine.push_undoc                 C   s@   t | jdkr| j  |   | j  d S |   g | _d S )Nr8   )r$   rY   popset_top_undo
reset_liner   r   r   r   pop_undo  s   

zTextLine.pop_undoc                 C   s2   | j r| j d }|j| _|j| _|j| _d S 	 d S r^   )rY   r%   r#   rE   )r   Zundor   r   r   rc     s   
zTextLine.set_top_undoc                 C   s   d| j | j| jf S )NzTextLine("%s",point=%s,mark=%s))r%   r#   rE   re   r   r   r   __repr__'  s   zTextLine.__repr__c                 C   s
   |  | S r+   rG   re   r   r   r   r`   +  rA   zTextLine.copyc                 C   sF   t |tr	|| }|t| jksJ |t| jkrt| j}|| _d S r+   )rF   r   r$   r%   rX   )r   rJ   r   r   r   	set_point.  s   


zTextLine.set_pointc                 C   s   | j S r+   )rX   re   r   r   r   	get_point6  rC   zTextLine.get_pointc                 C   sL   t dd | d| jD }t | d|  | d| jdd  | S )z4Return the visible width of the text up to position.c                 S   s,   g | ]}d t |  krdkrn ndqS )i   i  Nr   rH   r   r   r   r   rK   =  s
    z/TextLine.visible_line_width.<locals>.<listcomp>N	   )r$   r%   quoted_textcount)r   positionZextra_char_widthr   r   r   visible_line_width:  s   zTextLine.visible_line_widthc                 C   s    dd | j D }dtt|S )Nc                 S   s   g | ]}t |qS r   )r   rk   r   r   r   rK   G      z(TextLine.quoted_text.<locals>.<listcomp> )r%   joinmapr   )r   quotedr   r   r   rn   F  s   zTextLine.quoted_textc                 C   s   | j }ttt|}d|S )Nrs   )r%   listru   r   rt   )r   bufr   r   r   r5   J  s   
zTextLine.get_line_textc                 C   s6   dd t |D | _|d u rt| j| _d S || _d S )Nc                 S   s   g | ]}|qS r   r   rk   r   r   r   rK   P  s    z%TextLine.set_line.<locals>.<listcomp>)strr%   r$   r#   )r   textcursorr   r   r   set_lineO  s   
zTextLine.set_linec                 C   s   g | _ d| _d S r   )r%   r#   re   r   r   r   rd   V     
zTextLine.reset_linec                 C   s   t | j| _d S r+   )r$   r%   r#   re   r   r   r   end_of_lineZ  s   zTextLine.end_of_liner   c                 C   sj   || }| j rt|D ]}|| j| j< |  jd7  _qd S t|D ]}| j| j| |  jd7  _q!d S r"   )rZ   r   r%   r#   insert)r   rz   argumentr   r   r   r   r[   ]  s   zTextLine._insert_textc                 C   s   t |tr	|| }t |trV|jd u rntd|jd u r"t| }nt |jtr.|| }n|j}|jd u r;t	| }nt |jtrG|| }n|j}| j
| j|| ddS t |trb| j||  S t |trktd| j| S )Nzstep is not "None"r   r(   z'Cannot use step in line buffer indexing)rF   rL   rN   stepRuntimeErrorrR   r=   r   rS   r?   rG   r%   tuple
IndexError)r   rI   rR   rS   r   r   r   __getitem__i  s,   









zTextLine.__getitem__c                 C   s   | j }t|tr|| }t|tr:|j}|j}t|tr!|| }n|d u r'd}t|tr1|| }n|d u r9t| }nt|trH|| }|d }n|}|d }| jd | }| j|d  }|| | _||krn|||  | _ d S ||kr{||kr}|| _ d S d S d S r'   )	r#   rF   rL   rN   rR   rS   r   r?   r%   )r   rI   r#   rR   rS   prevrestr   r   r   __delitem__  s8   









zTextLine.__delitem__c                 C   s   t |tr	|| }t |tr|j}|j}nt |tr#|| }|d }n|}|d }| jd | }| |j}| j|d  }|| | }t|t| krPt| | _	|| _d S r"   )
rF   rL   rN   rR   rS   r   r%   rG   r$   r#   )r   rI   rJ   rR   rS   r   r   outr   r   r   __setitem__  s"   





zTextLine.__setitem__c                 C   s
   t | jS r+   r@   re   r   r   r   __len__  rA   zTextLine.__len__c                 C      dd | j D | _ | S )Nc                 S      g | ]}|  qS r   )upperrH   xr   r   r   rK     rr   z"TextLine.upper.<locals>.<listcomp>r%   re   r   r   r   r        zTextLine.upperc                 C   r   )Nc                 S   r   r   )lowerr   r   r   r   rK     rr   z"TextLine.lower.<locals>.<listcomp>r   re   r   r   r   r     r   zTextLine.lowerc                 C   s   |  |   | j | S r+   )r|   r5   
capitalizer#   re   r   r   r   r     s   zTextLine.capitalizec                 C      |   |S r+   )r5   
startswithr   txtr   r   r   r        zTextLine.startswithc                 C   r   r+   )r5   endswithr   r   r   r   r     r   zTextLine.endswithc                 C   s   ||   v S r+   )r5   r   r   r   r   __contains__  r   zTextLine.__contains__NNr+   r   )r
   r   r   r]   ra   rf   rc   rg   r`   ri   rj   propertyr#   r6   rq   rn   r5   r|   rd   r~   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP      s6    
!		


 rP   c                       s  e Zd Zdm fdd	Zdd ZdnddZd	d
 Zdd Zdd ZdnddZ	dnddZ
dnddZdnddZdnddZdnddZdd Zdd Zdndd Zdnd!d"Zdnd#d$Zdnd%d&Zdnd'd(Zdnd)d*Zd+d, Zdnd-d.Zdnd/d0Zdnd1d2Zdnd3d4Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)dQdR Z*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1dadb Z2dcdd Z3dedf Z4dgdh Z5didj Z6dkdl Z7  Z8S )oReadLineTextBufferNc                    s0   t t| ||| d| _d| _d| _g | _d S )NTrW   )superr   r]   enable_win32_clipboardselection_markenable_selection	kill_ringr\   rh   r   r   r]     s
   
zReadLineTextBuffer.__init__c                 C   s   d| j | j| j| jf S )Nz;ReadLineTextBuffer("%s",point=%s,mark=%s,selection_mark=%s))r%   r#   rE   r   re   r   r   r   rg     s   zReadLineTextBuffer.__repr__r   c                 C   s   |    d| _| || d S r^   )delete_selectionr   r[   )r   charr   r   r   r   insert_text  s   zReadLineTextBuffer.insert_textc                 C   s   | j rt|   d S d S r+   )r   	clipboardZset_clipboard_textr5   re   r   r   r   to_clipboard  s   zReadLineTextBuffer.to_clipboardc                 C      d| _ t| _d S r^   )r   r=   r#   re   r   r   r   beginning_of_line  r}   z$ReadLineTextBuffer.beginning_of_linec                 C   r   r^   )r   r?   r#   re   r   r   r   r~     r}   zReadLineTextBuffer.end_of_linec                 C   2   |dk r
|  |  d| _t|D ]}t| _qd S Nr   rW   )backward_charr   ranger!   r#   r   r   _r   r   r   forward_char     zReadLineTextBuffer.forward_charc                 C   r   r   )r   r   r   r&   r#   r   r   r   r   r     r   z ReadLineTextBuffer.backward_charc                 C   r   r   )backward_wordr   r   r)   r#   r   r   r   r   forward_word  r   zReadLineTextBuffer.forward_wordc                 C   r   r   )r   r   r   r1   r#   r   r   r   r   r     r   z ReadLineTextBuffer.backward_wordc                 C   r   r   )backward_word_endr   r   r/   r#   r   r   r   r   forward_word_end  r   z#ReadLineTextBuffer.forward_word_endc                 C   r   r   )r   r   r   r/   r#   r   r   r   r   r     r   z$ReadLineTextBuffer.backward_word_endc                 C   "   | j r| jdk r| j| _t| _d S r   )r   r   r#   r=   re   r   r   r   "beginning_of_line_extend_selection     
z5ReadLineTextBuffer.beginning_of_line_extend_selectionc                 C   r   r   )r   r   r#   r?   re   r   r   r   end_of_line_extend_selection#  r   z/ReadLineTextBuffer.end_of_line_extend_selectionc                 C   D   |dk r
|  |  | jr| jdk r| j| _t|D ]}t| _qd S r   )backward_char_extend_selectionr   r   r#   r   r!   r   r   r   r   forward_char_extend_selection(     z0ReadLineTextBuffer.forward_char_extend_selectionc                 C   r   r   )r   r   r   r#   r   r&   r   r   r   r   r   0  r   z1ReadLineTextBuffer.backward_char_extend_selectionc                 C   r   r   )backward_word_extend_selectionr   r   r#   r   r)   r   r   r   r   forward_word_extend_selection8  r   z0ReadLineTextBuffer.forward_word_extend_selectionc                 C   r   r   )r   r   r   r#   r   r1   r   r   r   r   r   @  r   z1ReadLineTextBuffer.backward_word_extend_selectionc                 C   r   r   )"backward_word_end_extend_selectionr   r   r#   r   r/   r   r   r   r   !forward_word_end_extend_selectionH  r   z4ReadLineTextBuffer.forward_word_end_extend_selectionc                 C   r   r   )r   r   r   r#   r   r9   r   r   r   r   r   P  r   z5ReadLineTextBuffer.backward_word_end_extend_selectionc                 C   sV   | j r&| jdkr&| j| jk r| | j| j= d| _dS | | j| j= d| _dS d| _dS )Nr   rW   TF)r   r   r#   re   r   r   r   r   Z  s   z#ReadLineTextBuffer.delete_selectionc                 C   s<   |dk r
|  |  |  r|d8 }t|D ]}| t= qd S r'   )backward_delete_charr   r   r6   r   r   r   r   delete_charg  s   zReadLineTextBuffer.delete_charc                 C   sP   |dk r
|  |  |  r|d8 }t|D ]}| jdkr%|   |    qd S r'   )r   r   r   r#   r   r   r   r   r   r   o  s   
z'ReadLineTextBuffer.backward_delete_charc                 C   @   |dk r
|  |  |  r|d8 }t|D ]}| tt= qd S r'   )backward_delete_wordr   r   r6   r)   r   r   r   r   forward_delete_wordy     z&ReadLineTextBuffer.forward_delete_wordc                 C   r   r'   )r   r   r   r1   r6   r   r   r   r   r     r   z'ReadLineTextBuffer.backward_delete_wordc                 C   s   |   s| t= d| _d S r^   )r   rM   r   re   r   r   r   delete_current_word  s   
z&ReadLineTextBuffer.delete_current_wordc                 C   s    | t  dv r| tt= d| _d S )Nz 	rW   )r6   r9   r)   r   re   r   r   r   delete_horizontal_space  s   

z*ReadLineTextBuffer.delete_horizontal_spacec                 C   8   | j }z| t  | t< || _ W d S  ty   Y d S w r+   )r#   rM   r   r	   r   pr   r   r   upcase_word     zReadLineTextBuffer.upcase_wordc                 C   r   r+   )r#   rM   r   r	   r   r   r   r   downcase_word  r   z ReadLineTextBuffer.downcase_wordc                 C   r   r+   )r#   rM   r   r	   r   r   r   r   capitalize_word  r   z"ReadLineTextBuffer.capitalize_wordc                 C   sX   t | }|dkr
d S |t| kr|d }|d }| | | | | |< | |< |d | _d S r'   )r6   r$   r#   )r   p2p1r   r   r   transpose_chars  s   z"ReadLineTextBuffer.transpose_charsc                 C   s   t | }t | }| jt| krt|_t||_nt|_t|_t|}t|}|j}|j}|tt | ||< |tt | ||< || _d S r+   )rP   r#   r$   r1   r)   r/   r6   )r   Zword1Zword2Zstop1Zstop2Zstart1Zstart2r   r   r   transpose_words  s   
z"ReadLineTextBuffer.transpose_wordsc                 C   s&   |  | | jd   | j| jd = d S r+   )add_to_kill_ringr#   r%   re   r   r   r   	kill_line  s   zReadLineTextBuffer.kill_linec                 C   s    |  | d d   | d d = d S r+   )r   re   r   r   r   kill_whole_line  s   z"ReadLineTextBuffer.kill_whole_linec                 C      | t t= d S r+   r=   r6   re   r   r   r   backward_kill_line  r   z%ReadLineTextBuffer.backward_kill_linec                 C   r   r+   r   re   r   r   r   unix_line_discard  r   z$ReadLineTextBuffer.unix_line_discardc                 C   s   | t t= dS )Kills to next word endingN)r6   r/   re   r   r   r   	kill_word  s   zReadLineTextBuffer.kill_wordc                 C      |   s	| tt= d| _dS r   rW   N)r   r1   r6   r   re   r   r   r   backward_kill_word     

z%ReadLineTextBuffer.backward_kill_wordc                 C   r   r   )r   r6   r/   r   re   r   r   r   forward_kill_word  r   z$ReadLineTextBuffer.forward_kill_wordc                 C   s   |   s	| tt= d| _d S r^   )r   r;   r6   r   re   r   r   r   unix_word_rubout  s   

z#ReadLineTextBuffer.unix_word_ruboutc                 C      d S r+   r   re   r   r   r   kill_region  r>   zReadLineTextBuffer.kill_regionc                 C   r   r+   r   re   r   r   r   copy_region_as_kill  r>   z&ReadLineTextBuffer.copy_region_as_killc                 C   r   r+   r   re   r   r   r   copy_backward_word  r>   z%ReadLineTextBuffer.copy_backward_wordc                 C   r   r+   r   re   r   r   r   copy_forward_word  r>   z$ReadLineTextBuffer.copy_forward_wordc                 C   s   |    d S r+   )paste_from_kill_ringre   r   r   r   yank  r   zReadLineTextBuffer.yankc                 C   r   r+   r   re   r   r   r   yank_pop  r>   zReadLineTextBuffer.yank_popc                 C   s   | j | _d S r+   )r#   rE   re   r   r   r   set_mark  r   zReadLineTextBuffer.set_markc                 C   r   r+   r   re   r   r   r   exchange_point_and_mark  r>   z*ReadLineTextBuffer.exchange_point_and_markc                 C   sr   | j r7t| jt| j}t| jt| j}| jdkrdS t||}t||}d| j|| }t	| dS dS )5Copy the text in the region to the windows clipboard.rW   Nrs   )
r   minrE   r$   r%   r#   maxrt   r   SetClipboardText)r   rE   r{   beginendtoclipboardr   r   r   copy_region_to_clipboard  s   


z+ReadLineTextBuffer.copy_region_to_clipboardc                 C   s   | j r?| jrA| jdkrCt| jt| j}t| jt| j}| jdkr$dS t||}t||}d| j|| }t	
| dS dS dS dS )r   r   rW   Nrs   )r   r   r   r   r$   r%   r#   r   rt   r   r   )r   r   r{   r   r   r   r   r   r   copy_selection_to_clipboard  s   



z.ReadLineTextBuffer.copy_selection_to_clipboardc                 C   s   |    |   d S r+   )r   r   re   r   r   r   cut_selection_to_clipboard   s   z-ReadLineTextBuffer.cut_selection_to_clipboardc                 C   s"   |g| _ trt|  d S d S r+   )r   kill_ring_to_clipboardr   r   r5   r   r   r   r   r   '  s   z#ReadLineTextBuffer.add_to_kill_ringc                 C   s   | j r| | j d  d S d S r   )r   r   re   r   r   r   r   ,  s   z'ReadLineTextBuffer.paste_from_kill_ringr   r   )9r
   r   r   r]   rg   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   rh   r   r     sl    


















	
r   zasff asFArw  ewrWErhg   r(   .c                    s8   t | j}fdd d fddt|d D S )Nc                    s   | r S dS )Nr<   r   )Zis_bool)chrr   r   choice9  s   zshow_pos.<locals>.choicers   c                    s   g | ]} |kqS r   r   )rH   idx)r   posr   r   rK   >  s    zshow_pos.<locals>.<listcomp>r   )r$   r%   rt   r   )buffr  r   Zl_nr   )r   r   r  r   show_pos6  s   
"r  c                 C   s   t d|jj dd | j}t d|  |D ]/}t| |d}dgt|d  }||}||kr5d||< nd	||< d
||< t dd|  qd S )Nz %s (   -z"%s"r(   r<   r   &r   ^rs   )printrG   r
   centerr%   rP   r$   rt   )r  ZpointsZ
positionerZbuffstrr#   br   r  r   r   r   test_positionerA  s   
r  __main__z
%-15s "%s"ZPositionr  zkjjk asads   asad)r   )5
__future__r   r   r   Zpyreadline3.clipboardr   Zpyreadline3.unicode_helperr   r   rs   r   r   r   r	   r   objectr   r!   r&   r)   r/   r1   r3   r7   r9   r;   r=   r?   r6   rD   ksortedglobalsitemsZall_positionersrL   rM   rO   rU   rV   rP   r   qr  r  r
   r  r5   r#   nameZpositioner_qZpos_qZl_tr   r   r   r   <module>   s   		 h  a


