+
    TBiX                         R t ^ RIt^ RIHtHtHtHtHtHtH	t	H
t
HtHt ^ RIHtHtHtHtHtHtHtHtHtHtHt ^ RIHt . ROtRt ! R R]4      t ! R	 R]4      t ! R
 R]4      tR# )z
pygments.lexers.ruby
~~~~~~~~~~~~~~~~~~~~

Lexers for Ruby and related languages.

:copyright: Copyright 2006-2025 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
FancyLexerc                   h  a  ] tR t^t o RtRtRt. RUOt. RVOtRR.t	Rt
]P                  ]P                  ,          tR tR tR	. R
]P$                  3NR]P&                  3NR]P(                  3N]! RWRR7      ]3NR]! ]]]P4                  4      3NR]! ]]4      R3NR]R3NR]! ]]4      R3N]! RXRR7      ]P6                  3NR]P:                  3N]! RYRR7      ]P<                  3NR]P<                  3N]! RZRRR7      ]P<                  3NR]P<                  P6                  3NR]3NR]3NR]P>                  R3NR]! ] ]!PD                  4      R 3NR!]!PD                  R 3NR"]! ]]!PD                  4      R 3NR#]! ]#PH                  ]]4      3NR$]! ]#PJ                  ]]4      3NR%]! ]#PL                  ]]4      3NR&]! ]#PN                  ]]4      3NR']PP                  PR                  3NR(]PP                  PT                  3NR)]PP                  PV                  3NR*]PP                  PV                  3NR+]PP                  PV                  3NR,]3N],! R-4      NR.]!PZ                  3NR/]P\                  3N]! ]/R0R17      ]! ]]P8                  4      3NR2]! ]]4      3NR3]3NR4]3NR5]3NR6]03NR7]3NRR8]0R93R:]! ]PR                  ]]Pb                  4      R;3]2! R;4      .RR8]0R93R<]R;3R=]PR                  R;3]2! R;4      .R9R>]! ]0]4      R;3R8]R?3],! R	4      .R@RA]!Pf                  R?3RB]!Pf                  R;3],! R	4      .RCRD]!Pf                  R@3RE]!Pf                  3RF]!Pf                  3.RG],! RC4      RH]!Ph                  3.RI],! RC4      RJ]!PD                  3RK]!PD                  3.RL],! RC4      RJ]!Pj                  3RK]!Pj                  3.R ],! RC4      RM]!PD                  3RN]!PD                  3RJ]!PD                  3RO]!PD                  3RP]!PD                  R;3.RRQ]P>                  R;3./t6]6Po                  ]! 4       4       RR t8RSt9V t:RT# )[r   z
For Ruby source code.
Rubyzhttp://www.ruby-lang.orgztext/x-rubyzapplication/x-ruby c              #    "   VP                  ^4      pV\        VP                  ^4      3x  VP                  ^4      \        P                  VP                  ^4      3x  VP                  ^4      \        P
                  VP                  ^4      3x  VP                  ^4      \        P                  VP                  ^4      3x  VP                  P                  R. 4      p\        V4      '       * pVP                  VP                  ^4      R9   VP                  ^4      34       VP                  ^4      Vn
        VP                  ^4      Vn        \        V4      ^d8  d   V P                  VR7       Rj  xL
  M.VP                  \        P                  VP                  ^4      3x  VP                  4       Vn
        V'       Edq   V EFJ  w  rg. p\        P                  ! VP                   VP                  4       F  pV'       d    VP                  4       P#                  4       p	MVP                  4       P%                  4       p	W8X  d   V F4  p
V
P                  4       \        P                  V
P                  4       3x  K6  	  VP                  4       \        P
                  VP                  4       3x  VP                  4       Vn
         EK  VP                  V4       K  	  V F*  p
V
P                  4       \&        V
P                  4       3x  K,  	  EKM  	  \        VP                   4      Vn        VR R# R#  EL5i)   heredocstackcontextN:NNN)z<<-z<<~)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   &&&        9/usr/lib/python3.14/site-packages/pygments/lexers/ruby.pyheredoc_callbackRubyLexer.heredoc_callback+   sV     AXu{{1~--kk!nfnnekk!n<<kk!nf..A>>kk!nfnnekk!n<<||..~rB\**	U[[^~=u{{1~NO++a.))A,|s"2232???''6>>5;;q>99))+9$0 $--chh@E % 3 3 5 % 4 4 6&+F"(,,.&..&,,."PP ',#kkmV-=-=u{{}LL"'))+U+ A #($llneV\\^CC #(# %1& #((mCGQ-  @s   E6L?8L<9AL?
E3L?c                 "   R  p R p/ pR\         P                  3\        \        RR7      \         P                  3R\         P                  3R\         P                  R3R\	        \         P                  \
        4      3R	\         P                  R
3R\         P                  R3R\         P                  R3.VR&   R\         P                  R	3R\         P                  R3R\         P                  R	3R\         P                  R33 F)  w  r4p\        R4      RV R2V3RV3WTR3.VRV,           &   K+  	  R0 EFk  w  rgrRV,           R,           \         P                  3V\         P                  R3V\         P                  R3\        R4      RV,           R,           \         P                  3RV,           R ,           \         P                  3.W#R!,           &   VR,          P                  R"V,           \         P                  VR!,           34       RV,           R,           \         P                  3V\         P                  R3V\         P                  R3RV,           R,           \         P                  3RV,           R ,           \         P                  3.W#R#,           &   VR,          P                  R$V,           \         P                  VR#,           34       RV,           R,           \         P                  3V\         P                  R3VR%,           \         P                  R3\        R&4      RV,           R,           \         P                  3RV,           R ,           \         P                  3.W#R',           &   VR,          P                  R(V,           \         P                  VR',           34       EKn  	  VR;;,          R)V 3R*\         P                  3R+V3R,\	        \        \         P                  R-4      3R.\	        \        \         P                  R-4      3R/V3.,          uu&   V# )1c              3     "   VP                  ^4      \        P                  VP                  ^4      3x  \	        VP                  ^4      ^ R.4      pV P                  VR7       F"  w  rEpVP                  ^4      V,           WV3x  K$  	  VP                  ^4      \        P                  VP                  ^4      3x  VP                  4       Vn        R# 5i)r    interpolated-regexr"   N)r$   r   Regexr%   r   r/   r-   r,   r4   r5   r6   nctxitvs   &&&    r=   intp_regex_callback<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callback[   s     ++a.&,,A>>A4H3IJD66t6Dakk!nQ&,, E++a.&,,A>>iikCG   CCc              3     "   VP                  ^4      \        P                  VP                  ^4      3x  \	        VP                  ^4      ^ R.4      pV P                  VR7       F"  w  rEpVP                  ^4      V,           WV3x  K$  	  VP                  ^4      \        P                  VP                  ^4      3x  VP                  4       Vn        R# 5i)r    interpolated-stringr"   N)r$   r   Otherr%   r   r/   r-   r,   rD   s   &&&    r=   intp_string_callback=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackc   s     ++a.&,,A>>A4I3JKD66t6Dakk!nQ&,, E++a.&,,A>>iikCGrK   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backtick`string-intp-escapedz[^\\z#]+[\\#]#popzsimple-z\\[\\]#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)Nz'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)z*(%([^a-zA-Z0-9\s]))((?:\\\2|(?!\2).)*)(\2)))\{\}z{}cb)z\[z\]z\[\]sb)\(z\)z()pa)<><>ab)r   Symbolr
   RUBY_OPERATORSr   r   DoubleSingleBacktickr   rN   r+   rC   r   )	rI   rO   statesnamettyper-   lbracerbracebraceccs	            r=   gen_rubystrings_rulesRubyLexer.gen_rubystrings_rulesZ   s   	"	"  *6==9>+6F)6==9FMM<0&fmm[136=="896=="89&//+<=
y "1&-- E!0&-- E!&s ;!+V__c B!CD
 -.S!5)5!V$	&F9T>"	!C' *FG G#c)6<<8w/v.-.7"S(&,,7G#d*FLL9+F&' 9$$j6&96<<&*>&9&; < G#c)6<<8w/v.7"S(&,,7G#d*FLL9&F	>" 9$$i&&8&,,&*9n&6 7 G#c)6<<8w/-'v>&7"S(&,,7G#d*FLL9%F=! 9$$efnfll&*8m&5 6?'F 	y= " 3FLLA6!# Mj&,,57 8j&,,57 ;!##
 	
*     rootz\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$\bsuffixz.(module)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z
(def)(\s+)funcnamezdef(?=[*%&^`~+-/\[<>=])z(class)(\s+)	classnamez(not|and|or)\bz\?z(chomp|chop|exit|gsub|sub)!z(?<!\.))rR   rz   z__(FILE|LINE)__\bz2(?<!\w)(<<[-~]?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<[-~]?)("|\')()(\2)(.*?\n)__END__z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*)(/)z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::rU   zI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)rQ   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*[!?]?z:(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]\s+rc   defexprz(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)r[   <<z	[A-Z_]\w*z(\))(\.|::)?r]   zin-intpr_   r`   r^   z#\{z#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rY   z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})rB   rZ   z[^\\#]+rM   z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+c                    \        V R 4      # )zruby(1\.\d)?r   )r1   s   &r=   analyse_textRubyLexer.analyse_text  s    t_55rv    N)rubyrbduby)	z*.rbz*.rbwRakefilez*.rakez	*.gemspecz*.rbxz*.dubyGemfileVagrantfile)BEGINENDaliasbeginbreakcasezdefined?doelseelsifr-   ensureforifinnextredorescueraiseretryreturnsuperthenundefunlessuntilwhenwhileyield)
initializenewloopr   extendr   attr_readerattr_writerattr_accessorattrcatchthrowprivatemodule_functionpublic	protectedtruefalsenil)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tainted)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_evalro   	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selectr4   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warn);__name__
__module____qualname____firstlineno____doc__ro   urlaliases	filenames	mimetypesversion_addedreDOTALL	MULTILINEflagsr>   rt   r   Hashbangrl   	Multiliner
   r   r   r   r   	NamespacePseudor   WordBuiltinPreprocr   r   rC   r   OctHexBinr   VariableClassInstanceGlobalr   CharConstantrj   r   Functionr   InterpolEscaperN   tokensupdater   __static_attributes____classdictcell____classdict__s   @r=   r   r      s     D
$C$G>I 45IMII$E- ^eP 	 G
'**+G
w~~&G
 &w'8'89G

  = FK	L
 G
%gz4>>:<G
 HWj9:FG
  (*=!G
" hw
;[I#G
&  R 	
 ^^'G
2 .3G
4  B KP	Q
 \\5G
@ ,T\\:AG
B  '* 0:%+I, \\-CG
p "4<<#6#67qG
t CuG
z -.>?{G
| *5}G
@. $D&,,79J/LAG
r v||->?sG
v "8J#E wG
J 4fjj*h79KG
N ?fjj*h79OG
R 1fjj*h79SG
V -fnnj(;=WG
\  3 34]G
^ t}}556_G
` t}}++,aG
b .t}}/C/CDcG
d  !5!56eG
f HgG
h IiG
l [[mG
t $--(uG
z >*5h.0{G
~ =h%'G
B "4(CG
D%&.0EG
H "8,IG
J {+KG
L Z MG
P 	K+ djj(DMM:FD FO
 	K+Hf%4::v.FO	
 	h{H=vFHg&FO

 	FOOW-FOOV,FO

 	V__i0 &//21

 	M"B]] 

 	M"v||$&

 	M"v||$& 

 	M"fll#V\\"v||$&,,'fllF3
 	GOOV,
CDFJ MM')*6 6rv   c                   l   a  ] tR tRt o RtRtRR.tR.tRtRt	R	t
]P                  ! R
4      tR tRtV tR# )r   i  z0
For Ruby interactive console (**irb**) output.
zRuby irb sessionrbconirbztext/x-ruby-shellsessionzhttps://www.ruby-lang.orgr   zrbcon/consolez.irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] |>> |\?> c           	   #  v  "   \        R/ V P                  B pR p. p\        P                  ! V4       F  pVP	                  4       pV P
                  P                  V4      pVeO   VP                  4       pVP                  \        V4      ^ \        P                  VRV 3.34       W6VR ,          pK  V'       d'   \        WBP                  V4      4       Rj  xL
  R p. pVP                  4       \        P                  V3x  K  	  V'       d%   \        WBP                  V4      4       Rj  xL
  R# R#  L] L
5i)r   Nr   )r   optionsr   r0   r%   
_prompt_rer5   r-   r+   r.   r   Promptr	   r/   r$   Output)	r4   r1   rblexercurcode
insertionsr5   linemr-   s	   &&       r=   r/   'RubyConsoleLexer.get_tokens_unprocessed  s$    +dll+
%%d+E;;=D%%d+A}eeg!!3w<%&Tc
$C#D#F G:%,"$B$B7$K M M M G!#JkkmW^^T99 , $::7CE E E MEs0   B7D9:D9D56D9D9,D7-	D97D9r   N)r%  r&  r'  r(  r)  ro   r+  r-  r*  r.  _exampler/  compilerQ  r/   rH  rI  rJ  s   @r=   r   r     sQ      DG+,I
%CMH ) *JE Erv   c            "          ] tR tRtRtRtRtRR.tRR.tR	.t	R
t
RR]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  R3.
RR]3R]P                  R3R]P                  R3R]P                  R3R]P                  R3R]P                  3R]P                  R3R]P                  3R ]P                   3R!]3R"]3R#]3R$]P&                  3R%]3]! R7R&R'7      ]P,                  3R(]P.                  3R)]3R*]P&                  3R+]P2                  P4                  3R,]P2                  P6                  3R-]3R.]3R/]! ]P<                  ]]4      3R0]! ]P>                  ]]4      3R1]! ]P@                  ]]4      3R2]! ]PB                  ]]4      3R3]PD                  3R4]PB                  3./t#R5t$R6# )8r   i  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.
Fancyz!https://github.com/bakkdoor/fancyz*.fyz*.fancypackfancyfyztext/x-fancysrcz1.5zbalanced-regexz"/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*r[   z"!(\\\\|\\[^\\]|[^!\\])*![egimosx]*z\\(\\\\|[^\\])*\\[egimosx]*z$\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*z"<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*z%\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*z$\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*z"@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*z"%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*z$\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*rw   r   zs\{(\\\\|\\[^\\]|[^}\\])*\}\s*z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[(){};,/?|:\\]rx   ry   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+r   N)Objectr   Hash	DirectoryFiler>  r   r   
EnumerableFancyEnumerableBlock	TrueClassNilClass
FalseClassTupleri   StackSet	FancySpecMethodPackageRange)%r%  r&  r'  r(  r)  ro   r*  r,  r+  r-  r.  r   rC   r   r   rl   ri   r   r   rB  r   r
   r8  rC  r   r=  r?  r>  r   r   r:  r;  r<  r   r   rF  rH  r   rv   r=   r   r     s}    D
-C'IoG"#IM 	2FLL&I2FLL&I+V\\6B4fllFK2FLL&I5v||VL4fllFK2FLL&I2FLL&I4fllFK
 	Z  />NO,fll<LM/?OP.>NO6E#V\\3CD '..))6==9,f5(&1&( .t}}=, ; DI	J
 \\ -dmm<'2$--(t}}556 3 34Hd# 7fjj*h79Afjj*h793fjj*h79,fnnj(;=?NV^^$i5
DFrv   )r   r   r   )*z**-+z-@z+@/%&|^rX   ~z[]z[]=r   z>>re   rg   z<=>rf   z>=z==z===) r)  r/  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__rj   r   r   r   r   rv   r=   <module>r~     sq    
C C C4 4 4 4 )
9m6" m6`$Eu $ENS Srv   