o
    ÞË·e5  ã                   @   sF   d dl mZ d dlmZmZ ddlmZmZ dgZG dd„ deƒZ	dS )é    )Údeque)ÚDequeÚOptionalé   )Ú	ClipboardÚClipboardDataÚInMemoryClipboardc                   @   sX   e Zd ZdZ	ddee deddfdd„Zdeddfd	d
„Zdefdd„Z	ddd„Z
dS )r   z
    Default clipboard implementation.
    Just keep the data in memory.

    This implements a kill-ring, for Emacs mode.
    Né<   ÚdataÚmax_sizeÚreturnc                 C   s4   |dksJ ‚|| _ tƒ | _|d ur|  |¡ d S d S )Nr   )r   r   Ú_ringÚset_data)Úselfr
   r   © r   úY/var/www/ideatree/venv/lib/python3.10/site-packages/prompt_toolkit/clipboard/in_memory.pyÚ__init__   s   ÿzInMemoryClipboard.__init__c                 C   s>   | j  |¡ t| j ƒ| jkr| j  ¡  t| j ƒ| jksd S d S ©N)r   Ú
appendleftÚlenr   Úpop)r   r
   r   r   r   r      s   
ÿzInMemoryClipboard.set_datac                 C   s   | j r| j d S tƒ S )Nr   )r   r   ©r   r   r   r   Úget_data%   s   
zInMemoryClipboard.get_datac                 C   s    | j r| j  | j  ¡ ¡ d S d S r   )r   ÚappendÚpopleftr   r   r   r   Úrotate+   s   þzInMemoryClipboard.rotate)Nr	   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úintr   r   r   r   r   r   r   r   r      s    ÿÿÿ
þN)
Úcollectionsr   Útypingr   r   Úbaser   r   Ú__all__r   r   r   r   r   Ú<module>   s    ÿ