o ]Lb:@sdddlmZddlmZmZddlmZmZmZm Z ddl m Z Gddde Z Gddde Zd S) )absolute_import)hexshort)encodingpycompattemplatefiltersutil)dateutilc@s8eZdZdZddZd ddZejddZd d Z dS) defaultformatterzEthe default formatter that does leftpad and support some common flagsc sx||_|_|jr tj}ntj}t|}tfdd|j|j ddkr^fddd ddd d  d sPd7d fd d}fd d}nt j }}dd fdd|jfdd fdd|fd d fdd|fdd fdd|fdd ddt j fddddt j fg}dddfdd|D}t|d|d<d |dd <||_dS)!Ncs |dSNrx)repor >/usr/lib/python3/dist-packages/hgext/fastannotate/formatter.py# z+defaultformatter.__init__..srevswdir()cs|durdS|SNr r )origr rr)s.+%d changeset cs|durSd|S)Nrr r )wrevwrevpadr rr0cs|durSt|dS)Nr)rbytestrr )wnoder rcsetenc2sz*defaultformatter.__init__..csetencsuserc |Sr)userr getctxr rr<rnumbercr!r)revr r#r rr=rcs |dSr r r )hexfuncr rr>rdatecr!r)dater r#r rr?rsfilecSs|dS)Nr r r r rr@ss line_number:cSs |ddS)Nr r r r rrArnode)r%rcs2g|]\}}}}|r|||||fqSr )get).0opsepr.enc) fieldnamemapoptsr r Ds  z-defaultformatter.__init__..rr,)uir4quietr shortdatedatestrr cachefunc_hexfuncr.noder&rr shortuserlistfuncmap) selfr6rr4datefuncrevencr opmapr?r ) r3r$r'r4rrrrrr__init__sD        zdefaultformatter.__init__Ncstg}g}|jD]5\}}fdd|D}|||dvr&|dd}ttjt|} | r5t| nd} || qd} tt |D]k} t |D]!\} }|j| d}d|| t || }| |||| 7} qL|r|dur}| d || 7} n(|| d|| df}||vr| d || 7} n| d |j d || d 7} | d ddkr| d7} qF|j | dS)z(annotateresult, [str], set([rev, linenum])) -> None. write output. annotateresult can be [(node, linenum, path)], or [(node, linenum)] csg|]}|qSr r )r/rr2fr rr5Wrz*defaultformatter.write..)r-r(Nr,rrrs: s: -s diff.deleted )r?appendrmaplistrcolwidthsetmaxxrangelen enumerater6labelwrite)r@annotatedresultlines existinglinespieces maxwidthsr1namelwidthsmaxwidthresultijppaddingkeyr rErrSNs:     zdefaultformatter.writecCs|jjs |jdr tStS)Ns long_hash)r6 debugflagr4r.rrr@r r rr;wszdefaultformatter._hexfunccCsdSrr rdr r rend~szdefaultformatter.endNN) __name__ __module__ __qualname____doc__rDrSr propertycacher;rer r r rr s 4)  r csDeZdZfddZd ddZddZejdd Zd d Z Z S) jsonformattercs*tt|||||jdd|_dS)N[F)superrlrDr6rS needcomma)r@r6rr4 __class__r rrDs  zjsonformatter.__init__Nc sr|fdd|jD}|dur|d|f|dgt|dddg}d}td}ttD]1}|d7}t|D]\} } | \} } |d | tj | |d d || f7}qF|d ||kridnd7}q<|d krud|_ |j |dS)Ncs$g|]\}}}}|t|fqSr )rrK)r/rFr1rYr2rTr rr5s z'jsonformatter.write..sline,rHrr,s { s "%s": %s%s F)paranoids }%srT) _writecommar?rJsortrPrrOrQrjsonror6rS) r@rTrUrVrWsepsr]lastir^r_r`kvsr rrrrSs0   zjsonformatter.writecCs |jr|jdd|_dSdS)NrsF)ror6rSrdr r rrus  zjsonformatter._writecommacCstSr)rrdr r rr;szjsonformatter._hexfunccCs|jddS)Ns ] )r6rSrdr r rreszjsonformatter.endrf) rgrhrirDrSrurrkr;re __classcell__r r rprrls   rlN) __future__rmercurial.noderr mercurialrrrrmercurial.utilsr objectr rlr r r rs  k