
    |ei                         d Z ddlmZmZ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mZ g dZ G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Zy)z
    pygments.lexers.data
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for data file format.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )LexerExtendedRegexLexerLexerContextincludebygroups)	CommentErrorKeywordLiteralNameNumberPunctuationString
Whitespace)	YamlLexer	JsonLexerJsonBareObjectLexerJsonLdLexerc                   "     e Zd ZdZ fdZ xZS )YamlLexerContextz'Indentation context for the YAML lexer.c                 \    t        |   |i | g | _        d| _        d| _        d | _        y Nr   )super__init__indent_stackindentnext_indentblock_scalar_indent)selfargskwds	__class__s      6/usr/lib/python3/dist-packages/pygments/lexers/data.pyr   zYamlLexerContext.__init__   s4    $'$'#'     )__name__
__module____qualname____doc__r   __classcell__r#   s   @r$   r   r      s    1( (r%   r   c                       e Zd ZdZdZdZdgZddgZdgZd Z	d	 Z
dbd
ZdbdZd Zd Zd Zd Zi ddefdefdej&                  fd e
ej*                        dfd e
ej*                        dfd e
ej,                        dfd eed      dfgddefdej&                  fded fgdd! eee      dfgdd" eeej4                  eej4                        dfgd#d$ e	e      d fd% ee      fd& eej8                        fd' ee      d(fgdd) e	e      d(fd*efd+ eej*                   eed,            f ed-       ed.       ed/      d0 e	ej<                        d1fgd-d2ej4                  fd3ej4                  fd4ej>                  fd5ej<                  fgd.d6 eej8                  d,      fd7ej8                  d8fgd/d9ej8                  d:fd;ej8                  d<fd=e d>fd?e d@fgdAd*efdefdej&                  fdBej8                  f ed-       ed/      dC e	ej<                        dDfgd: edA      dEej8                  d(fgd<dF eej*                  e      f edA      dGej8                  d(fgdHdefdI eeejB                        fdJ ee      fdKejB                  fgdLdM eej8                        dfdN eej8                        dfgdOdPefdQefdefd*ej<                  fgd> edO      dRe jD                  fdSe fd=e d(fgd@ edO      dTe fdUe jD                  fdVe fdWe d(fgdIefdefdX e	ej,                        dYfdJ ee      d(fgdZ e	e      d(fd[ed(fdQefded\fd*e#jH                  jJ                  fd]e#jH                  jJ                  fgd^ e	e      d(fd[ed(fdPefdQefdefd*ej<                  fd_ej<                  fgd`Z&dc fda	Z' xZ(S )dr   zg
    Lexer for YAML, a human-friendly data serialization
    language.

    .. versionadded:: 0.11
    YAMLzhttp://yaml.org/yamlz*.yamlz*.ymlztext/x-yamlc                       fd}|S )zDo not produce empty tokens.c              3      K   |j                         }|sy |j                         |f |j                         |_        y wN)groupstartendposlexermatchcontexttexttoken_classs       r$   callbackz%YamlLexer.something.<locals>.callback.   s8     ;;=D++-d22))+GKs   ?A r;   r<   s   ` r$   	somethingzYamlLexer.something,   s    	& r%   c                       fd}|S )zReset the indentation levels.c              3      K   |j                         }g |_        d|_        d|_        d |_        |j                         |f |j                         |_        y wr   )r2   r   r   r   r   r3   r4   r5   r6   s       r$   r<   z(YamlLexer.reset_indent.<locals>.callback8   sQ     ;;=D#%G GN"#G*.G'++-d22))+GKs   AAr=   r>   s   ` r$   reset_indentzYamlLexer.reset_indent6   s    	& r%   c                       fd}|S )z"Save a possible indentation level.c              3     K   |j                         }d}rt        |      |_        |j                  |j                  k  r|j                  |j                  k  r9|j                  j                         |_        |j                  |j                  k  r9|j                  |j                  kD  r=||j                  d  }|d |j                   }n|xj                  t        |      z  c_        |r|j                         |f |r+|j                         t        |      z   j                  |f |j                         |_	        y w)N )
r2   lenr   r   r   popr3   r	   r4   r5   )r7   r8   r9   r:   extrar3   r;   s        r$   r<   z'YamlLexer.save_indent.<locals>.callbackD   s    ;;=DE&)$i#&&7!-->)0)=)=)A)A)C "-->**W^^; $W^^_ 5#OW^^4##s4y0#kkm[$66kkmCI-{/@/@%GG))+GKs   BEB0Er=   )r;   r3   r<   s   `` r$   save_indentzYamlLexer.save_indentB   s    	&$ r%   c                       fd}|S )z+Set the previously saved indentation level.c              3   `  K   |j                         }|j                  |j                  k  r6|j                  j	                  |j                         |j                  |_        s|xj                  t        |      z  c_        |j                         |f |j                         |_        y wr1   )	r2   r   r   r   appendrF   r3   r4   r5   )r7   r8   r9   r:   implicitr;   s       r$   r<   z&YamlLexer.set_indent.<locals>.callbackZ   s     ;;=D~~ 3 33$$++GNN;!(!4!4##s4y0#++-d22))+GKs   B+B.r=   )r;   rM   r<   s   `` r$   
set_indentzYamlLexer.set_indentX   s    	& r%   c                       fd}|S )z5Set an explicit indentation level for a block scalar.c              3     K   |j                         }d |_        |sy |j                  d      }|r+t        |j                  d      }t	        |      }||z   |_        |r+|j                         |f |j                         |_        y y w)N   r   )r2   r   maxr   intr3   r4   r5   )r7   r8   r9   r:   	incrementcurrent_indentr;   s         r$   r<   z3YamlLexer.set_block_scalar_indent.<locals>.callbackg   s~     ;;=D*.G'AI!$W^^Q!7	N	.<y.H+kkm[$66#iik s   BB
r=   r>   s   ` r$   set_block_scalar_indentz!YamlLexer.set_block_scalar_indente   s    	* r%   c                       fd}|S )z(Process an empty line in a block scalar.c              3   z  K   |j                         }|j                  t        |      |j                  k  r|rk|j                         |f nU|d |j                   }||j                  d  }|j                         |f |j                         |j                  z   |f |j	                         |_        y wr1   )r2   r   rF   r3   r4   r5   )r7   r8   r9   r:   indentationcontentcontent_token_classindent_token_classs         r$   r<   z9YamlLexer.parse_block_scalar_empty_line.<locals>.callbackx   s     ;;=D++3I!<!<<++-);TAA"#?G$?$?@w::;<kkm%7DD{{}W%@%@@*G5 5))+GKs   B8B;r=   )r\   r[   r<   s   `` r$   parse_block_scalar_empty_linez'YamlLexer.parse_block_scalar_empty_linev   s    	& r%   c                       fd}|S )z-Process indentation spaces in a block scalar.c              3   
  K   |j                         }|j                  ht        |      t        |j                  d      k  r5|j
                  j                          |j
                  j                          y t        |      |_        nMt        |      |j                  k  r5|j
                  j                          |j
                  j                          y |r+|j                         |f |j                         |_	        y y wNr   )
r2   r   rF   rR   r   stackrG   r3   r4   r5   r6   s       r$   r<   z5YamlLexer.parse_block_scalar_indent.<locals>.callback   s     ;;=D**2t9GNNA 66MM%%'MM%%'.1$i+t9w:::MM%%'MM%%'kkm[$66#iik s   D Dr=   r>   s   ` r$   parse_block_scalar_indentz#YamlLexer.parse_block_scalar_indent   s    	*  r%   c                       fd}|S )z-Process indentation spaces in a plain scalar.c              3   "  K   |j                         }t        |      |j                  k  r5|j                  j	                          |j                  j	                          y |r+|j                         |f |j                         |_        y y wr1   )r2   rF   r   ra   rG   r3   r4   r5   r6   s       r$   r<   z5YamlLexer.parse_plain_scalar_indent.<locals>.callback   sm     ;;=D4yGNN*!!#!!#kkm[$66#iik s   BBr=   r>   s   ` r$   parse_plain_scalar_indentz#YamlLexer.parse_plain_scalar_indent   s    	* r%   rootz[ ]+(?=#|$)z\n+z#[^\n]*z^%YAML(?=[ ]|$)zyaml-directivez^%TAG(?=[ ]|$)ztag-directivez^(?:---|\.\.\.)(?=[ ]|$)
block-linez[ ]*(?!\s|$)T)r3   )rg   rY   zignored-linez\nz#pop:2z([ ]+)([0-9]+\.[0-9]+)z;([ ]+)(!|![\w-]*!)([ ]+)(!|!?[\w;/?:@&=+$,.!~*\'()\[\]%-]+)rY   z[ ]*$z[ ]+(?=[?:-](?:[ ]|$))z[?:-](?=[ ]|$)z[ ]*z#popz[ ]*(?=#|$)z[ ]+z([^#,?\[\]{}"'\n]+)(:)(?=[ ]|$))rM   descriptorszblock-nodesz
flow-nodesz'(?=[^\s?:,\[\]{}#&*!|>\'"%@`-]|[?:-]\S)plain-scalar-in-block-contextz!!<[\w#;/?:@&=+$,.!~*\'()\[\]%-]+>z+!(?:[\w-]+!)?[\w#;/?:@&=+$,.!~*\'()\[\]%-]*z&[\w-]+z\*[\w-]+z
:(?=[ ]|$)z[|>])block-scalar-contentblock-scalar-headerz\[zflow-sequencez\{zflow-mappingz\'zsingle-quoted-scalarz\"zdouble-quoted-scalarzflow-collectionz[?:,]z(?=[^\s?:,\[\]{}#&*!|>\'"%@`])plain-scalar-in-flow-contextz\]z([^,:?\[\]{}"'\n]+)(:)(?=[ ]|$)z\}rj   z^[ ]+$z^[ ]*z[\S\t ]+rk   z([1-9])?[+-]?(?=[ ]|$)z[+-]?([1-9])?(?=[ ]|$)zquoted-scalar-whitespacesz^[ ]+z[ ]+$z\'\'z[^\s\']+z\\[0abt\tn\nvfre "\\N_LP]z5\\(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})z	[^\s"\\]+"z^(?=---|\.\.\.)z#pop:3z[ ]*(?=:[ ]|:$)z	[ ]+(?=#)&plain-scalar-in-block-context-new-linez(?::(?!\s)|[^\s:])+z[ ]*(?=[,:?\[\]{}])z[^\s,:?\[\]{}]+)rn   ri   rl   c                 @    |t        |d      }t        | 	  ||      S r`   )r   r   get_tokens_unprocessed)r    r:   r9   r#   s      r$   rp   z YamlLexer.get_tokens_unprocessed  s&    ?&tQ/Gw-dG<<r%   )F)NN))r&   r'   r(   r)   nameurlaliases	filenames	mimetypesr?   rB   rI   rN   rV   r]   rb   re   r   r   Singler   Tag	Namespacer   r   r
   Typer   	Indicatorr   VariableLabelr   ConstantEscaper   ScalarPlaintokensrp   r*   r+   s   @r$   r   r      s    D
ChG7#II
,""(EZ(Z (dhh!79IJTXX 6H(,t~~*F k*DA*,
E, 	Z((J)
-E@ 	&j&)>;
AEN 	:j',,
GLLI
OE` 	y,h7&J(?@
;+@+@ ABk*-v6	
aEx 	Yz2F;j!3dhh
; FGI M"M"L!7t}}%,.
yEb 	17<<@/07> $$--(

cE| 	J{'<'<tLMk++<>	
}EN 	K))?;K))>:F23F23	
OEf 	j!Z ({,,-M"L!.t}}%+-
gEN 	%&K))62	
OE^ 	3dhh,. %&K))62
_Et 	J*:t}}EG 0<=$--(
!
uEN 	&$[%:%:; '$[%:%:;	 
OEf 	$z"z"Z dmm$&
gE| 	/0fmm$&!FF#	!
}ET 	/0)62E]] 6"66"!
UEv 
#Z 4>>!:HE0<fE	3
  :!6?:v.z"Z!IJgnn**+#W^^%9%9:*
$ $Yz%:FC:v.z"z"Z dmm$/)
kEFN= =r%   r   c                       e Zd ZdZdZdZddgZg dZg dZ e	d      Z
 e	d	      Z e	d
      Z e	d      Z e	d      Zh dZd Zy)r   aC  
    For JSON data structures.

    Javascript-style comments are supported (like ``/* */`` and ``//``),
    though comments are not part of the JSON specification.
    This allows users to highlight JSON as it is used in the wild.

    No validation is performed on the input JSON document.

    .. versionadded:: 1.5
    JSONzhttps://www.json.orgjsonzjson-object)z*.jsonz*.jsonlz*.ndjsonzPipfile.lock)zapplication/jsonzapplication/json-objectzapplication/x-ndjsonzapplication/jsonlzapplication/json-seqz-0123456789z.eE+truefalsenull0123456789abcdefABCDEFz{}[],>   	
 c           	   #     K   d}d}d}d}d}d}d}d}	d}
d}d}d}d}g }t        |      D ]\  \  }}|rh|r|| j                  v r
|dz  }|sPd}nMd}d}nH|r|dk(  rd}n>d}n;|dk(  rd}n3|dk(  r.|j                  |t        j                  |||dz    f       d}d}d}q|r?|| j
                  v r|r|j                  |t        ||| f       n|t        ||| f d}n|r+|| j                  v r|t        j                  ||| f d}nf|rZ|| j                  v r|| j                  v rd}|r|t        j                  ||| f n|t        j                  ||| f d}d}n
|	r!|| j                  v rM|t         ||| f d}	n|
rJ|d	k7  rg|r&|j                  |t"        j$                  ||| f       n|t"        j$                  ||| f d}
n|r[|d
k(  rd}nQ|rOd}|dk(  rH|r)|j                  |t"        j&                  |||dz    f       n|t"        j&                  |||dz    f d}|r<d}|dk(  rd}
|d
k(  rd}|E d{    |j)                          |t*        ||| f |}|dk(  rd}P|| j
                  v rd}b|dv r|E d{    |j)                          d}|| j                  v r|E d{    |j)                          d}|dk(  rN|D ]5  \  }}}|t        j                  u r|t,        j.                  |f /|||f 7 |j)                          d}	|| j                  v r|E d{    |j)                          d}	/|dk(  rd}8|E d{    |j)                          |t*        |f _ |E d{    |r|t*        ||d f y|r|t        j                  ||d f y|r|t        j                  ||d f y|r|t        j                  ||d f y|r|t        ||d f y|	r|t         ||d f y|
r|t"        j$                  ||d f y|r|t*        ||d f y|r|t*        ||d f yy7 
7 7 7 7 7 ԭw)zParse JSON data.Fr   rQ   u   \Trm   r   */N>   fnt:)	enumeratehexadecimalsrL   r   Doublewhitespacesr   	constantsr
   r}   integersfloatsr   FloatIntegerpunctuationsr   r   rv   	Multilineclearr	   r   rw   )r    r:   	in_string	in_escapein_unicode_escapein_whitespacein_constant	in_numberin_floatin_punctuationin_comment_singlein_comment_multilineexpecting_second_comment_openerexpecting_second_comment_closerr3   queuestop	character_start_token_texts                        r$   rp   z JsonLexer.get_tokens_unprocessed  sK     			!$*/'*/'( ( j	.OD)$ D$5$55)Q.)0(-I,-)$)	 C',-)$)	$& $I#%LL%U4!88L!MN %I %I()% 0 00LL%T%5E!FGT%-=== % .W--tE$/???# -$++-#HtE$/???eD1AAA!	    1 11[$uT*:::!& #$LL%eD9I!JKeD1AAA$)! &#6:346;3 C' !LL%1B1BDtVWxDX)YZ"'):):Dtax<P"PP/4,027/#(,%#%+/( !  UDt$444 EC 	d... $o-   "dmm+    	c!-2 4)FFE .$dhh55$fe334 !%d///   !%c!26/ !  UI--Uj	.Z UV,,tEF|33ef55))4<77T%&\11d56l22ef55!UV,,,UV,, -g !  ! !4 ! ! 	so   I
Q&QAQ&Q+Q&QA>Q& Q&Q&'Q"('Q&Q$CQ&Q&Q&Q&"Q&$Q&N)r&   r'   r(   r)   rq   rr   rs   rt   ru   setr   r   r   r   r   r   rp   r=   r%   r$   r   r     sh    
 D
 C}%GAI EI =!H[FO$I/0Lw<L:Ke-r%   r   c                        e Zd ZdZdZg Zg Zg Zy)r   z
    For JSON data structures (with missing object curly braces).

    .. versionadded:: 2.2

    .. deprecated:: 2.8.0

       Behaves the same as `JsonLexer` now.
    JSONBareObjectN)r&   r'   r(   r)   rq   rs   rt   ru   r=   r%   r$   r   r     s     DGIIr%   r   c                   t    e Zd ZdZdZdZddgZdgZdgZdD  ch c]  }d	|z  	 c}} Z	fd
Z
xZS c c}} w )r   z=
    For JSON-LD linked data.

    .. versionadded:: 2.0
    zJSON-LDzhttps://json-ld.org/jsonldzjson-ldz*.jsonldzapplication/ld+json)base	containerr9   	directiongraphidimportincludedindexr   languagelistnestnoneprefix	propagate	protectedreverser   typevalueversionvocabz"@%s"c              #      K   t         |   |      D ]C  \  }}}|t        j                  u r$|| j                  v r|t        j
                  |f =|||f E y wr1   )r   rp   r   rw   json_ld_keywords	Decorator)r    r:   r3   tokenr   r#   s        r$   rp   z"JsonLdLexer.get_tokens_unprocessed  s^     #(7#A$#G 	*E5% Ud.C.C%CT^^U22UE))		*s   AA)r&   r'   r(   r)   rq   rr   rs   rt   ru   r   rp   r*   ).0keywordr#   s   00@r$   r   r     s\     D
 C#GI&'I
 	':* *;s   4r   N)r)   pygments.lexerr   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   __all__r   r   r   r   r   r=   r%   r$   <module>r      sn    $ $ $ K(| (T=" T=nG- G-T) "/*) /*r%   