
    ,h=                         d Z ddlZddl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gZg dZ G d de      Zy)z
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexerincludebygroupsdefaultwordsline_re)	CommentOperatorKeywordNameStringNumberPunctuationError
WhitespaceCrystalLexer)z!=z!~!%z&&&z***+-/z<=>z<<z<=<z===z==z=~=z>=z>>>z[]=z[]?z[]^z|||~c                   @
   e Zd ZdZdZdZddgZdgZdgZdZ	e
j                  e
j                  z  Zd	 Zd
 Zg dej"                  f edj'                         d      ef edj'                         dd      ej*                  fdej*                  f eg dd      ej,                  fd eeeej4                        fd eeeej4                        dfdedfd eeeej4                        df edj'                         dd      ej*                  fdej6                  j*                  f edj'                         dd      ej6                  fdej6                  j*                  fdefdefd ej8                  d!fd" eeej<                        d#fd$ej<                  d#fd% eeej<                        d#fd& eej@                  ee!      fd' eejD                  ee!      fd( eejF                  ee!      fd) eejH                  ee!      fd* eejH                  ee!      fd+ eejH                  ee!      fd, eejJ                  ee!      fd-ejL                  jN                  fd.ejL                  jP                  fd/ejL                  jR                  fd0ejL                  jR                  fd1ejL                  jR                  fd2e!f e*d3      d4ejV                  fd5ej,                  fd6ejX                  d7fd8ejX                  d9fd: ee!eejZ                        d;f ee.d<=       ee!ejB                        fd> ee!e      fd?efd@e!fdAe!fdBe/fdCefdD eejN                  e!ej`                        dEf e1dE      gdFejN                  fdG ee/eejN                  ee/      f e1dE      gdHejX                  dIfdJejX                  dEf e*dK      gdLejX                  dMfgdNejd                  fg e*dO       e*dP      g e*dO      dQej<                  fdRej<                  fg e*dO      dQejf                  fdRejf                  fg e*dO      dSej<                  fdTej<                  fdQej<                  fdUej<                  fdVej<                  dEfgdWej8                  dEfgd6ejX                  dIfdXejX                  dEfdYef e*dK      gd8ejX                  dIfdZejX                  dEf e*dK      gd[e!dIfd\e!dEf e*dK      gd]Z4e4jk                   e              y^)_r   z"
    For Crystal source code.
    Crystalzhttps://crystal-lang.orgcrcrystalz*.crztext/x-crystalz2.2c              #   H  K   |j                  d      }|t        |j                  d      f |j                  d      t        j                  |j                  d      f |j                  d      t        j
                  |j                  d      f |j                  d      t        j                  |j                  d      f |j                  j                  dg       }t        |       }|j                  |j                  d      dk(  |j                  d      f       |j                  d      |_
        |j                  d      |_        t        |      dk  r| j                  |	      E d {    n.|j                  t        j                  |j                  d      f |j                         |_
        |r`|D ]:  \  }}g }t        j                  |j                   |j                        D ]  }|r|j                         j#                         }	n|j                         j%                         }	|	|k(  r|D ]3  }
|
j                         t        j                  |
j                         f 5 |j                         t        j
                  |j                         f |j                         |_
         |j                  |        |D ])  }
|
j                         t&        |
j                         f + = t        |j                         |_        |d d = y y 7 w)
N            heredocstackz<<-   d   )context)startr
   groupr   Heredoc	Delimiter__dict__
setdefaultboolappendposendlenget_tokens_unprocessedr   finditertextstriprstripr   )selfmatchctxr-   r)   	outermosttoleranthdnamelinescheckamatchs              Y/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pygments/lexers/crystal.pyheredoc_callbackzCrystalLexer.heredoc_callback)   st     AXu{{1~--kk!nfnnekk!n<<kk!nf..A>>kk!nfnnekk!n<<||..~rB\**	U[[^u4ekk!nEF++a.))A,|s"2232???''6>>5;;q>99))+$0 D &$--chh@ DE % 3 3 5 % 4 4 6&+ QF"(,,.&..&,,."PPQ#kkmV-=-=u{{}LL"'))+U+D #( D$llneV\\^CCD#D& #((mCGQ-  @s   E0L"2L3F-L"c            
      h   i } dt         j                  ft        t        d      t         j                  fdt         j                  fdt         j                  fdt         j                  dfdt        t         j                  t              fd	t         j                  d
fdt         j                  dfg| d<   dt         j                  d	fdt         j                  d	fdt         j                  dffD ]-  \  }}}t        |dk(  rdnd      d| d|fd|f||dfg| d|z   <   / dD ]  \  }}}}d|z   t         j                  fg||k7  |t         j                  dfgz  z   |t         j                  dft        d      d|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d z   <   | d   j                  d!|z   t         j                  |d z   f       d"|z   dz   t         j                  fg||k7  |t         j                  dfgz  z   |t         j                  dfd|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d#z   <   | d   j                  d$|z   t         j                  |d#z   f       d"|z   dz   t         j                  fg||k7  |t         j                  dfgz  z   |d%z   t         j                  dft        d&      d|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d'z   <   | d   j                  d(|z   t         j                  |d'z   f        | S ))Nz
\:\w+[!?]?z\:prefixz:'(\\\\|\\[^\\]|[^'\\])*'z'(\\\\|\\'|[^']|\\[^'\\]+)'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)"zsimple-stringz(?<!\.)`zsimple-backtickstringsstringsymbacktick`string-escapedstring-intp-escapedz[^\\z#]+[\\#]#popzsimple-))\{\}z{}cb)\[\]z\[\]sb)z\(z\)z()pa)r   r   z<>ab)\|r]   r]   piz\\#pushz[\\#]z[^\\#z]+z-intp-stringz%Q?z\\[\\z-stringz%[qwi]z[imsx]*string-intpz-regexz%r)r   Symbolr   CRYSTAL_OPERATORSCharr   r   DoubleBacktickr   Otherr4   Regex)statesnamettyper6   lbracerbracebraceccs          rF   gen_crystalstrings_rulesz%CrystalLexer.gen_crystalstrings_rulesX   s   FMM*$U3V]]C)6==9+V[[9FMM<0&(LM6==/2&//+<=
y "*6==# >!&s ;!+V__c B!C 	D% DEM(?TUS!5)5!eV$	&F9T>"	,)	6)FFGT .+6!w/& +
 v.-.7"S(&,,7G#d*FLL9			+F4&' 9$$fvov||&*>&9&; < G#c)6<<8&6!w/& &
 v.7"S(&,,7G#d*FLL9	&F4	>" 9$$i&&8&,,&*9n&6 7 G#c)6<<8%6!w/& %
 )#V\\6:&7"S(&,,7G#d*FLL9			%F4=! 9$$efnfll&*8m&5 6Q)	6V     z#.*?$z
                abstract asm begin break case do else elsif end ensure extend if in
                include next of private protected require rescue return select self super
                then unless until when while with yield
            z\b)suffixzz
                previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
                __END_LINE__
            z(?<!\.))rJ   rq   z(\.(is_a\?|nil\?|responds_to\?|as\?|as\b))truefalsenilz2(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z)(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)funcnamezdef(?=[*%&^`~+-/\[<>=])zI(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)	classnamezN
                instance_sizeof offsetof pointerof sizeof typeof
            z+(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)z
                abort at_exit caller exit gets loop main p pp print printf puts
                raise rand read_line sleep spawn sprintf system
            z(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)z/(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<-?)("|\')()(\2)(.*?\n)__END__end-partab  (?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)multiline-regexz(?<=\(|,|\[)/z(\s+)(/)(?![\s=])z5(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zA(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z3(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?z8(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z@@[a-zA-Z_]\w*z@[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rL   zi\?(\\[MC]-)*(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)(?!\w)z[A-Z][A-Z_]+\b(?!::|\.)z\{%in-macro-controlz\{\{in-macro-exprz!(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)in-annotz(\.|::)rI   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*(?:[!?](?!=))?z:(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]z\s+z\(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rT   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rU   r_   rV   rootz#\{in-intpzR\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})ra   rQ   rS   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rX   rY   )r}   ru   rv   r~   ra   rQ   rR   zinterpolated-regexzinterpolated-stringry   rx   rz   r{   r|   N)6__name__
__module____qualname____doc__rj   urlaliases	filenames	mimetypesversion_addedreDOTALL	MULTILINEflagsrG   ro   r	   Singler   splitr   PseudoConstantr   r   r   	NamespaceBuiltinPreprocr   rh   r   Octr
   HexBinFloatIntegerVariableClassInstanceGlobalr   rd   Interpol	Decoratorrc   r   Functionr   Escaperg   tokensupdate rp   rF   r   r      s    D
$CYGI!"IMII$E- ^FRF
w~~&F
   	' )0	1F
   
5: <C>>KF
 9'..IF
 +E:G<L<LMF
  Cgz4>>:<!F
$ :gz4>>:JH%F
( (*=)F
* Zgz4>>:KI+F
0  
5:;B>>K1F
8 <T\\=P=PQ9F
<   
5: <@<<I=F
FY\\  "GF
N @OF
T *+;<UF
V *5WF
Z. $J=?P/R[F
L v||->?MF
P "8J#E QF
d Ffjj*h79eF
h Rfjj*h79iF
l Dfjj*h79mF
t,fllJ9;uF
z,fllJ9;{F
@+fllJ9;AF
F Ifnnj(;=GF
L  3 34MF
N t}}556OF
P t}}++,QF
R .t}}/C/CDSF
T  !5!56UF
V HWF
X IYF
\ [[]F
d (7eF
h V__&89iF
j foo7kF
n 2h
DNN;ZIoF
v $Z8h.0wF
z =h%'{F
@ +D1AF
B%&.0CF
F "8,GF
H {+IF
J Z KF
P6 djj(DMM:FD FO
 4::&-k:tzz:{SUFO	
 FOOW-FOOV,FO
 V__i0

 c]]
 M"$% 

 M"v||$&
 M"v||$& 
 M"fll#V\\"v||$&,,'&,,/
 GOOV,
 V__g.V__f- '*FO	
 foow/foov.FO
 Hg&Hf%FO
MKFX MM*,-rp   )r   r   pygments.lexerr   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   __all__rc   r   r   rp   rF   <module>r      sI    
 # # # 
 Q.% Q.rp   