HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/docutils/utils/__pycache__/code_analyzer.cpython-36.pyc
3

w2�e-�@s�dZddlmZy(ddlZddlmZddlmZdZWne	e
fk
rTdZYnXdd	d
gZGdd�de�ZGd
d�de
�ZGdd�de
�ZdS)z@Lexical analysis of formal languages (i.e. code) using Pygments.�)�ApplicationErrorN)�get_lexer_by_name)�_get_ttype_classTF�token�text�c@seZdZdS)�
LexerErrorN)�__name__�
__module__�__qualname__�rr�#/usr/lib/python3.6/code_analyzer.pyrsrc@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)�Lexera�Parse `code` lines and yield "classified" tokens.

    Arguments

      code       -- string of source code to parse,
      language   -- formal language the code is written in,
      tokennames -- either 'long', 'short', or '' (see below).

    Merge subsequent tokens of the same token-type.

    Iterating over an instance yields the tokens as ``(tokentype, value)``
    tuples. The value of `tokennames` configures the naming of the tokentype:

      'long':  downcased full token type name,
      'short': short name defined by pygments.token.STANDARD_TYPES
               (= class argument used in pygments html output),
      'none':      skip lexical analysis.
    �shortcCsr||_||_||_d|_|dks(|dkr,dSts8td��yt|j�|_Wn$tjj	k
rltd|��YnXdS)zE
        Set up a lexical analyzer for `code` in `language`.
        NrrZnonez0Cannot analyze code. Pygments package not found.z6Cannot analyze code. No Pygments lexer found for "%s".)rr)
�code�language�
tokennames�lexer�
with_pygmentsrr�pygments�utilZ
ClassNotFound)�selfrrrrrr
�__init__/szLexer.__init__ccstt|�}t|�\}}x6|D].\}}||kr4||7}q||fV||}}qW|jd�rb|dd�}|rp||fVdS)zrMerge subsequent tokens of same token-type.

           Also strip the final newline (added by pygments).
        �
N����)�iter�next�endswith)r�tokensZlasttypeZlastval�ttype�valuerrr
�mergeGs


zLexer.mergeccs�|jdkrg|jfVdStj|j|j�}xV|j|�D]H\}}|jdkr\t|�j�jd�}n
t	|�g}dd�|D�}||fVq6WdS)z7Parse self.code and yield "classified" tokens.
        NZlong�.cSsg|]}|tkr|�qSr)�unstyled_tokens)�.0�clsrrr
�
<listcomp>esz"Lexer.__iter__.<locals>.<listcomp>)
rrrZlexr"r�str�lower�splitr)rrZ	tokentyper!�classesrrr
�__iter__Ys


zLexer.__iter__N)r)r	r
r�__doc__rr"r,rrrr
rs
rc@s eZdZdZdd�Zdd�ZdS)�NumberLinesatInsert linenumber-tokens at the start of every code line.

    Arguments

       tokens    -- iterable of ``(classes, value)`` tuples
       startline -- first line number
       endline   -- last line number

    Iterating over an instance yields the tokens with a
    ``(['ln'], '<the line number>')`` token added for every code line.
    Multi-line tokens are splitted.cCs"||_||_dtt|��|_dS)Nz%%%dd )r�	startline�lenr(�fmt_str)rrr/Zendlinerrr
rvszNumberLines.__init__ccs�|j}dg|j|fVxh|jD]^\}}|jd�}x<|dd�D],}||dfV|d7}dg|j|fVq@W||dfVq WdS)N�lnrrrr)r/r1rr*)r�linenor r!�lines�linerrr
r,|s
zNumberLines.__iter__N)r	r
rr-rr,rrrr
r.isr.)r-ZdocutilsrrZpygments.lexersrZpygments.formatters.htmlrr�ImportError�SyntaxErrorr$r�objectrr.rrrr
�<module>s
N