
    Æe                     N    d dl mZ d Zd Zd ZdededefdZd	 Zd
 Z	d Z
d Zy)    )codeanalyzec                 J    t        j                  | j                  |            S )N)r   count_line_indentsget_line)lineslinenos     ;/usr/lib/python3/dist-packages/rope/refactor/sourceutils.pyget_indentsr
      s    ))%..*@AA    c                     d}| j                  d      }|D ]5  }|j                         dk(  rt        |t        j                  |            }7 |S )NP   
 )splitstripminr   r   )source_coderesultr   lines       r	   find_minimum_indentsr      sW    Fd#E C::<2V[;;DABC Mr   c                 x   |dk(  r| S | j                  d      }g }|D ]  }|j                         dk(  r|j                  d       (|dk  rHt        j                  |      }|j                  t        d||z         dz  |j                         z          u|j                  d|z  |z           dj                  |      S )Nr   Tr   r    )
splitlinesr   appendr   r   maxlstripjoin)r   amountr   r   r   indentss         r	   indent_linesr       s    {""4(EF /::<2MM$A:!44T:GMM#a6!12S84;;=HIMM#,-./ 776?r   codenew_indentsreturnc                 6    t        |       }t        | ||z
        S )z1Change the indentation of `code` to `new_indents`)r   r    )r!   r"   min_indentss      r	   fix_indentationr&   #   s    &t,KkK788r   c                    | j                   }| j                  }|j                         }|j                         r!|j                         d   j                         }|j	                  |      }ddj                  |      z   }t        |t        ||j                               t        | j                  j                        z         }g }	|	j                  |d |        |	j                  |       |	j                  ||d         dj                  |	      S )Nz

r   )r   r   get_end
get_scopesget_line_endr   r&   r
   	get_start
get_indentpycoreprojectr   )
pymoduleclass_scopemethods_sourcesr   r   insertion_lineinsertion_offsetmethodsindented_methodsr   s
             r	   add_methodsr7   )   s    &&KNNE ((*N$//1"5==?)).9v{{?33G&E;0023
X__,,
-	.
 F
MM+//01
MM"#
MM+./01776?r   c                 p    | j                         }t        |       \  }}t        |j                  || d      S )zReturn unindented function bodyr   )
get_moduleget_body_regionr&   r   )
pyfunctionr0   startends       r	   get_bodyr>   =   s:     $$&H ,JE38//c:A>>r   c                     | j                         }| j                         }|j                  }| j                         }|j                  }| j                         |j                  d   j                  }n1t        |j                        dkD  r|j                  d   j                  }|j                  |      }|j                  j                  |j                        }|d   |k\  r_|j                  j                  d|      dz   }|j                  |   j                         r#|dz  }|j                  |   j                         r#t        |j!                  |j"                        dz   t        |j                              }||fS )z1Return the start and end offsets of function bodyr      :)	get_scoper9   r   get_astr   get_docbodylenget_line_startlogical_lineslogical_line_inr<   r   indexisspacer   r+   r=   )	definedscoper0   r   node
start_liner<   scope_startr=   s	            r	   r:   r:   E   sB   E!!#HNNE??DJ YYq\((
	TYY!	YYq\((
  ,E((88EK1~# $$**36:""5)113QJE ""5)113
e  +a/X5I5I1J
KC#:r   c                 :    | j                   j                  dd      S )Nindent_size   )prefsget)r/   s    r	   r-   r-   \   s    ==]A..r   N)	rope.baser   r
   r   r    strintr&   r7   r>   r:   r-    r   r	   <module>rZ      sF    !B"9# 9C 9C 9(?./r   