
    q&f                     b    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y)	    )hexshort)encodingpycompattemplatefiltersutil)dateutilc                   H    e Zd ZdZd ZddZej                  d        Zd Z	y)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                  j                  d      dk(  r_fd d   j                               dz   dd   j                         z  d|j                  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}|D 	
cg c].  \  }	}
}}|j                  |	      r||
|j                  |	|	      |f0 }}}
}	}t        |d         |d<   d|d   d<   || _        y c c}}}
}	w )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 S  |       S Nr   )r   origs    r   r   z+defaultformatter.__init__.<locals>.<lambda>(   s    	 tAw r      .   +   %dr   	   changeset    c                     | S d| z  z   S )Nr   r   )r   wrevwrevpads    r   r   z+defaultformatter.__init__.<locals>.<lambda>/   s    qyt uqyG6K 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                 0     |       j                         S r   )userr   getctxs    r   r   z+defaultformatter.__init__.<locals>.<lambda>;       fQinn&6 r      numberc                 0     |       j                         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    71Q4= r      datec                 0     |       j                         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   r   r6   )uioptsquietr	   	shortdatedatestrr   	cachefunc_hexfuncgetnoder+   r   r!   	shortuserlistfuncmap)selfr8   r   r9   datefuncrevencr#   opmapfieldnamemapopsepr?   encrC   r'   r-   r   r"   r   r   s     `           @@@@@@r   __init__zdefaultformatter.__init__   s   	88))H''H>>(+ 45-- 99== I-D>GDJOO-.5E4:>>++DG88L)KF2  (///FW d6E7@4!8'Bd6AdNH,<,<=T#5x7G7GH
 $*A &+
 
!Ccxx| #|''B/5
 
 '!*%

1
s   +3G
Nc           	         g }g }| j                   D ]  \  }}}}	|D 
cg c]  }
 |	 ||
             }}
|j                  |       |dv r|dd }t        j                  t        j
                  t        |            }|rt        |      nd}|j                  |        d}t        t        |            D ]  }t        |      D ]<  \  }}| j                   |   d   }d||   t        ||         z
  z  }|||z   ||   z   z  }> |rV||d||   z   z  }nH||   d   ||   d   f}||v r|d||   z   z  }n(|d| j                  j                  d	||   z   d
      z   z  }|dd dk7  s|dz  } | j                  j                  |       yc c}
w )z(annotateresult, [str], set([rev, linenum])) -> None. write output.
        annotateresult can be [(node, linenum, path)], or [(node, linenum)]
        )r7   r.   Nr6   r   r   r   s   : s   :     -s   diff.deleted   
)rC   appendr   maplistr   colwidthsetmaxrangelen	enumerater8   labelwrite)rD   annotatedresultlinesexistinglinespieces	maxwidthsfrJ   namerK   r   lwidthsmaxwidthresultijppaddingkeys                       r   rZ   zdefaultformatter.writeM   s    	 "& 	'AsD#$34qQqT4A4MM!))bqE%%h&7&7Q@F&,s6{!HX&	' s?+, 	 A!&) /1ll1oa()A,QqT":;#-!A$../  (eeAh..F*1-a0/!2DQ2GHCm+&58"33%$''-- 58O_+ #  bc{e#%%	 ( 	f= 5s   Fc                 |    | j                   j                  s| j                  j                  d      rt        S t
        S )Ns	   long_hash)r8   	debugflagr9   r?   r   r   rD   s    r   r>   zdefaultformatter._hexfuncv   s(    77		l ;JLr   c                      y r   r   rm   s    r   endzdefaultformatter.end}   s    r   NN)
__name__
__module____qualname____doc__rL   rZ   r   propertycacher>   ro   r   r   r   r   r      s0    O2h'R 
 r   r   c                   V     e Zd Z fdZddZd Zej                  d        Zd Z	 xZ
S )jsonformatterc                 t    t         t        |   |||       | j                  j	                  d       d| _        y )N   [F)superrw   rL   r8   rZ   	needcomma)rD   r8   r   r9   	__class__s       r   rL   zjsonformatter.__init__   s-    mT+Bd;dr   c                 f   |r| j                          | j                  D cg c]  \  }}}}|t        j                  ||      f! }}}}}||j	                  d|f       |j                          dgt        |d d       z  dgz   }	d}
t        |      dz
  }t        t        |            D ]T  }|
dz  }
t        |      D ]0  \  }}|\  }}|
d|t        j                  ||   d	      |	|   fz  z  }
2 |
d
||k(  rdndz  z  }
V |dk\  rd| _        | j                  j                  |
       y c c}}}}w )Ns   line   ,rO   r   r6   s   
 {
s     "%s": %s%s
F)paranoids    }%sr   T)_writecommarC   r   rR   rQ   sortrW   rV   rX   r   jsonr{   r8   rZ   )rD   r[   r\   r]   r`   rJ   ra   rK   r^   sepsre   lastirf   rg   rh   kvss                    r   rZ   zjsonformatter.write   s^    &*\\
 
!3c 8##A78
 
 MM7E*+vF3BK((C50O$q(s?+, 		>AiF!&) 12+#((A?G/   gU
==F		> A:!DNf3
s   $D+
c                 b    | j                   r#| j                  j                  d       d| _         y y )Nr~   F)r{   r8   rZ   rm   s    r   r   zjsonformatter._writecomma   s%    >>GGMM$"DN r   c                     t         S r   )r   rm   s    r   r>   zjsonformatter._hexfunc   s    
r   c                 :    | j                   j                  d       y )Ns   
]
)r8   rZ   rm   s    r   ro   zjsonformatter.end   s    hr   rp   )rq   rr   rs   rL   rZ   r   r   ru   r>   ro   __classcell__)r|   s   @r   rw   rw      s1    
>#
 
  r   rw   N)mercurial.noder   r   	mercurialr   r   r   r   mercurial.utilsr	   r   rw   r   r   r   <module>r      s3     %h hV/ $ / r   