3 \ :�@s<ddlZddlZdgZdZejejdZGdd�d�ZdS)�N�Cmdz(Cmd) �_c@s�eZdZeZeZdZdZdZ dZ dZ dZ dZ dZdZd/d d �Zd0d d �Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Z d1d-d.�Z!dS)2r�=�Nz(Documented commands (type help ):zMiscellaneous help topics:zUndocumented commands:z*** No help on %s��tabcCs@|dk r||_ntj|_|dk r(||_ntj|_g|_||_dS)N)�stdin�sys�stdout�cmdqueue� completekey)�selfr rr �r�/usr/lib64/python3.6/cmd.py�__init__Ls z Cmd.__init__cCs�|j�|jr\|jr\y2ddl}|j�|_|j|j�|j|jd�Wnt k rZYnXz�|dk rl||_ |j r�|j j t |j �d�d}x�|�s6|jr�|jjd�}nl|jr�yt|j�}Wntk r�d}YnXn<|j j |j�|j j�|jj�}t|��s d}n |jd�}|j|�}|j|�}|j||�}q�W|j�Wd|j�r�|j�r�yddl}|j|j�Wnt k �r�YnXXdS)Nrz : 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 rr�stop�linerrr�cmdloopbsN           z Cmd.cmdloopcCs|S)Nr)r r(rrrr#�sz Cmd.precmdcCs|S)Nr)r r'r(rrrr%�sz Cmd.postcmdcCsdS)Nr)r rrrr�sz Cmd.preloopcCsdS)Nr)r rrrr&�sz Cmd.postloopcCs�|j�}|sdd|fS|ddkr4d|dd�}n2|ddkrft|d�r\d|dd�}n dd|fSdt|�}}x"||kr�|||jkr�|d}qvW|d|�||d�j�}}|||fS)Nr�?zhelp r�!Zdo_shellzshell )�strip�hasattrr!� identchars)r r(�i�n�cmd�argrrr� parseline�s      z Cmd.parselinec Cs�|j|�\}}}|s|j�S|dkr.|j|�S||_|dkrBd|_|dkrT|j|�Syt|d|�}Wntk r�|j|�SX||�SdS)Nrr�do_)r3� emptyline�default�lastcmd�getattr�AttributeError)r r(r1r2�funcrrrr$�s    z Cmd.onecmdcCs|jr|j|j�SdS)N)r7r$)r rrrr5�sz Cmd.emptylinecCs|jjd|�dS)Nz*** Unknown syntax: %s )r r)r r(rrrr6�sz Cmd.defaultcGsgS)Nr)r �ignoredrrr�completedefault�szCmd.completedefaultcsd|��fdd�|j�D�S)Nr4cs"g|]}|j��r|dd��qS)�N)� startswith)�.0�a)�dotextrr� �sz%Cmd.completenames..)� get_names)r �textr;r)rAr� completenames�szCmd.completenamesc Cs�|dkr�ddl}|j�}|j�}t|�t|�}|j�|}|j�|}|dkr�|j|�\} } } | dkrp|j} q�yt|d| �} Wq�t k r�|j} Yq�Xn|j } | ||||�|_ y |j |St k r�dSXdS)NrrZ complete_) rZget_line_buffer�lstripr!Z get_begidxZ get_endidxr3r<r8r9rEZcompletion_matches� IndexError) r rD�staterZorigliner(�strippedZbegidxZendidxr1�argsZfooZcompfuncrrrr�s*   z Cmd.completecCs t|j�S)N)�dir� __class__)r rrrrCsz Cmd.get_namescs4t|j���}t�fdd�|j�D��}t||B�S)Nc3s,|]$}|jd�d�r|dd�VqdS)�help_r�N)r>)r?r@)rJrr� sz$Cmd.complete_help..)�setrErC�list)r rJZcommandsZtopicsr)rJr� complete_helpszCmd.complete_helpc Cs�|r�yt|d|�}Wnvtk r�y0t|d|�j}|rT|jjdt|��dSWntk rjYnX|jjdt|j|f��dSX|��n|j�}g}g}i}x,|D]$}|dd�dkr�d||dd�<q�W|j�d} xx|D]p}|dd�dkr�|| k�r q�|} |dd�} | |k�r8|j | �|| =q�t||�j�rR|j | �q�|j | �q�W|jjdt|j ��|j |j |dd �|j |j t|j��dd �|j |j|dd �dS) NrMr4z%s rNrrr=��P)r8r9�__doc__r rr�nohelprC�sort�append� doc_leader� print_topics� doc_header� misc_headerrQ�keys� undoc_header) r r2r:�doc�namesZcmds_docZ cmds_undoc�help�nameZprevnamer1rrr�do_help$sN        z Cmd.do_helpcCs\|rX|jjdt|��|jr<|jjdt|jt|���|j||d�|jjd�dS)Nz%s rr)r rr�rulerr!� columnize)r �headerZcmdsZcmdlenZmaxcolrrrrZRs zCmd.print_topicsrTcs��s|jjd�dS�fdd�tt���D�}|rJtddjtt|����t��}|dkrv|jjdt�d��dSx�tdt���D]�}||d|}g}d }xrt|�D]f} d} x csg|]}t�|t�s|�qSr)� isinstancer)r?r/)rQrrrBdsz!Cmd.columnize..z list[i] not a string for i in %sz, rz%s r�rz ����������rj) r r�ranger!� TypeError�join�mapr�maxrX�ljust)r rQZ displaywidthZ nonstrings�sizeZnrowsZncolsZ colwidthsZtotwidth�colZcolwidth�rowr/�xZtextsr)rQrreZsZ       z Cmd.columnize)rNN)N)rT)"�__name__� __module__� __qualname__�PROMPTr� IDENTCHARSr.rdr7rrYr[r\r^rVrrr)r#r%rr&r3r$r5r6r<rErrCrRrcrZrerrrrr4s:   4   .)�stringr �__all__rxZ ascii_lettersZdigitsryrrrrr�-s