o
    3Ih                     @   sr   d Z ddl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mZ ddlmZ dgZG dd deZdS )z
    pygments.lexers.typst
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for Typst language.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )
RegexLexerwordsbygroupsinclude)
CommentKeywordNameStringPunctuation
WhitespaceGenericOperatorNumberText)get_choice_opt
TypstLexerc                   @   sf  e Zd ZdZdZdgZdgZdgZdZdZ	dZ
ed	ged
ddejdfedddejdfedddejdfdedfdedfdeejed	fdeejedfedddejfdejfdejfdejfdejfdejfdejfgeddejfdejfdej fd ed!fd"e!j"fd#ee#ee#fd$ee#ee#fd%ee#efd&ee#ee#ejefd'ej$fd(ej$fd)e%fed*d+e!j"fd,ej fed-d.defd/efd0efd1ed2fd3ed4fd5e#fd6e%fgeded7e%fed8efed9e
 e&fd:efd;efd ed4fed*d<eeje#efd=eejefd>ejfd?efd@efdAe!j'fdBe#fgdCe(j)fdDe(j*fgedd1ed	fdEedfdFed4fdAe!j'fdGefdHe&fedIdde&j+fdJe&fdKeejefdLeejedfedMddejfedNddejfedOddejfdPeeejfdQejfdRejfdSejfdTejfdUejfedVddejfdWejfdBe#fdXefgdYed4fdZe#d4fedgd[Z,d\d] Z-d^d_ Z.d`S )ar   z
    For Typst code.

    Additional options accepted:

    `start`
        Specifies the starting state of the lexer (one of 'markup', 'math',
        'code'). The default is 'markup'.
    Typsttypstz*.typztext/x-typstzhttps://typst.appz2.18)+z[|z|]z||*z:=z::=...'-z=:z!=z>>z>=z>>>z<<z<=z<<<z->z|->z=>z|=>z==>z-->z~~>z~>z>->z->>z<-z<==z<--z<~~z<~z<-<z<<-z<->z<=>z<==>z<-->><~:|markup)z#letz#setz#showz\b)suffixinline_code)z#importz#include)z#ifz#forz#whilez#exportz#\{codez#\(z(#[a-zA-Z_][a-zA-Z0-9_-]*)(\[)z(#[a-zA-Z_][a-zA-Z0-9_-]*)(\())z#truez#falsez#nonez#autoz#[a-zA-Z_][a-zA-Z0-9_]*z#0x[0-9a-fA-F]+z#0b[01]+z	#0o[0-7]+z#[0-9]+[\.e][0-9]+z#[0-9]+commentz	^\s*=+.*$z[*][^*]*[*]z_[^_]*_z\$mathz`[^`]*`z^(\s*)(-)(\s+)z^(\s*)(\+)(\s+)z^(\s*)([0-9]+\.)z^(\s*)(/)(\s+)([^:]+)(:)z<[a-zA-Z_][a-zA-Z0-9_-]*>z@[a-zA-Z_][a-zA-Z0-9_-]*z\\#	into_codez```(?:.|\n)*?```z"https?://[0-9a-zA-Z~/%#&=\',;.+?]*)z---\r   z--r   z\Bz\\\[z\\\]z\[z#pushz\]z#popz[ \t]+\n?|\nz ((?![*_$`<@\\#\] ]|https?://).)+)z\_z\^z\&)_^&;)+/=z\\z\\\$z ([a-zA-Z][a-zA-Z0-9-]*)(\s*)(\()z([a-zA-Z][a-zA-Z0-9-]*)(:)z([a-zA-Z][a-zA-Z0-9-]*)z[0-9]+(\.[0-9]+)?z\.{1,3}|\(|\)|,|\{|\}z"[^"]*"z[ \t\n]+z//.*$z/[*](.|\n)*?[*]/z\(|\{z\)|\}z	,|\.{1,2}r+   )andornotz(=>|<=|==|!=|>|<|-=|\+=|\*=|/=|\+|-|\\|\*z([a-zA-Z_][a-zA-Z0-9_-]*)(:)z([a-zA-Z_][a-zA-Z0-9_-]*)(\())
asbreakexportcontinueelseforifinreturnwhile)importr   )autononetruefalsez([0-9.]+)(mm|pt|cm|in|em|fr|%)z0x[0-9a-fA-F]+z0b[01]+z0o[0-7]+z[0-9]+[\.e][0-9]+z[0-9]+)letsetshowz([a-zA-Z_][a-zA-Z0-9_-]*)r   z;\bz\n)rootr#   r   r"   r!   r    r   c                 K   s,   t |dg ddd| _tj| fi | d S )Nstart)r   r    r"   r   T)r   start_stater   __init__)selfoptions rG   U/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/pygments/lexers/typst.pyrD      s   zTypstLexer.__init__c                 c   s6    dg}| j dkr|| j  t| ||E d H  d S )NrA   r   )rC   appendr   get_tokens_unprocessed)rE   textstackrG   rG   rH   rJ      s
   
z!TypstLexer.get_tokens_unprocessedN)/__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedMATH_SHORTHANDSr   r   r   Declaration	NamespaceReservedr
   r   r   FunctionConstantVariabler   HexBinOctFloatIntegerr   HeadingStrongEmphr	   Backtickr   Labelr   r   Doubler   Single	MultilineWordtokensrD   rJ   rG   rG   rG   rH   r      s    
	

 iN)rP   pygments.lexerr   r   r   r   pygments.tokenr   r   r   r	   r
   r   r   r   r   r   pygments.utilr   __all__r   rG   rG   rG   rH   <module>   s    
0