
    	^c                     p    d dl mZmZ d dlmZmZmZmZ d dlm	Z	  G d d          Z
 G d de
          ZdS )	    )hexshort)encodingpycompattemplatefiltersutil)dateutilc                   F    e Zd ZdZd ZddZej        d             Zd Z	dS )defaultformatterzEthe default formatter that does leftpad and support some common flagsc           	      "  	
 || _         | _        |j        rt          j        }nt          j        }t          j        |          }t          j        fd          
| j        | j        	                    d          dk    rtfd d         
                                          dz   dd                                         z  d	                    d	          sdz  d
fd}fd}nt          j        x}}dd

fd|j        fdd

fd|fd	d
fd|fdd

fd|fdd
d t          j        fddd t          j        fg}ddd		fd|D             }t          |d                   |d<   d|d         d<   || _        d S )Nc                      | d                  S Nr    )xrepos    >/usr/lib/python3/dist-packages/hgext/fastannotate/formatter.py<lambda>z+defaultformatter.__init__.<locals>.<lambda>"   s    $qt*     s   revs   wdir()c                 "    | d n
 |           S Nr   )r   origs    r   r   z+defaultformatter.__init__.<locals>.<lambda>(   s    	ttAww r      .   +   %dr   	   changeset    c                     | nd| z  z   S )Nr   r   )r   wrevwrevpads    r   r   z+defaultformatter.__init__.<locals>.<lambda>/   s    qyttuqyG6K r   c                 :    | S t          j        |           dz   S )Nr   )r   bytestr)r   wnodes    r   csetencz*defaultformatter.__init__.<locals>.csetenc1   s#    9 L'**T11r   s   userc                 >     |                                            S r   )userr   getctxs    r   r   z+defaultformatter.__init__.<locals>.<lambda>;       ffQiinn&6&6 r      numberc                 >     |                                            S r   )revr&   s    r   r   z+defaultformatter.__init__.<locals>.<lambda><   s    q		 r   c                 &     | d                   S r   r   )r   hexfuncs    r   r   z+defaultformatter.__init__.<locals>.<lambda>=   s    771Q4== r      datec                 >     |                                            S r   )dater&   s    r   r   z+defaultformatter.__init__.<locals>.<lambda>>   r(   r   s   filec                     | d         S )N   r   r   s    r   r   z+defaultformatter.__init__.<locals>.<lambda>?   s
    ad r   s   line_number   :c                     | d         dz   S )N   r   r3   s    r   r   z+defaultformatter.__init__.<locals>.<lambda>@   s    QqTAX r      node)r)   r   c                 x    g | ]6\  }}}}                     |          ||                     ||          |f7S r   )get).0opsepr9   encfieldnamemapoptss        r   
<listcomp>z-defaultformatter.__init__.<locals>.<listcomp>C   sZ     
 
 
!Ccxx||
#|''B//5
 
 
r   r   r6   )uir?   quietr	   	shortdatedatestrr   	cachefunc_hexfuncr9   noder+   r   r!   	shortuserlistfuncmap)selfrA   r   r?   datefuncrevencr#   opmaprJ   r>   r'   r-   r   r"   r   r   s     ``     @@@@@@@r   __init__zdefaultformatter.__init__   s#   	8 	()HH'H>(++ 4 4 4 455- 9==  I--D>>>>GGDJOO--..5E4:>>+++DG88L)) KKKKKF2 2 2 2 2 2  (//FW d6666E7777@4!8!8!8!8'Bd6666AdNNH,<=T#5#5x7GH
 $*AA
 
 
 
 
%*
 
 
 '!*%%

1r   Nc                 d   g }g }| j         D ]\  }}fd|D             }|                    |           |dv r
|dd         }t          j        t          j        t          |                    }	|	rt          |	          nd}
|                    |
           d}t          t          |                    D ]}t          |          D ]J\  }}| j         |         d         }d||         t          ||                   z
  z  }|||z   ||         z   z  }K|rj||d||         z   z  }nY||         d         ||         d         f}||v r|d	||         z   z  }n*|d| j                            d
||         z   d          z   z  }|dd         dk    r|dz  }| j                            |           dS )z(annotateresult, [str], set([rev, linenum])) -> None. write output.
        annotateresult can be [(node, linenum, path)], or [(node, linenum)]
        c                 8    g | ]}  |                    S r   r   )r:   r   r=   fs     r   r@   z*defaultformatter.write.<locals>.<listcomp>V   s)    444qQQqTT444r   )r7   r.   Nr6   r   r   r   s   : s   :     -s   diff.deleted   
)rJ   appendr   maplistr   colwidthsetmaxrangelen	enumeraterA   labelwrite)rK   annotatedresultlinesexistinglinespieces	maxwidthsr<   namelwidthsmaxwidthresultijppaddingkeyr=   rR   s                    @@r   r_   zdefaultformatter.writeM   s
    	 "& 	' 	'AsD#44444O444AMM!)))bqbE%h&7Q@@F&,3s6{{{!HX&&&& s?++,, 	  	 A!&)) / /1l1oa()A,QqT":;#-!A$.. 
 (eeAh..FF*1-a0/!2DQ2GHCm++&58"33%$'-- 58O_+ + #  bcc{e##%fr   c                 j    | j         j        s| j                            d          rt          S t
          S )Ns	   long_hash)rA   	debugflagr?   r9   r   r   rK   s    r   rF   zdefaultformatter._hexfuncv   s.    7 		l ; ; 	JLr   c                     d S r   r   rq   s    r   endzdefaultformatter.end}   s    r   NN)
__name__
__module____qualname____doc__rO   r_   r   propertycacherF   rs   r   r   r   r   r      sm        OO2 2 2h' ' ' 'R 
      r   r   c                   R     e Zd Z fdZddZd Zej        d             Zd Z	 xZ
S )jsonformatterc                     t          t          |                               |||           | j                            d           d| _        d S )N   [F)superr{   rO   rA   r_   	needcomma)rK   rA   r   r?   	__class__s       r   rO   zjsonformatter.__init__   sD    mT""++Bd;;;dr   Nc           	      Z   r|                                   fd| j        D             }||                    d|f           |                                 dgt	          |d d                   z  dgz   }d}t	                    dz
  }t          t	                              D ]\}|dz  }t          |          D ]5\  }	}
|
\  }}|d|t          j        ||         d	
          ||	         fz  z  }6|d||k    rdndz  z  }]|dk    rd| _	        | j
                            |           d S )Nc                 H    g | ]\  }}}}|t          j        |          fS r   )r   rW   )r:   rR   r<   re   r=   r`   s        r   r@   z'jsonformatter.write.<locals>.<listcomp>   sC     
 
 
!3c 8#A778
 
 
r   s   line   ,rT   r   r6   s   
 {
s     "%s": %s%s
F)paranoids    }%sr   T)_writecommarJ   rV   sortr\   r[   r]   r   jsonr   rA   r_   )rK   r`   ra   rb   rc   sepsri   lastirj   rk   rl   kvss    `           r   r_   zjsonformatter.write   s}    	
 
 
 
%)\
 
 
 MM7E*+++vF3B3K(((C50O$$q(s?++,, 		> 		>AiF!&))  12+#(A???G/  
 gU

==FFA::!DNfr   c                 Z    | j         r#| j                            d           d| _         d S d S )Nr   F)r   rA   r_   rq   s    r   r   zjsonformatter._writecomma   s5    > 	#GMM$"DNNN	# 	#r   c                     t           S r   )r   rq   s    r   rF   zjsonformatter._hexfunc   s    
r   c                 :    | j                             d           d S )Ns   
]
)rA   r_   rq   s    r   rs   zjsonformatter.end   s    hr   rt   )ru   rv   rw   rO   r_   r   r   ry   rF   rs   __classcell__)r   s   @r   r{   r{      s            
   ># # #
 
               r   r{   N)mercurial.noder   r   	mercurialr   r   r   r   mercurial.utilsr	   r   r{   r   r   r   <module>r      s                      % $ $ $ $ $h h h h h h h hV/  /  /  /  / $ /  /  /  /  / r   