
    L&iX                         d Z ddl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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 g dZdZ G d d	e          Z G d
 de          Z G d de          ZdS )z
    pygments.lexers.ruby
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Ruby and related languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
Lexer
RegexLexerExtendedRegexLexerincludebygroupsdefaultLexerContextdo_insertionswordsline_re)TextCommentOperatorKeywordNameStringNumberPunctuationErrorGeneric
Whitespaceshebang_matches)	RubyLexerRubyConsoleLexer
FancyLexer)*z**-+z-@z+@/%&|^`~z[]z[]=<<z>><<>z<=>>z>=z==z===c                      e Zd ZdZdZdZg dZg dZddgZe	j
        e	j        z  Zd Zd	 Zg d
ej        fdej        fdej        f edd          efd eeeej                  fd eee          dfdedfd eee          df edd          ej        fdej        f edd          ej        fdej        f eddd          ej        fdej        j        fdefd efd!ej        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!j#        ee          fd) ee!j$        ee          fd* ee!j%        ee          fd+ej&        j'        fd,ej&        j(        fd-ej&        j)        fd.ej&        j)        fd/ej&        j)        fd0ef e*d1          d2ej+        fd3ej,        f ee-d45           eeej                  fd6 eee          fd7efd8efd9efd:e.fd;efd<e.d=fd> eej'        eej/                  d?f e0d?          gd<e.d=fd@ed?fdAej'        d?f e0d?          gdB ee.e          d?fd<edCf e*dD          gdEej1        dCfdFej1        d?f e*dD          gdGej1        dHfdIej1        fdJej1        fg e*dK          dLej2        fg e*dK          dMej         fdNej         fg e*dK          dMej3        fdNej3        fg e*dK          dOej         fdPej         fdMej         fdQej         fdRej         d?fgdSej        d?fgdTZ4e45                     e                       dU Z6dVS )Wr   z
    For Ruby source code.
    Rubyzhttp://www.ruby-lang.org)rubyrbduby)	z*.rbz*.rbwRakefilez*.rakez	*.gemspecz*.rbxz*.dubyGemfileVagrantfileztext/x-rubyzapplication/x-rubyc              #     K   |                     d          }|t          |                    d          fV  |                     d          t          j        |                    d          fV  |                     d          t          j        |                    d          fV  |                     d          t          j        |                    d          fV  |j                            dg           }t          |           }|	                    |                    d          dv |                    d          f           |                     d          |_
        |                    d          |_        t          |          dk     r|                     |	          E d {V  n)|j
        t          j        |                    d          fV  |                                |_
        |rw|D ]S\  }}g }t          j        |j        |j
                  D ]}|r'|                                                                }	n&|                                                                }	|	|k    r|D ]7}
|
                                 t          j        |
                                fV  8|                                 t          j        |                                fV  |                                |_
         nK|	                    |           |D ]2}
|
                                 t&          |
                                fV  3Ut          |j                  |_        |d d = d S d S )
N            heredocstack)z<<-z<<~   d   context)startr   groupr   Heredoc	Delimiter__dict__
setdefaultboolappendposendlenget_tokens_unprocessedr   finditertextstriprstripr   )selfmatchctxr=   r8   	outermosttoleranthdnamelinescheckamatchs              a/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/pygments/lexers/ruby.pyheredoc_callbackzRubyLexer.heredoc_callback*   s      AXu{{1~~----kk!nnfnekk!nn<<<<kk!nnf.A>>>>kk!nnfnekk!nn<<<<|..~rBB\***	U[[^^~=u{{1~~NOOO++a..))A,,|s""2232??????????'6>5;;q>>9999))++ 	 $0 D D &$-ch@@ D DE 7 % 3 3 5 5 % 4 4 6 6&+ Q QF"(,,..&.&,,.."PPPPP#kkmmV-=u{{}}LLLL"'))++U++++ #( D D$llnneV\\^^CCCCC#(mmCGQQQ-	  	     c                  v   d } d }i }dt           j        ft          t          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dt           j        dfg|d<   dt           j        d
fdt           j        dfdt           j        d
fdt           j        dffD ])\  }}}t          d          d|z  |fd|f||dfg|d|z   <   *dD ]\  }}}}d|z   dz   t           j
        f|t           j
        df|t           j
        dft          d          d|z   dz   t           j
        fd |z   d!z   t           j
        fg||d"z   <   |d                             d#|z   t           j
        |d"z   f           d|z   dz   t           j
        f|t           j
        df|t           j
        dfd|z   dz   t           j
        fd |z   d!z   t           j
        fg||d$z   <   |d                             d%|z   t           j
        |d$z   f           d|z   dz   t           j        f|t           j        df|d&z   t           j        dft          d'          d|z   dz   t           j        fd |z   d!z   t           j        fg||d(z   <   |d                             d)|z   t           j        |d(z   f           |dxx         d*| fd+t           j
        fd,|fd-t	          t          t           j
        d           fd.t	          t          t           j
        d           fd/|fgz  cc<   |S )0Nc              3     K   |                     d          t          j        |                    d          fV  t	          |                    d          ddg          }|                     |          D ]#\  }}}|                     d          |z   ||fV  $|                     d          t          j        |                    d          fV  |                                |_        d S )Nr4   r6   r   interpolated-regexr;   r7   )r=   r   Regexr>   r	   rH   rF   rE   rM   rN   rO   nctxitvs          rV   intp_regex_callbackz<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callbackZ   s      ++a..&,A>>>>A4H3IJJD66t6DD - -1akk!nnQ&1,,,,,++a..&,A>>>>iikkCGGGrX   c              3     K   |                     d          t          j        |                    d          fV  t	          |                    d          ddg          }|                     |          D ]#\  }}}|                     d          |z   ||fV  $|                     d          t          j        |                    d          fV  |                                |_        d S )Nr4   r6   r   interpolated-stringr;   r7   )r=   r   Otherr>   r	   rH   rF   rE   r]   s          rV   intp_string_callbackz=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackb   s      ++a..&,A>>>>A4I3JKKD66t6DD - -1akk!nnQ&1,,,,,++a..&,A>>>>iikkCGGGrX   z\:@{0,2}[a-zA-Z_]\w*[!?]?z\:@{0,2}prefixz:'(\\\\|\\[^\\]|[^'\\])*'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)"zsimple-string-double'zsimple-string-singlez(?<!\.)`zsimple-backtickstringszstring-doublezstring-singlesymbacktickr%   string-intp-escapedz	[^\\%s#]+[\\#]#popzsimple-))\{\}z{}cb)z\[z\]z\[\]sb)\(z\)z()pa)r(   r*   r)   abz\\[\\]#pushz[\\#z[^\\#z]+z-intp-stringz%[QWx]?z-stringz%[qsw]z[mixounse]*string-intpz-regexz%rz-(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[mixounse]*)z"%[qsw]([\W_])((?:\\\1|(?!\1).)*)\1z&(%[QWx]([\W_]))((?:\\\2|(?!\2).)*)(\2)z<(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)z'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)z*(%([^a-zA-Z0-9\s]))((?:\\\2|(?!\2).)*)(\2))r   Symbolr   RUBY_OPERATORSr   r   DoubleSingleBacktickr   re   rD   r\   r   )	rb   rf   statesnamettyperF   lbracerbracebraceccs	            rV   gen_rubystrings_ruleszRubyLexer.gen_rubystrings_rulesY   s   	" 	" 	"	" 	" 	"  *6=9>+666F)6=9FM<0&fm[1136="896="89&/+<=
y "1&- E!0&- E!&s ;!+V_c B!C 		 		D%
 -..#U+5!eV$	&F9T>""'!	6 !	6)FFGT G#c)6<8w/v.-..7"S(&,7G#d*FL9+F4&' 9$$j6&96<&*>&9&; < < < G#c)6<8w/v.7"S(&,7G#d*FL9&F4	>" 9$$i&&8&,&*9n&6 7 7 7 G#c)6<8w/-'v>&&7"S(&,7G#d*FL9%F4=! 9$$efnfl&*8m&5 6 6 6 6 	y= " 3FLA6!# Mj&,557 8j&,557 ;!##
 	
* rX   z\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)BEGINENDaliasbeginbreakcasezdefined?doelseelsifrF   ensureforifinnextredorescueraiseretryreturnsuperthenundefunlessuntilwhenwhileyield\bsuffixz.(module)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z
(def)(\s+)funcnamezdef(?=[*%&^`~+-/\[<>=])z(class)(\s+)	classname)
initializenewloopr   extendr   attr_readerattr_writerattr_accessorattrcatchthrowprivatemodule_functionpublic	protectedtruefalsenilz(not|and|or)\b)autoloadblock_givenconst_definedeqlequalfrozenr   instance_ofis_aiteratorkind_ofmethod_definedr   private_method_definedprotected_method_definedpublic_method_defined
respond_totaintedz\?z(chomp|chop|exit|gsub|sub)!)eArrayFloatIntegerr   __id____send__abort	ancestorsat_exitr   bindingcallcccallerr   chompchop
class_evalclass_variablesclonezconst_defined?	const_getconst_missing	const_set	constantsdisplaydupevalexecexitr   failforkformatfreezegetcgetsglobal_variablesgsubhashidincluded_modulesinspectinstance_evalinstance_methodinstance_methodsinstance_variable_getinstance_variable_setinstance_variableslambdaloadlocal_variablesr   methodmethod_missingmethodsmodule_evalr   	object_idopenpprintprintfprivate_class_methodprivate_instance_methodsprivate_methodsprocprotected_instance_methodsprotected_methodspublic_class_methodpublic_instance_methodspublic_methodsputcputsr   randreadline	readlinesrequirescanselectrM   sendset_trace_funcsingleton_methodssleepsplitsprintfsrandsubsyscallsystemtainttestr   to_ato_s	trace_vartrapuntaintuntrace_varwarnz(?<!\.))rh   r   z__(FILE|LINE)__\bz2(?<!\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=])z#(0_?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?z.(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?z (0b[01]+(?:_[01]+)*)(\s*)([/?])?([\d]+(?:_\d+)*)(\s*)([/?])?@@[a-zA-Z_]\w*@[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rk   zI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)rg   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*[!?]?z:(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]\s+ru   defexprz(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)rp   r'   z	[A-Z_]\w*z(\))(\.|::)?ry   rootrq   rr   z#\{in-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rz   z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})ro   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+)r+  r   r   r*  r,  rz   rn   r[   rd   r%  r$  c                 "    t          | d          S )Nzruby(1\.\d)?r   )rJ   s    rV   analyse_textzRubyLexer.analyse_text  s    t_555rX   N)7__name__
__module____qualname____doc__r   urlaliases	filenames	mimetypesreDOTALL	MULTILINEflagsrW   r   r   Hashbangr~   	Multiliner   r   r   r   r   	NamespacePseudor   WordBuiltinPreprocr   r   r\   r   OctHexBinr   VariableClassInstanceGlobalr   CharConstantr|   r   Functionr   InterpolEscapere   tokensupdater.   rX   rV   r   r      s         D
$C$$$G> > >I 45II$E-  -  - ^e e ePG
'*+G
w~&G
 &w'89G

 U = FK	L L L
 G
%Xgz4>::<G
 HHWj99:FG
  (*=!G
" hhw
;;[I#G
& U R 	  
 ^'G
2 .3G
4 U B KP	Q Q Q
 \5G
@ ,T\:AG
B U '* 0:%+I I I, \-CG
p "4<#67qG
t CuG
z -.>?{G
| *5}G
@. $8D&,779J/LAG
r v|->?sG
v "88J#E#E wG
J 4Xfj*h779KG
N ?Xfj*h779OG
R 1Xfj*h779SG
V -Xfnj(;;=WG
\  34]G
^ t}56_G
` t}+,aG
b .t}/CDcG
d  !56eG
f HgG
h GIiG
l [mG
t $-(uG
z U>*555Xh..0{G
~ =Xh%%'G
B "4(CG
D%&.0EG
H "8,IG
J {+KG
L Z MG
R K+ Xdj(DM::FD GFOO
 K+Hf%4:v.GFOO	
 hh{H==vFHg&GFOO
 FOW-FOV,GFOO
 V_i0 &/21
 GM""B] 
 GM""v|$&
 GM""v|$& 
 GM""fl#V\"v|$&,'flF3
 GOV,
CD DFJ MM''))***6 6 6 6 6rX   r   c                   J    e Zd ZdZdZddgZdgZ ej        d          Z	d Z
dS )	r   z
    For Ruby interactive console (**irb**) output like:

    .. sourcecode:: rbcon

        irb(main):001:0> a = 1
        => 1
        irb(main):002:0> puts a
        1
        => nil
    zRuby irb sessionrbconirbztext/x-ruby-shellsessionz.irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] |>> |\?> c           	   #   x  K   t          di | j        }d}g }t          j        |          D ]}|                                }| j                            |          }|\|                                }|                    t          |          dt          j        |d |         fgf           |||d          z  }|r-t          ||                    |                    E d {V  d}g }|                                t          j        |fV  |r+t          ||                    |                    E d {V  d S d S )N r   rP  )r   optionsr   rI   r>   
_prompt_rerN   rF   rD   rG   r   Promptr
   rH   r=   Output)	rM   rJ   rblexercurcode
insertionsrN   linemrF   s	            rV   rH   z'RubyConsoleLexer.get_tokens_unprocessed  s     ++dl++
%d++ 	: 	:E;;==D%%d++A}eegg!!3w<<%&TcT
$C#D#F G G G4:% $,"G$B$B7$K$K M  M M M M M M M M G!#JkkmmW^T99999 	E$G::7CCE E E E E E E E E E E	E 	ErX   N)r/  r0  r1  r2  r   r4  r6  r7  compilerW  rH   rP  rX   rV   r   r     sc        
 
 DG+,I ) * *JE E E E ErX   r   c                       e Zd ZdZdZdZddgZddgZdgZd	e	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fde	j
        d
fg
defde	j
        dfde	j
        dfde	j
        dfde	j
        dfde	j
        fde	j
        dfdej        fde	j        fde	fde	fd efd!ej        fd"ef ed#d$%          ej        fd&ej        fd'efd(ej        fd)ej        j        fd*ej        j        fd+efd,efd- eej        ee          fd. eej        ee          fd/ eej        ee          fd0 eej        ee          fd1ej         fd2ej        fgd3Z!d4S )5r   z
    Pygments Lexer For Fancy.

    Fancy is a self-hosted, pure object-oriented, dynamic,
    class-based, concurrent general-purpose programming language
    running on Rubinius, the Ruby VM.

    .. versionadded:: 1.5
    Fancyz!https://github.com/bakkdoor/fancyz*.fyz*.fancypackfancyfyztext/x-fancysrcz"/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*rp   z"!(\\\\|\\[^\\]|[^!\\])*![egimosx]*z\\(\\\\|[^\\])*\\[egimosx]*z$\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*z"<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*z%\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*z$\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*z"@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*z"%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*z$\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*r)  zs\{(\\\\|\\[^\\]|[^}\\])*\}\s*balanced-regexzs<(\\\\|\\[^\\]|[^>\\])*>\s*zs\[(\\\\|\\[^\\]|[^\]\\])*\]\s*zs\((\\\\|\\[^\\]|[^)\\])*\)\s*z&m?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*zm(?=[/!\\{<\[(@%$])z#(.*?)\nz\'([^\'\s\[\](){}]+|\[\])z"""(\\\\|\\[^\\]|[^\\])*?"""z"(\\\\|\\[^\\]|[^"\\])*"zJ(def|class|try|catch|finally|retry|return|return_local|match|case|->|=>)\bz(self|super|nil|false|true)\bz[(){};,/?|:\\])Objectr   Hash	DirectoryFilerF  r   r   
EnumerableFancyEnumerableBlock	TrueClassNilClass
FalseClassTupler{   StackSet	FancySpecMethodPackageRanger   r   z[a-zA-Z](\w|[-+?!=*/^><%])*:z[-+*/~,<>=&!?%^\[\].$]+z[A-Z]\w*r(  r'  z@@?z[a-zA-Z_]\w*z&(0[oO]?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?z1(0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?z#(0[bB][01]+(?:_[01]+)*)(\s*)([/?])?r&  z/\d+([eE][+-]?[0-9]+)|\d+\.\d+([eE][+-]?[0-9]+)?z\d+)rd  r+  N)"r/  r0  r1  r2  r   r3  r5  r4  r6  r   r\   r   r   r~   r{   r   r   rJ  r   r   r@  rK  r   rE  rG  rF  r   r   rB  rC  rD  r   r   rN  rP  rX   rV   r   r     si         D
-C'IoG"#I
 3FL&I2FL&I+V\6B4flFK2FL&I5v|VL4flFK2FL&I2FL&I4flFK
 Z  />NO,fl<LM/?OP.>NO6E#V\3CD '.))6=9,f5(&1&( .t}=,U ; DI	J J J
 \ -dm<'2$-(t}56 34Hd# 7Xfj*h779AXfj*h7793Xfj*h779,Xfnj(;;=?NV^$i5
D DFFFrX   r   ) r2  r7  pygments.lexerr   r   r   r   r   r   r	   r
   r   r   pygments.tokenr   r   r   r   r   r   r   r   r   r   r   pygments.utilr   __all__r|   r   r   r   rP  rX   rV   <module>rz     s    
			C C C C C C C C C C C C C C C C C C C C C C C C4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ) ) ) ) ) )
9
9
9l6 l6 l6 l6 l6" l6 l6 l6^)E )E )E )E )Eu )E )E )EXT T T T T T T T T TrX   