B
    u9a:                 @   s<   d dl Z d dlZdgZdZe je j d ZG dd dZdS )    NCmdz(Cmd) _c               @   s   e Zd ZeZeZdZdZdZ	dZ
dZdZdZdZdZd/d
dZd0ddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Z d1d-d.Z!dS )2r   = Nz(Documented commands (type help <topic>):zMiscellaneous help topics:zUndocumented commands:z*** No help on %s   tabc             C   s@   |d k	r|| _ ntj | _ |d k	r(|| _ntj| _g | _|| _d S )N)stdinsysstdoutcmdqueuecompletekey)selfr   r   r
    r   /usr/lib/python3.7/cmd.py__init__L   s    zCmd.__init__c             C   s  |    | jr\| jr\y2dd l}| | _|| j || jd  W n t	k
rZ   Y nX z|d k	rl|| _
| j
r| jt| j
d  d }x|s6| jr| jd}nl| jryt| j}W n tk
r   d}Y nX n<| j| j | j  | j }t|s
d}n
|d}| |}| |}| ||}qW |   W d | jr| jrydd l}|| j W n t	k
r   Y nX X d S )Nr   z
: complete
EOFz
)preloopuse_rawinputr   readlineZget_completerZold_completerZset_completercompleteparse_and_bindImportErrorintror
   writestrr   popinputpromptEOFErrorflushr   lenrstripprecmdonecmdpostcmdpostloop)r   r   r   stopliner   r   r   cmdloopb   sN    






zCmd.cmdloopc             C   s   |S )Nr   )r   r(   r   r   r   r#      s    z
Cmd.precmdc             C   s   |S )Nr   )r   r'   r(   r   r   r   r%      s    zCmd.postcmdc             C   s   d S )Nr   )r   r   r   r   r      s    zCmd.preloopc             C   s   d S )Nr   )r   r   r   r   r&      s    zCmd.postloopc             C   s   |  }|sd d |fS |d dkr4d|dd   }n2|d dkrft| dr\d|dd   }n
d d |fS dt| }}x"||k r|| | jkr|d }qvW |d | ||d     }}|||fS )Nr   ?zhelp r   !Zdo_shellzshell )striphasattrr!   
identchars)r   r(   incmdargr   r   r   	parseline   s    


 zCmd.parselinec             C   s   |  |\}}}|s|  S |d kr.| |S || _|dkrBd| _|dkrT| |S yt| d| }W n tk
r   | |S X ||S d S )Nr   r   do_)r3   	emptylinedefaultlastcmdgetattrAttributeError)r   r(   r1   r2   funcr   r   r   r$      s    


z
Cmd.onecmdc             C   s   | j r| | j S d S )N)r7   r$   )r   r   r   r   r5      s    zCmd.emptylinec             C   s   | j d|  d S )Nz*** Unknown syntax: %s
)r
   r   )r   r(   r   r   r   r6      s    zCmd.defaultc             G   s   g S )Nr   )r   ignoredr   r   r   completedefault   s    zCmd.completedefaultc                s   d|   fdd|   D S )Nr4   c                s"   g | ]}|  r|d d qS )   N)
startswith).0a)dotextr   r   
<listcomp>   s    z%Cmd.completenames.<locals>.<listcomp>)	get_names)r   textr;   r   )rA   r   completenames   s    zCmd.completenamesc             C   s   |dkrdd l }| }| }t|t| }| | }| | }|dkr| |\}	}
}|	dkrp| j}qyt| d|	 }W q t	k
r   | j}Y qX n| j
}|||||| _y
| j| S  tk
r   d S X d S )Nr   r   Z	complete_)r   Zget_line_bufferlstripr!   Z
get_begidxZ
get_endidxr3   r<   r8   r9   rE   Zcompletion_matches
IndexError)r   rD   stater   Zorigliner(   strippedZbegidxZendidxr1   argsZfooZcompfuncr   r   r   r      s*    
zCmd.completec             C   s
   t | jS )N)dir	__class__)r   r   r   r   rC     s    zCmd.get_namesc                s4   t | j  }t  fdd|  D }t||B S )Nc             3   s,   | ]$}| d  d  r|dd V  qdS )help_r      N)r>   )r?   r@   )rJ   r   r   	<genexpr>   s    z$Cmd.complete_help.<locals>.<genexpr>)setrE   rC   list)r   rJ   ZcommandsZtopicsr   )rJ   r   complete_help  s    zCmd.complete_helpc             C   s  |ryt | d| }W nv tk
r   y0t | d| j}|rT| jdt|  d S W n tk
rj   Y nX | jdt| j|f   d S X |  n|  }g }g }i }x,|D ]$}|d d dkrd||dd  < qW |  d}	xx|D ]p}|d d dkr||	krq|}	|dd  }
|
|kr8|	|
 ||
= qt | |jrR|	|
 q|	|
 qW | jdt| j
  | | j|dd	 | | jt| dd	 | | j|dd	 d S )
NrM   r4   z%s
rN   r   r   r=      P   )r8   r9   __doc__r
   r   r   nohelprC   sortappend
doc_leaderprint_topics
doc_headermisc_headerrQ   keysundoc_header)r   r2   r:   docnamesZcmds_docZ
cmds_undochelpnameZprevnamer1   r   r   r   do_help$  sN    





zCmd.do_helpc             C   s\   |rX| j dt|  | jr<| j dt| jt|   | ||d  | j d d S )Nz%s
r   r   )r
   r   r   rulerr!   	columnize)r   headerZcmdsZcmdlenZmaxcolr   r   r   rZ   R  s    zCmd.print_topicsrT   c                s   s| j d d S  fddtt D }|rJtddtt| t }|dkrv| j dt d   d S xtdt D ]}|| d | }g }d	}xrt|D ]f}	d}
x<t|D ]0}|||	  }||krP  | }t|
t|}
qW |	|
 ||
d
 7 }||krP qW ||krP qW t }d}dg}xt|D ]}g }x@t|D ]4}	|||	  }||krrd}n | }|	| qRW x|r|d s|d= qW x,tt|D ]}	||	 
||	 ||	< qW | j dtd|  q@W d S )Nz<empty>
c                s   g | ]}t  | ts|qS r   )
isinstancer   )r?   r/   )rQ   r   r   rB   d  s    z!Cmd.columnize.<locals>.<listcomp>z list[i] not a string for i in %sz, r   z%s
r      r   z  )r
   r   ranger!   	TypeErrorjoinmapr   maxrX   ljust)r   rQ   ZdisplaywidthZ
nonstringssizeZnrowsZncolsZ	colwidthsZtotwidthcolZcolwidthrowr/   xZtextsr   )rQ   r   re   Z  sZ    

zCmd.columnize)r   NN)N)rT   )"__name__
__module____qualname__PROMPTr   
IDENTCHARSr.   rd   r7   r   rY   r[   r\   r^   rV   r   r   r)   r#   r%   r   r&   r3   r$   r5   r6   r<   rE   r   rC   rR   rc   rZ   re   r   r   r   r   r   4   s:   

4
		.)stringr	   __all__rx   Zascii_lettersdigitsry   r   r   r   r   r   <module>-   s   