3
\± ã @ sh d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd„ de ƒZ
G d d
„ d
e ƒZi add„ Z
dS )
z+George Boutsioukis é N)Údefaultdicté )Úpytree)Úreduce_treec @ s e Zd Zejƒ Zdd„ ZdS )ÚBMNodec C s" i | _ g | _ttjƒ| _d| _d S )NÚ )Útransition_tableÚfixersÚnextr ÚcountÚidÚcontent)Úself© r ú+/usr/lib64/python3.6/lib2to3/btm_matcher.pyÚ__init__ s zBMNode.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú itertoolsr r r r r r r s r c @ s4 e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d
„ ZdS )Ú
BottomMatcherc C s0 t ƒ | _tƒ | _| jg| _g | _tjdƒ| _d S )NZRefactoringTool) ÚsetÚmatchr ÚrootZnodesr ÚloggingZ getLoggerZlogger)r r r r r s
zBottomMatcher.__init__c C sL | j j|ƒ t|jƒ}|jƒ }| j|| jd�}x|D ]}|j j|ƒ q4W d S )N)Ústart)r Úappendr Zpattern_treeZget_linear_subpatternÚaddr )r ÚfixerZtreeZlinearÚmatch_nodesZ
match_noder r r Ú add_fixer% s
zBottomMatcher.add_fixerc C sÌ |s
|gS t |d tƒrhg }xF|d D ]:}| j||d�}x&|D ]}|j| j|dd … |ƒƒ q>W q&W