o
    ůh                     @   s   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 deZG dd	 d	eZG d
d deZdS )z
    pygments.lexers.diff
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for diff/patch formats.

    :copyright: Copyright 2006-2025 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                   @   s   e Zd ZdZdZddgZddgZddgZd	Zd
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d ZdS )r   z>
    Lexer for unified or context-style diffs or patches.
    Diffdiffudiffz*.diffz*.patchztext/x-diffztext/x-patchz"https://en.wikipedia.org/wiki/Diff 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                 C   s@   | d d dkr
dS | d d dkrdS | d d dkrdS d S )	N   zIndex: T   zdiff    z--- g? )textr   r   Q/var/www/Befach/backend/venv/lib/python3.10/site-packages/pygments/lexers/diff.pyanalyse_text0   s   zDiffLexer.analyse_textN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr   r   r   r
   StrongDeletedInserted
SubheadingHeadingtokensr   r   r   r   r   r      s,    
r   c                   @   s*  e Zd ZdZdZdgZddgZdZd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e	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d#S )$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``.
    zDarcs Patchdpatchz*.dpatchz*.darcspatchzhttps://darcs.netz0.10)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*)({})(.*)(\n)|z\+insert-deleter   z	[^\]].*\nz\]#popz\nz
\[_[^_]*_]specialTextz\[z[^\n\[]+)r   r7   r=   r9   r;   N)r   r   r   r    r!   r"   r#   r%   r&   DPATCH_KEYWORDSr   r   r   r	   r   r   Dater
   r+   formatjoinr   r)   r(   r   r   r,   r   r   r   r   r   9   s`    


r   c                	   @   s   e Zd ZdZdZdZdgZdgZg ZdZ	e
je
jB 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dS )r   z
    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.
    WDiffz#https://www.gnu.org/software/wdiff/wdiffz*.wdiffz2.2z\{\+z\+\}z\[\-z\-\]z[^{}[\]+-]+inserteddeleted.z#pushr<   )r   rD   rE   N)r   r   r   r    r!   r%   r"   r#   r$   r&   re	MULTILINEDOTALLflagsins_opins_cldel_opdel_clnormalr
   r)   r(   r   r,   r   r   r   r   r   s   sD    












r   )r    rG   pygments.lexerr   r   r   pygments.tokenr   r   r   r   r	   r
   r   r   __all__r   r   r   r   r   r   r   <module>   s    
(%: