e fO@sddlZddlZddlmZed\ZZZZZ ej dej ej Bj Zej dej jZej dej ejBjZej dej jZej dej jZej d ej jZGd d d eZGd d d ZdS)N)Mappingz ^ [ \t]* (?: while | else | def | return | assert | break | class | continue | elif | try | except | raise | import | yield ) \b z' [ \t]* (?: \# \S .* )? \n aK \""" [^"\\]* (?: (?: \\. | "(?!"") ) [^"\\]* )* (?: \""" )? | " [^"\\\n]* (?: \\. [^"\\\n]* )* "? | ''' [^'\\]* (?: (?: \\. | '(?!'') ) [^'\\]* )* (?: ''' )? | ' [^'\\\n]* (?: \\. [^'\\\n]* )* '? zM [ \t]* [^\s#\\] # if we match, m.end()-1 is the interesting char z_ \s* (?: return | break | continue | raise | pass ) \b z [^[\](){}#'"\\]+ c@sUeZdZdZddZddZddZdd Zd d d Zd S) StringTranslatePseudoMappingaTUtility class to be used with str.translate() This Mapping class wraps a given dict. When a value for a key is requested via __getitem__() or get(), the key is looked up in the given dict. If found there, the value from the dict is returned. Otherwise, the default value given upon initialization is returned. This allows using str.translate() to make some replacements, and to replace all characters for which no replacement was specified with a given character instead of leaving them as-is. For example, to replace everything except whitespace with 'x': >>> whitespace_chars = ' \t\n\r' >>> preserve_dict = {ord(c): ord(c) for c in whitespace_chars} >>> mapping = StringTranslatePseudoMapping(preserve_dict, ord('x')) >>> text = "a + b\tc\nd" >>> text.translate(mapping) 'x x x\tx\nx' cCs4||_||_|j|dd}||_dS)NcSs |||S)N)key_getZ_defaultrr4/opt/alt/python34/lib64/python3.4/idlelib/PyParse.pyrysz3StringTranslatePseudoMapping.__init__.._get) _non_defaultsZ_default_valuegetr)selfZ non_defaults default_valuerrrr__init__us  z%StringTranslatePseudoMapping.__init__cCs |j|S)N)r)r itemrrr __getitem__}sz(StringTranslatePseudoMapping.__getitem__cCs t|jS)N)lenr )r rrr__len__sz$StringTranslatePseudoMapping.__len__cCs t|jS)N)iterr )r rrr__iter__sz%StringTranslatePseudoMapping.__iter__NcCs |j|S)N)r)r rdefaultrrrr sz StringTranslatePseudoMapping.get) __name__ __module__ __qualname____doc__r rrrr rrrrr`s     rc@sBeZdZddZddZdeddZdd ZiZej d d d Dej d d dDej dd dDe ede dZddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$ZdZd%d&ZdZd'd(ZdS))ParsercCs||_||_dS)N) indentwidthtabwidth)r rrrrrr s zParser.__init__cCs||_d|_dS)Nr)str study_level)r srrrset_strs zParser.set_strNc CsU|jd}}|sdSt|}xtdD]}|jdd|}|dkr^Pn|jdd|d}||||}|r||j r|j}Pn|}q3W|dkr||}|r||j r|j}n|S|d}xD|||}|rL|j\} }|| sM| }qMq Pq W|S)Nrz: r )rrrangerfindstartspan) r Zis_char_in_string_synchrerposlimitZtriesimrrrrfind_good_parse_starts8        zParser.find_good_parse_startcCs)|dkr%|j|d|_ndS)Nr)r)r lorrrset_los z Parser.set_loccs'|]}t|tdfVqdS)(N)ord).0crrr szParser.z({[ccs'|]}t|tdfVqdS))N)r/)r0r1rrrr2sz)}]ccs'|]}t|t|fVqdS)N)r/)r0r1rrrr2sz"'\ #r xc Cs|jdkrdSd|_|j}|j|j}|jdd}|jdd}|jdd}|jdd}|jdd}t}d}}dg|_}|j}dt|}}x||krT||} |d}| dkrqn| dkr7|d}|dkr||qqn| d krS|d}qn| d krx|r|d}qqn| d ks| d kr| } ||d|d | dkr| d} n|} t| d} || }x||kr||} |d}| dkrqn||d|| | krF|| }Pn| dkr|d}| dkr|dkr||nPqqn| dkr||dkr|d}n|d}qqqW|d| krt }qt }qn| dkr|j d|}qn||dkrG|d}|d|krGt }qGn|d}qW|t kr|t kr|dkrt }n||_|d|kr||ndS)Nr!Zxxxxxxxxr4ZxxxxZxxz xr rr.r3"'\#)rr translate_tranreplaceC_NONE goodlinesappendrC_STRING_FIRST_LINEC_STRING_NEXT_LINESfind C_BACKSLASH C_BRACKET continuation) r rrGlevelZlnor@Z push_goodr)nchZquoteZfirstlnowrrr_study1s               "                      zParser._study1cCs|j|jS)N)rLrG)r rrrget_continuation_typegs zParser.get_continuation_typecCs|jdkrdS|jd|_|j|j}}t|d}t|}xp|r|}x@t||d||D]#}|jdd|dd}qWt||r|d}qXPqXW|dkr|}n|||_|_ d}g}|j } |dfg} x?||krUt |||} | r| j } | d}x*||kr}||dkr}|d}qTW||kr||}n| }||krPqn||} | dkr| || j |t|f| }|d}qn| dkrJ|r|d =n| }|d}| j |t|fqn| d ksb| d kr| j |t|df| }t |||j }| j |t|fqn| d kr| j |t|df|jd||d}| j |t|fqn|d}||dkrH| ||}n|d}qW||_|ru|d |_nt| |_dS)Nr7r!r rz z([{z)]}r5r6r:r;r;)rrLrr@rr"r#_junkre stmt_startstmt_endrA_chew_ordinaryreend_match_stringrerDlastchlastopenbracketpostuplestmt_bracketing)r rr@r)pqZnothingrUstackZ push_stackZ bracketingr*ZnewprJrrr_study2|s    "!                   zParser._study2cCs|j|j}|j}t|}|jdd|d}}|d}x||krt||}|r|jd}d}PqR|jd|d}}qRW|}}x||dkr|d}qW|j}t|||j |j |S)Nr rr!z ) r\rVrrr#_itemrerSrDr expandtabsr)r jrrIZorigir)r*Zextrarrrcompute_bracket_indents$       zParser.compute_bracket_indentcCs#|j|j}|d|dS)Nr!r7r;)rLr@)r r@rrrget_num_lines_in_stmts  zParser.get_num_lines_in_stmtcCs|j|j}|j}x||dkr<|d}qW|}|jd|d}d}}x ||krq||}|dkr|d}|d}qf|dkr|r|d}n|d}qf|dks|dkrt|||j}qf|d krPqf|dkrd|d krd|dksF||dd krd||dd krdd}Pqf|d}qfW|r|d}tjd |||dk}n|s|}x!||d kr|d}qWnt||j|j |j dS)Nz r!r rz([{z)]}r5r6r:=z=<>!z\s*\\z ) r\rrPrDrTrSrematchrr^r)r rr)startposendposfoundrHrJrrrcompute_backslash_indentsH              %zParser.compute_backslash_indentcCsg|j|j|j}}|}|j}x*||krX||dkrX|d}q/W|||S)Nz r!)r\rPrQr)r r)rIr_rrrrget_base_indent_stringFs  zParser.get_base_indent_stringcCs|j|jdkS)N:)r\rU)r rrris_block_openerQs zParser.is_block_openercCs#|jt|j|jdk S)N)r\_closererrP)r rrris_block_closerWs zParser.is_block_closercCs|j|jS)N)r\rV)r rrrget_last_open_bracket_pos^s z Parser.get_last_open_bracket_poscCs|j|jS)N)r\rX)r rrrget_last_stmt_bracketinggs zParser.get_last_stmt_bracketing)rrrr rr&r+r-r=updaterr/rLrMr\r`rbrirjrlrnrVrorXrprrrrrs.   3   m  5   r)rdsys collectionsrr"r?rErBrCrFcompileVERBOSE MULTILINEsearchr&rerODOTALLrTr]rmrRrrrrrrs"   *