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