
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
yb:                 @   sf   d dl Z d dlZddlmZ G dd dZdd Zddd	ZG d
d dZdd Zdej	fddZ
dS )    N   )is_terminalc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TextPeckerc             C   s   || _ d| _d S )Nr   )stri)selfs r	   /usr/lib64/python3.6/nanorst.py__init__   s    zTextPecker.__init__c             C   s$   |  j |7  _ | j| j | | j  S )N)r   r   )r   nr	   r	   r
   read   s    zTextPecker.readc             C   s@   |dkr| j | j| j|  S | j | j| d | jd  S d S )Nr   r   )r   r   )r   r   r	   r	   r
   peek   s    zTextPecker.peekc             C   sF   d}| j }x6|t| jk r@| j| dkr@|| j| 7 }|d7 }qW |S )N 
r   )r   lenr   )r   outr   r	   r	   r
   peekline   s    zTextPecker.peeklinec             C   s   | j  }|  jt|7  _|S )N)r   r   r   )r   r   r	   r	   r
   readline   s    zTextPecker.readlineN)__name__
__module____qualname__r   r   r   r   r   r	   r	   r	   r
   r      s
   r   c             C   s   | dkr4|dkr4|dd| |j d |dd| nH|dd| |j | j  |j d |dd| |r||j | |j d d S )NZ	containerZexperimentaltextz**z++ Experimental ++z:
r   )writetitle)	directive	argumentsr   
state_hookr	   r	   r
   process_directive$   s    


r   c             C   s  |p
dd }|pi }d}d}t | } tj }d}x| jd}|sDP | jd}|dkr|dkrp| jd|krpq4| jd dkr
||kr||kr|||| |}q4||  kodkn  r||d	| d	}| jd q4||  kodkn  r||d
| d
}| jd q4| jd!j r|dkr| jddkr| jd d}	xL| jd}|dkrf| jd P |dkr~| jd qF|	| jd7 }	qFW y|j||	  W q4 tk
r   td|	 Y q4X q4|dkr
| jddkr
| jd ||d| d}|jd q4| jd"d#kr||  ko.dkn  r| jd | j	 j
d\}
}}| jd |s|
dkrtd}q4|
dkr4d}q4t|
|j || q4||kr||kr||d| d}|dkr4|jd$ q4|d
kr"||  kodkn  r"||d| d}| jd |dkr4|jd% q4|d	krd||  ko@dkn  rd||d| d}| jd q4|dkr||  kodkn  r| jddd dkr||d| d}|j| q4W |dkstd| |j S )&z
    Convert rST to a more human text form.

    This is a very loose conversion. No advanced rST features are supported.
    The generated output directly depends on the input (e.g. indentation of
    admonitions).
    c             S   s   d S )Nr	   )	old_state	new_stater   r	   r	   r
   <lambda>;   s    zrst_to_text.<locals>.<lambda>r   replace*`r   \z**z``:   zref:`r   r   um   Undefined reference in Archiver help: %r — please add reference substitution to 'rst_plain_text_references'   z:
z
code-block

.z::znanorst: inline-fillZfillznanorst: inline-replace    Nz    z>Invalid final state %r (This usually indicates unmatched */**))r#   r$   r-   )r)   r   z  z    )r   ioStringIOr   r   isspacer   KeyError
ValueErrorr   	partitionr   stripAssertionErrorgetvalue)r   r   
referencesstateZinline_moder   Zinline_singlecharnextrefr   Zis_directiver   r	   r	   r
   rst_to_text3   s    




*







,



&

&
>r=   c               @   sJ   e Zd ZdddZedd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )RstToTextLazyNc             C   s   || _ || _|| _d | _d S )N)r   r   r8   _rst)r   r   r   r8   r	   r	   r
   r      s    zRstToTextLazy.__init__c             C   s$   | j d krt| j| j| j| _ | j S )N)r?   r=   r   r   r8   )r   r	   r	   r
   rst   s    
zRstToTextLazy.rstc             C   s   t | j|S )N)getattrr@   )r   itemr	   r	   r
   __getattr__   s    zRstToTextLazy.__getattr__c             C   s   | j S )N)r@   )r   r	   r	   r
   __str__   s    zRstToTextLazy.__str__c             C   s
   | j | S )N)r@   )r   otherr	   r	   r
   __add__   s    zRstToTextLazy.__add__c             C   s
   t | jS )N)iterr@   )r   r	   r	   r
   __iter__   s    zRstToTextLazy.__iter__c             C   s
   || j kS )N)r@   )r   rB   r	   r	   r
   __contains__   s    zRstToTextLazy.__contains__)NN)r   r   r   r   propertyr@   rC   rD   rF   rH   rI   r	   r	   r	   r
   r>      s   
r>   c             C   sR   | dkr|d	kr|j d | dkr4|dkr4|j d | d
krN|dkrN|j d d S )Nr   r#   r$   ``z[4m**z[1mz[0m)r#   r$   rK   )r#   r$   rK   rL   )r   )r   r    r   r	   r	   r
   ansi_escapes   s    

rM   c             C   s   t |rt}nd}t| ||S )z
    Convert *rst* to a lazy string.

    If *destination* is a file-like object connected to a terminal,
    enrich text with suitable ANSI escapes. Otherwise return plain text.
    N)r   rM   r>   )r@   r8   ZdestinationZrst_state_hookr	   r	   r
   rst_to_terminal   s    rN   )NN)r/   sysZhelpersr   r   r   r=   r>   rM   stdoutrN   r	   r	   r	   r
   <module>   s   
q	