a
    ñ»jËY  ã                   @   s¼   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	„ d	eƒZG d
d„ deƒZG dd„ deƒZdS )zÖ
    pygments.lexers.ruby
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Ruby and related languages.

    :copyright: Copyright 2006-present 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                )   @   s:  e Zd ZdZdZdZg d¢Zg d¢ZddgZdZ	e
je
jB Zd	d
„ Zdd„ Zdejfdejfdejfed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d�ejfdejfeddd�ejfdejfed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d0ej'j*fd1ej'j*fd2ej'j*fd3efe+d4ƒd5e j,fd6ej-fee.d7d8�eeejƒfd9eeeƒfd:efd;efd<efd=e/fd>efg(d?e/d@fdAeej(eej0ƒdBfe1dBƒgd?e/d@fdCedBfdDej(dBfe1dBƒgdEee/eƒdBfd?edFfe+dGƒgdHe j2dFfdIe j2dBfe+dGƒgdJe j2dKfdLe j2fdMe j2fge+dNƒdOe j3fge+dNƒdPe j!fdQe j!fge+dNƒdPe j4fdQe j4fge+dNƒdRe j!fdSe j!fdPe j!fdTe j!fdUe j!dBfgdVejdBfgdWœZ5e5 6eƒ ¡ dXdY„ Z7dZS )[r   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-rubyÚ c                 c   sö  |  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Ø| j|d	�E d H  n|j
tj| d¡fV  | ¡ |_
|�rò|D ]Ø\}}g }t |j|j
¡D ]„}|�r6| ¡  ¡ }	n| ¡  ¡ }	|	|k�r–|D ]}
|
  ¡ tj|
 ¡ fV  �qP|  ¡ tj| ¡ fV  | ¡ |_
 �qn
| 	|¡ �q|D ]}
|
  ¡ t|
 ¡ fV  �q¨|�r|d
  ¡ |_
�qt|jƒ|_|d d …= 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<   r6   Z	outermostZtolerantZhdnameÚlinesÚcheckZamatch© rQ   ú:E:\soccer\ml_env\Lib\site-packages\pygments/lexers/ruby.pyÚheredoc_callback+   sD    




zRubyLexer.heredoc_callbackc            	      C   s”  dd„ } dd„ }i }dt jfttd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 ]8\}}}t	dƒd|› d�|fd|f||dfg|d| < qždD �]f\}}}}d| d  t j
f|t j
d!f|t j
dft	dƒd"| d  t j
fd#| d$ t j
fg||d% < |d  d&| t j
|d% f¡ d| d  t j
f|t j
d!f|t j
dfd"| d  t j
fd#| d$ t j
fg||d' < |d  d(| t j
|d' f¡ d| d  t jf|t jd!f|d) t jdft	d*ƒd"| d  t jfd#| d$ t jfg||d+ < |d  d,| t j|d+ f¡ qÜ|d  d-| fd.t j
fd/|fd0ttt j
d ƒfd1ttt j
d ƒfd2|fg7  < |S )3Nc                 s   s„   |  d¡tj| d¡fV  t| d¡ddgƒ}| j|d�D ] \}}}|  d¡| ||fV  q:|  d¡tj| d¡fV  | ¡ |_d S )Nr2   r4   r   úinterpolated-regexr9   r5   )r<   r   ÚRegexr=   r   rG   rE   rD   ©rL   rM   rN   ZnctxÚiÚtÚvrQ   rQ   rR   Úintp_regex_callback_   s    z<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callbackc                 s   s„   |  d¡tj| d¡fV  t| d¡ddgƒ}| j|d�D ] \}}}|  d¡| ||fV  q:|  d¡tj| d¡fV  | ¡ |_d S )Nr2   r4   r   úinterpolated-stringr9   r5   )r<   r   ÚOtherr=   r   rG   rE   rD   rV   rQ   rQ   rR   Úintp_string_callbackg   s    z=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackz\:@{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[^\\z#]+ú[\\#]ú#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   r\   rC   rU   r   )	rZ   r]   ZstatesÚnameÚttyperE   ZlbraceÚrbraceZbraceccrQ   rQ   rR   Úgen_rubystrings_rules^   s”    

ÿ


ö



ýü	ÿ

úÿ

ûÿ
úÿÿÿÿÿÿïzRubyLexer.gen_rubystrings_rulesz\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)ZBEGINÚENDÚaliasÚbeginÚbreakÚcasezdefined?ÚdoÚelseZelsifrE   ZensureÚforÚifÚinÚnextZredoZrescueÚraiseÚretryÚreturnÚsuperZthenZundefZunlessZ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)Z
initializeÚnewÚloopr   Úextendr†   Zattr_readerZattr_writerZattr_accessorÚattrÚcatchÚthrowÚprivateZmodule_functionÚpublicZ	protectedÚtrueÚfalseÚnilz(not|and|or)\b)ÚautoloadZblock_givenZconst_definedZeqlÚequalÚfrozenr   Zinstance_ofZis_aÚiteratorZkind_ofZmethod_definedrœ   Zprivate_method_definedZprotected_method_definedZpublic_method_definedZ
respond_toZtaintedz\?z(chomp|chop|exit|gsub|sub)!)eÚArrayÚFloatÚIntegerr   Z__id__Z__send__ÚabortZ	ancestorsZat_exitr�   ZbindingZcallccZcallerr–   ZchompZchopZ
class_evalZclass_variablesÚclonezconst_defined?Z	const_getZconst_missingZ	const_setÚ	constantsÚdisplayÚdupÚevalÚexecÚexitr”   ZfailZforkÚformatÚfreezeZgetcZgetsZglobal_variablesZgsubÚhashÚidZincluded_modulesÚinspectZinstance_evalZinstance_methodZinstance_methodsZinstance_variable_getZinstance_variable_setZinstance_variablesÚlambdaÚloadZlocal_variablesr“   ÚmethodZmethod_missingÚmethodsZmodule_evalrw   Z	object_idÚopenÚpÚprintZprintfZprivate_class_methodZprivate_instance_methodsZprivate_methodsÚprocZprotected_instance_methodsZprotected_methodsZpublic_class_methodZpublic_instance_methodsZpublic_methodsZputcZputsr†   ZrandÚreadlineÚ	readlinesÚrequireÚscanÚselectrL   ÚsendZset_trace_funcZsingleton_methodsÚsleepÚsplitZsprintfZsrandÚsubZsyscallÚsystemZtaintÚtestr—   Zto_aZto_sZ	trace_varZtrapZuntaintZuntrace_varÚwarnz(?<!\.))r_   r�   z__(FILE|LINE)__\bz8(?<![\w)\]}])(<<[-~]?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<[-~]?)("|\')()(\2)(.*?\n)Z__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::rb   zI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)r^   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*[!?]?z:(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]ú\s+rl   ÚdefexprzŽ(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)rg   r&   z	[A-Z_]\w*z(\))(\.|::)?rp   Úrootrh   ri   z#\{úin-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rq   z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})rf   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+)rÌ   r�   r‘   rË   rÍ   rq   re   rT   r[   rÆ   rÅ   c                 C   s
   t | dƒS )Nzruby(1\.\d)?r   )rI   rQ   rQ   rR   Úanalyse_textŒ  s    zRubyLexer.analyse_textN)8Ú__name__Ú
__module__Ú__qualname__Ú__doc__rw   ÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedÚreÚDOTALLÚ	MULTILINEÚflagsrS   rz   r   ÚHashbangru   Ú	Multiliner
   r   r   r   r   Ú	NamespaceÚPseudor   ÚWordÚBuiltinÚPreprocr   r   rU   r   ÚOctÚHexÚBinr£   ÚVariableÚClassÚInstanceÚGlobalr   ÚCharÚConstantrs   r   ÚFunctionr   ÚInterpolÚEscaper\   ÚtokensÚupdaterÎ   rQ   rQ   rQ   rR   r      s  3iüûþüûüûëê
ÿ
é
ÿ
ÿÿÿÿ




ý

ÿÿÿ€ ú 
ùö
üý

ý
ýÿþýý
ú	
ÿ€ ¿ Fr   c                   @   s@   e Zd ZdZdZddgZdgZdZdZdZ	e
 d	¡Zd
d„ ZdS )r   z8
    For Ruby interactive console (**irb**) output.
    zRuby irb sessionÚrbconÚirbztext/x-ruby-shellsessionzhttps://www.ruby-lang.orgr1   zrbcon/consolez.irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] |>> |\?> c           	   	   c   sÔ   t f i | j¤Ž}d}g }t |¡D ]’}| ¡ }| j |¡}|d ur€| ¡ }| t	|ƒdt
j|d |… fgf¡ |||d … 7 }q"|r¢t|| |¡ƒE d H  d}g }| ¡ t
j|fV  q"|rÐt|| |¡ƒE d H  d S )Nr1   r   )r   Úoptionsr   rH   r=   Ú
_prompt_rerM   rE   rC   rF   r   ÚPromptr	   rG   r<   ÚOutput)	rL   rI   ZrblexerZcurcodeÚ
insertionsrM   ÚlineÚmrE   rQ   rQ   rR   rG   ž  s.    
ÿ
ÿ

ÿz'RubyConsoleLexer.get_tokens_unprocessedN)rÏ   rÐ   rÑ   rÒ   rw   rÔ   rÖ   rÓ   r×   Ú_examplerØ   Úcompilerô   rG   rQ   rQ   rQ   rR   r   �  s   
r   c                   @   s¦  e Zd ZdZdZdZddgZddgZdgZd	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%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d0eejeeƒfd1eej eeƒfd2ej!fd3ej fgd4œZ"d5S )6r   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"/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*rg   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[(){};,/?|:\\])ZObjectr¡   ZHashZ	DirectoryÚFilerç   r   r   Z
EnumerableZFancyEnumerableZBlockZ	TrueClassZNilClassZ
FalseClassÚTuplerr   ÚStackÚSetZ	FancySpecZ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+)rÿ   rÌ   N)#rÏ   rÐ   rÑ   rÒ   rw   rÓ   rÕ   rÔ   rÖ   r×   r   rU   r   r   ru   rr   r   r   rë   r   r
   rá   rì   r   ræ   rè   rç   r   r   rã   rä   rå   r£   r¢   rï   rQ   rQ   rQ   rR   r   ·  s|   









ö




ÿüû

ÿÿÿÿÌòr   ) rÒ   rØ   Zpygments.lexerr   r   r   r   r   r   r   r	   r
   r   Zpygments.tokenr   r   r   r   r   r   r   r   r   r   r   Zpygments.utilr   Ú__all__rs   r   r   r   rQ   rQ   rQ   rR   Ú<module>   s   
04  v'