B
    `P]                 @   s   d Z ddlZddlmZmZ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 ddddgZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZdS )z
    pygments.lexers.data
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for data file format.

    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerExtendedRegexLexerLexerContextincludebygroupsinherit)	TextCommentKeywordNameStringNumberPunctuationLiteralError	YamlLexer	JsonLexerJsonBareObjectLexerJsonLdLexerc                   s    e Zd ZdZ fddZ  ZS )YamlLexerContextz'Indentation context for the YAML lexer.c                s*   t  j|| g | _d| _d| _d | _d S )Nr   )super__init__indent_stackindentnext_indentblock_scalar_indent)selfargskwds)	__class__ \/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pygments/lexers/data.pyr      s
    zYamlLexerContext.__init__)__name__
__module____qualname____doc__r   __classcell__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gZdd Zd	d
 Z	dhddZ
diddZdd Zdd Zdd Zdd Z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#d$fgdefdejfd%ed&fgd'eeed(fgd)eeejeejd(fgd*eed&fd+e
efd,eejfd-e
ed.fgd/eed.fd0efd1eejeed"d2fed3ed4ed5d6eejd7fgd8ejfd9ejfd:ejfd;ejfgd<eejd"d2fd=ejd>fgd?ejd@fdAejdBfdCedDfdEedFfgd0efdefdejfdGejfed3ed5dHeejdIfgedJdKejd.fgdLeejefedJdMejd.fgd%efdNeeej fdOeefdPej fgdQeejd(fdReejd(fgdSefdTefdefd0ejfgedUdVej!fdWefdCed.fgedUdXefdYej!fdZefd[ed.fgdNefdefd\eejd]fdOeed.fgd^eed.fd_ed.fdTefded`fd0e"j#j$fdae"j#j$fgdbeed.fd_ed.fdSefdTefdefd0ejfdcejfgddZ%dj fdfdg	Z&  Z'S )kr   z}
    Lexer for `YAML <http://yaml.org/>`_, a human-friendly data serialization
    language.

    .. versionadded:: 0.11
    ZYAMLZyamlz*.yamlz*.ymlztext/x-yamlc                s    fdd}|S )zDo not produce empty tokens.c             3   s.   |  }|sd S |  |fV  | |_d S )N)groupstartendpos)lexermatchcontexttext)token_classr"   r#   callback/   s
    z%YamlLexer.something.<locals>.callbackr"   )r1   r2   r"   )r1   r#   	something-   s    zYamlLexer.somethingc                s    fdd}|S )zReset the indentation levels.c             3   s>   |  }g |_d|_d|_d |_|  |fV  | |_d S )Nr   r   )r)   r   r   r   r   r*   r+   r,   )r-   r.   r/   r0   )r1   r"   r#   r2   9   s    z(YamlLexer.reset_indent.<locals>.callbackr"   )r1   r2   r"   )r1   r#   reset_indent7   s    zYamlLexer.reset_indentFc                s    fdd}|S )z"Save a possible indentation level.c             3   s   |  }d} rnt||_|j|jk rx|j|jk rB|j |_q(W |j|jkr||jd  }|d |j }n| jt|7  _|r| |fV  |r| t| j|fV  | |_	d S )N )
r)   lenr   r   r   popr*   r   r+   r,   )r-   r.   r/   r0   extra)r*   r1   r"   r#   r2   E   s     
z'YamlLexer.save_indent.<locals>.callbackr"   )r1   r*   r2   r"   )r*   r1   r#   save_indentC   s    zYamlLexer.save_indentc                s    fdd}|S )z+Set the previously saved indentation level.c             3   s^   |  }|j|jk r*|j|j |j|_ s@| jt|7  _| |fV  | |_d S )N)	r)   r   r   r   appendr6   r*   r+   r,   )r-   r.   r/   r0   )implicitr1   r"   r#   r2   [   s    z&YamlLexer.set_indent.<locals>.callbackr"   )r1   r;   r2   r"   )r;   r1   r#   
set_indentY   s    	zYamlLexer.set_indentc                s    fdd}|S )z5Set an explicit indentation level for a block scalar.c             3   sd   |  }d |_|sd S | d}|rBt|jd}t|}|| |_|r`|  |fV  | |_d S )N   r   )r)   r   maxr   intr*   r+   r,   )r-   r.   r/   r0   	incrementcurrent_indent)r1   r"   r#   r2   h   s    

z3YamlLexer.set_block_scalar_indent.<locals>.callbackr"   )r1   r2   r"   )r1   r#   set_block_scalar_indentf   s    z!YamlLexer.set_block_scalar_indentc                s    fdd}|S )z(Process an empty line in a block scalar.c             3   s   |  }|jd ks t||jkr6|rx| |fV  nB|d |j }||jd  }| |fV  | |j  |fV  | |_d S )N)r)   r   r6   r*   r+   r,   )r-   r.   r/   r0   indentationcontent)content_token_classindent_token_classr"   r#   r2   y   s    

z9YamlLexer.parse_block_scalar_empty_line.<locals>.callbackr"   )rF   rE   r2   r"   )rE   rF   r#   parse_block_scalar_empty_linew   s    z'YamlLexer.parse_block_scalar_empty_linec                s    fdd}|S )z-Process indentation spaces in a block scalar.c             3   s   |  }|jd krJt|t|jdkr>|j  |j  d S t||_n&t||jk rp|j  |j  d S |r|  |fV  | |_	d S )Nr   )
r)   r   r6   r>   r   stackr7   r*   r+   r,   )r-   r.   r/   r0   )r1   r"   r#   r2      s    




z5YamlLexer.parse_block_scalar_indent.<locals>.callbackr"   )r1   r2   r"   )r1   r#   parse_block_scalar_indent   s    z#YamlLexer.parse_block_scalar_indentc                s    fdd}|S )z-Process indentation spaces in a plain scalar.c             3   sP   |  }t||jkr.|j  |j  d S |rL|  |fV  | |_d S )N)r)   r6   r   rH   r7   r*   r+   r,   )r-   r.   r/   r0   )r1   r"   r#   r2      s    

z5YamlLexer.parse_plain_scalar_indent.<locals>.callbackr"   )r1   r2   r"   )r1   r#   parse_plain_scalar_indent   s    	z#YamlLexer.parse_plain_scalar_indentz[ ]+(?=#|$)z\n+z#[^\n]*z^%YAML(?=[ ]|$)zyaml-directivez^%TAG(?=[ ]|$)ztag-directivez^(?:---|\.\.\.)(?=[ ]|$)z
block-linez[ ]*(?!\s|$)T)r*   )z
block-linerC   z\nz#pop:2z([ ]+)([0-9]+\.[0-9]+)zignored-linez;([ ]+)(!|![\w-]*!)([ ]+)(!|!?[\w;/?:@&=+$,.!~*\'()\[\]%-]+)z[ ]*$z[ ]+(?=[?:-](?:[ ]|$))z[?:-](?=[ ]|$)z[ ]*z#popz[ ]*(?=#|$)z[ ]+z ([^#,:?\[\]{}"'\n]+)(:)(?=[ ]|$))r;   descriptorszblock-nodesz
flow-nodesz'(?=[^\s?:,\[\]{}#&*!|>\'"%@`-]|[?:-]\S)zplain-scalar-in-block-contextz!!<[\w#;/?:@&=+$,.!~*\'()\[\]%-]+>z+!(?:[\w-]+!)?[\w#;/?:@&=+$,.!~*\'()\[\]%-]*z&[\w-]+z\*[\w-]+z
:(?=[ ]|$)z[|>])zblock-scalar-contentzblock-scalar-headerz\[zflow-sequencez\{zflow-mappingz\'zsingle-quoted-scalarz\"zdouble-quoted-scalarz[?:,]z(?=[^\s?:,\[\]{}#&*!|>\'"%@`])zplain-scalar-in-flow-contextzflow-collectionz\]z([^,:?\[\]{}"'\n]+)(:)(?=[ ]|$)z\}z^[ ]+$z^[ ]*z[\S\t ]+z([1-9])?[+-]?(?=[ ]|$)z[+-]?([1-9])?(?=[ ]|$)z^[ ]+z[ ]+$zquoted-scalar-whitespacesz\'\'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	[ ]+(?=#)z&plain-scalar-in-block-context-new-linez(?::(?!\s)|[^\s:])+z[ ]*(?=[,:?\[\]{}])z[^\s,:?\[\]{}]+)rootzignored-linezyaml-directiveztag-directiverC   z
block-linerK   zblock-nodesz
flow-nodeszflow-collectionzflow-sequencezflow-mappingzblock-scalar-contentzblock-scalar-headerzquoted-scalar-whitespaceszsingle-quoted-scalarzdouble-quoted-scalarz&plain-scalar-in-block-context-new-linezplain-scalar-in-block-contextzplain-scalar-in-flow-contextNc                s    |d krt |d}t ||S )Nr   )r   r   get_tokens_unprocessed)r   r0   r/   )r!   r"   r#   rN     s    
z YamlLexer.get_tokens_unprocessed)F)F)NN)(r$   r%   r&   r'   namealiases	filenames	mimetypesr3   r4   r9   r<   rB   rG   rI   rJ   r	   r
   Singler   Tag	Namespacer   r   r   Typer   Z	Indicatorr   VariableZLabelr   ConstantZEscaper   ZScalarZPlaintokensrN   r(   r"   r"   )r!   r#   r       s   















c               @   sh   e Zd ZdZdZddgZddgZddgZed	Z	ed
Z
edZedZedZddddhZdd ZdS )r   z>
    For JSON data structures.

    .. versionadded:: 1.5
    ZJSONjsonzjson-objectz*.jsonzPipfile.lockzapplication/jsonzapplication/json-objectz-0123456789z.eE+ZtruefalsenullZ0123456789abcdefABCDEFz{}[], 
	c          	   c   s  d}d}d}d}d}d}d}d}	d}
g }xt |D ]\}}|r|rl|| jkrb|d8 }|sjd}qd}d}q4|r|dkr~d}qd}q4|dkrd}q4|dkr4||
tj||
|d  f d}d}d}q4n|r|| jkrq4|r||
t||
| f n|
t||
| fV  d}n|rD|| jkr(q4|
tj	||
| fV  d}n|r|| j
krZq4n|| jkrld}q4|r|
tj||
| fV  n|
tj||
| fV  d}d}n,|	r|| jkrq4|
t||
| fV  d}	|}
|dkrd}q4|| jkrd}q4|d	kr|E d
H  |  d}q4|| j
krB|E d
H  |  d}q4|dkrxT|D ]L\}}}|tkrt|||fV  n(|tjkr|tj|fV  n|t|fV  qRW |  d}	q4|| jkr|E d
H  |  d}	q4|E d
H  |  |
t|fV  q4W |E d
H  |r|
t||
d
 fV  n|r:|
tj||
d
 fV  nr|rX|
tj||
d
 fV  nT|rv|
tj	||
d
 fV  n6|r|
t||
d
 fV  n|	r|
t||
d
 fV  d
S )zParse JSON data.Fr   r=   u   \TrL   >   ntfN:)	enumeratehexadecimalsr:   r   Doublewhitespacesr	   	constantsr   rX   integersfloatsr   ZFloatZIntegerpunctuationsr   clearr   rT   r   )r   r0   Z	in_stringZ	in_escapeZin_unicode_escapeZin_whitespaceZin_constantZ	in_numberZin_floatZin_punctuationr*   queuestop	character_start_tokenZ_textr"   r"   r#   rN     s    










z JsonLexer.get_tokens_unprocessedN)r$   r%   r&   r'   rO   rP   rQ   rR   setrk   rl   rj   rg   rm   ri   rN   r"   r"   r"   r#   r     s   
c               @   s    e Zd ZdZdZg Zg Zg ZdS )r   z
    For JSON data structures (with missing object curly braces).

    .. versionadded:: 2.2

    .. deprecated:: 2.8.0

       Behaves the same as `JsonLexer` now.
    ZJSONBareObjectN)r$   r%   r&   r'   rO   rP   rQ   rR   r"   r"   r"   r#   r   z  s
   	c                   sF   e Zd ZdZdZddgZdgZdgZdd d	D Z fd
dZ	  Z
S )r   zW
    For `JSON-LD <https://json-ld.org/>`_ linked data.

    .. versionadded:: 2.0
    zJSON-LDZjsonldzjson-ldz*.jsonldzapplication/ld+jsonc             C   s   h | ]}d | qS )z"@%s"r"   ).0keywordr"   r"   r#   	<setcomp>  s   zJsonLdLexer.<setcomp>)base	containerr/   	directiongraphidimportZincludedindexrZ   languagelistZnestnoneprefix	propagateZ	protectedreversert   typevalueversionZvocabc             #   sP   xJt  |D ]:\}}}|tjkr<|| jkr<|tj|fV  q|||fV  qW d S )N)r   rN   r   rT   json_ld_keywordsZ	Decorator)r   r0   r*   tokenr   )r!   r"   r#   rN     s    z"JsonLdLexer.get_tokens_unprocessed)r$   r%   r&   r'   rO   rP   rQ   rR   r   rN   r(   r"   r"   )r!   r#   r     s   )r'   reZpygments.lexerr   r   r   r   r   r   r   Zpygments.tokenr	   r
   r   r   r   r   r   r   r   __all__r   r   r   r   r   r"   r"   r"   r#   <module>	   s   $,    E