3 \ :@s<ddlZddlZdgZdZejejdZGdddZdS)NCmdz(Cmd) _c@seZdZeZeZdZdZdZ dZ dZ dZ dZ dZdZd/d d Zd0d d ZddZddZddZddZddZddZddZddZddZd 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 %stabcCs@|dk r||_ntj|_|dk r(||_ntj|_g|_||_dS)N)stdinsysstdoutcmdqueue completekey)selfr rr r/usr/lib64/python3.6/cmd.py__init__Ls z Cmd.__init__cCs|j|jr\|jr\y2ddl}|j|_|j|j|j|jdWnt k rZYnXz|dk rl||_ |j r|j j t |j dd}x|s6|jr|jjd}nl|jryt|j}Wntk rd}YnXn<|j j |j|j j|jj}t|s d}n |jd}|j|}|j|}|j||}qW|jWd|jr|jryddl}|j|jWnt k rYnXXdS)Nrz : complete EOFz )preloop use_rawinputr readlineZ get_completerZ old_completerZ set_completercompleteparse_and_bind ImportErrorintror writestrr popinputpromptEOFErrorflushrlenrstripprecmdonecmdpostcmdpostloop)r rrstoplinerrrcmdloopbsN           z Cmd.cmdloopcCs|S)Nr)r r(rrrr#sz Cmd.precmdcCs|S)Nr)r r'r(rrrr%sz Cmd.postcmdcCsdS)Nr)r rrrrsz Cmd.preloopcCsdS)Nr)r rrrr&sz Cmd.postloopcCs|j}|sdd|fS|ddkr4d|dd}n2|ddkrft|dr\d|dd}n dd|fSdt|}}x"||kr|||jkr|d}qvW|d|||dj}}|||fS)Nr?zhelp r!Zdo_shellzshell )striphasattrr! identchars)r r(incmdargrrr parselines      z Cmd.parselinec Cs|j|\}}}|s|jS|dkr.|j|S||_|dkrBd|_|dkrT|j|Syt|d|}Wntk r|j|SX||SdS)Nrrdo_)r3 emptylinedefaultlastcmdgetattrAttributeError)r r(r1r2funcrrrr$s    z Cmd.onecmdcCs|jr|j|jSdS)N)r7r$)r rrrr5sz Cmd.emptylinecCs|jjd|dS)Nz*** Unknown syntax: %s )r r)r r(rrrr6sz Cmd.defaultcGsgS)Nr)r ignoredrrrcompletedefaultszCmd.completedefaultcsd|fdd|jDS)Nr4cs"g|]}|jr|ddqS)N) startswith).0a)dotextrr sz%Cmd.completenames..) get_names)r textr;r)rAr completenamesszCmd.completenamesc Cs|dkrddl}|j}|j}t|t|}|j|}|j|}|dkr|j|\} } } | dkrp|j} qyt|d| } Wqt k r|j} YqXn|j } | |||||_ y |j |St k rdSXdS)NrrZ complete_) rZget_line_bufferlstripr!Z get_begidxZ get_endidxr3r<r8r9rEZcompletion_matches IndexError) r rDstaterZorigliner(strippedZbegidxZendidxr1argsZfooZcompfuncrrrrs*   z Cmd.completecCs t|jS)N)dir __class__)r rrrrCsz Cmd.get_namescs4t|j}tfdd|jD}t||BS)Nc3s,|]$}|jddr|ddVqdS)help_rN)r>)r?r@)rJrr sz$Cmd.complete_help..)setrErClist)r rJZcommandsZtopicsr)rJr complete_helpszCmd.complete_helpc Cs|ryt|d|}Wnvtk ry0t|d|j}|rT|jjdt|dSWntk rjYnX|jjdt|j|fdSX|n|j}g}g}i}x,|D]$}|dddkrd||dd<qW|jd} xx|D]p}|dddkr|| kr q|} |dd} | |kr8|j | || =qt||jrR|j | q|j | qW|jjdt|j |j |j |dd |j |j t|jdd |j |j|dd dS) NrMr4z%s rNrrr=P)r8r9__doc__r rrnohelprCsortappend doc_leader print_topics doc_header misc_headerrQkeys undoc_header) r r2r:docnamesZcmds_docZ cmds_undochelpnameZprevnamer1rrrdo_help$sN        z Cmd.do_helpcCs\|rX|jjdt||jr<|jjdt|jt||j||d|jjddS)Nz%s rr)r rrrulerr! columnize)r headerZcmdsZcmdlenZmaxcolrrrrZRs zCmd.print_topicsrTcss|jjddSfddttD}|rJtddjtt|t}|dkrv|jjdtddSxtdtD]}||d|}g}d }xrt|D]f} d} x csg|]}t|ts|qSr) isinstancer)r?r/)rQrrrBdsz!Cmd.columnize..z list[i] not a string for i in %sz, rz%s rrz rj) r rranger! TypeErrorjoinmaprmaxrXljust)r rQZ displaywidthZ nonstringssizeZnrowsZncolsZ colwidthsZtotwidthcolZcolwidthrowr/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