
    |e                         d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZ g dZ G d de      Z G d d	e      Z G d
 de      Zy)z
    pygments.lexers.diff
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for diff/patch formats.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroups)TextCommentOperatorKeywordNameGenericLiteral
Whitespace)	DiffLexerDarcsPatchLexer
WDiffLexerc                   T   e Zd ZdZdZddgZddgZddgZd	d
 ee	e
e	      fd eej                  e	      fd eej                  e	      fd eej                  e	      fd eej                  e	      fd eej                   e	      fd eej                   e	      fd ee
e	      fgiZd Zy)r   z>
    Lexer for unified or context-style diffs or patches.
    Diffdiffudiffz*.diffz*.patchztext/x-diffztext/x-patchrootz( )(.*)(\n)z(!.*|---)(\n)z((?:< |-).*)(\n)z((?:> |\+).*)(\n)z*(@.*|\d(?:,\d+)?(?:a|c|d)\d+(?:,\d+)?)(\n)z((?:[Ii]ndex|diff).*)(\n)z	(=.*)(\n)(.*)(\n)c                 :    | d d dk(  ry| d d dk(  ry| d d dk(  ryy )	N   zIndex: T   zdiff    z--- g? )texts    6/usr/lib/python3/dist-packages/pygments/lexers/diff.pyanalyse_textzDiffLexer.analyse_text.   s:    8y 8w8v     N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r   r   r   StrongDeletedInserted
SubheadingHeadingtokensr   r   r   r   r   r      s     DwG9%I/I 	Xj$
CDx
CD (7??J"GH!8G,<,<j#IJ=++Z8 *8GOOZ+PQ8GOOZ@A(445
F r   r   c                   0   e Zd ZdZdZdgZddgZdZdefdefd	efd
efd e	ee
eeeeej                  ee	      fd e	ee
eeeeej                  e      dfdej                   fdej                   fdej                   fddj#                  e      z   e	ee
ee      fdej&                  dfdej(                  dfd e	ee      fgdefdedfgdedfdefg ed      dej&                  fdej&                  fg ed      dej(                  fdej(                  fgd Zy!)"r   z
    DarcsPatchLexer is a lexer for the various versions of the darcs patch
    format.  Examples of this format are derived by commands such as
    ``darcs annotate --patch`` and ``darcs send``.

    .. versionadded:: 0.10
    zDarcs Patchdpatchz*.dpatchz*.darcspatch)hunkaddfileadddirrmfilermdirmovereplace<>z\{z\}z/(\[)((?:TAG )?)(.*)(\n)(.*)(\*\*)(\d+)(\s?)(\])z+(\[)((?:TAG )?)(.*)(\n)(.*)(\*\*)(\d+)(\s?)commentzNew patches:zContext:zPatch bundle hash:z(\s*)(%s)(.*)(\n)|z\+insert-deleter   z	[^\]].*\nz\]#popz\nz
\[_[^_]*_]specialTextz\[z[^\n\[]+)r   r9   r?   r;   r=   N)r    r!   r"   r#   r$   r%   r&   DPATCH_KEYWORDSr   r   r	   r
   r   r   Dater   r,   joinr   r*   r)   r   r   r-   r   r   r   r   r   7   s    DjG^,I"O
 88HH?hz4llJ:; <hz4llJ01:< goo.'//*"GOO4!CHH_$==WdJ?AG$$h/7??H-(445%
* 7#Hf%

 J'H%

 M"G$$%'**+
 M"GOO$'//*
E'Fr   r   c            	          e Zd ZdZdZdZdgZdgZg Ze	j                  e	j                  z  ZdZdZdZd	Zd
Zeej&                  dfeej(                  dfeefdefgeej&                  dfeej&                  dfeej&                  dfeej&                  dfeej&                  fdej&                  fgeej(                  dfeej(                  dfeej(                  dfeej(                  dfeej(                  fdej(                  fgdZy)r   a
  
    A wdiff lexer.

    Note that:

    * It only works with normal output (without options like ``-l``).
    * If the target files contain "[-", "-]", "{+", or "+}",
      especially they are unbalanced, the lexer will get confused.

    .. versionadded:: 2.2
    WDiffz#https://www.gnu.org/software/wdiff/wdiffz*.wdiffz\{\+z\+\}z\[\-z\-\]z[^{}[\]+-]+inserteddeleted.z#pushr>   )r   rF   rG   N)r    r!   r"   r#   r$   urlr%   r&   r'   re	MULTILINEDOTALLflagsins_opins_cldel_opdel_clnormalr   r*   r)   r   r-   r   r   r   r   r   q   sG   
 D
/CiGIILL299$E FFFFF W%%z2W__i0TN4L	
 W%%w/W%%w/W%%v.W%%v.W%%&7##$
 W__g.W__g.W__f-W__f-W__%7??#
!Fr   r   )r#   rJ   pygments.lexerr   r   r   pygments.tokenr   r   r   r	   r
   r   r   r   __all__r   r   r   r   r   r   <module>rV      sQ    
 8 8   9 
  F7j 7t7 7r   