o
    Ñ­jäX  ã                   @   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g 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‘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 rm| j|d	�E d H  n|j
tj| d¡fV  | ¡ |_
|ré|D ]Z\}}g }t |j|j
¡D ]<}|rš| ¡  ¡ }	n| ¡  ¡ }	|	|krÆ|D ]}
|
  ¡ tj|
 ¡ fV  q¦|  ¡ tj| ¡ fV  | ¡ |_
 n| 	|¡ q�|D ]}
|
  ¡ t|
 ¡ fV  qÎq�t|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;   r6   Ú	outermostÚtolerantÚhdnameÚlinesÚcheckÚamatch© rT   úQ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/ruby.pyÚheredoc_callback+   sF   €



€ê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 ]\}}}t	dƒd|› d�|fd|f||dfg|d| < qOdD ]³\}}}}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¡ qn|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   ó†   � |  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   rF   rD   rC   ©rK   rL   rM   ÚnctxÚiÚtÚvrT   rT   rU   Úintp_regex_callback[   ó   €z<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callbackc                 s   rW   )Nr2   r4   r   úinterpolated-stringr9   r5   )r;   r   ÚOtherr<   r   rF   rD   rC   rZ   rT   rT   rU   Úintp_string_callbackc   r`   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   rb   rB   rY   r   )	r_   rc   ÚstatesÚnameÚttyperD   ÚlbraceÚrbraceÚbraceccrT   rT   rU   Úgen_rubystrings_rulesZ   s”   

ÿ


ö



ýü	ÿ

úÿ

ûÿ
úÿÿÿÿÿÿïzRubyLexer.gen_rubystrings_rulesz\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)ÚBEGINÚENDÚaliasÚbeginÚbreakÚcasezdefined?ÚdoÚelseÚelsifrD   Ú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ÚselectrK   Ú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(?<!\.))re   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::rh   zI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)rd   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*[!?]?z:(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]ú\s+rr   ÚdefexprzŽ(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)rm   r&   z	[A-Z_]\w*z(\))(\.|::)?rv   Úrootrn   ro   z#\{úin-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rw   z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})rl   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+)r(  r¢   r£   r'  r)  rw   rk   rX   ra   r"  r!  c                 C   s
   t | dƒS )Nzruby(1\.\d)?r   )rH   rT   rT   rU   Úanalyse_textˆ  s   
zRubyLexer.analyse_textN)8Ú__name__Ú
__module__Ú__qualname__Ú__doc__r~   ÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedÚreÚDOTALLÚ	MULTILINEÚflagsrV   rƒ   r   ÚHashbangr{   Ú	Multiliner
   r   r   r   r   Ú	NamespaceÚPseudor   ÚWordÚBuiltinÚPreprocr   r   rY   r   ÚOctÚHexÚBinrÇ   ÚVariableÚClassÚInstanceÚGlobalr   ÚCharÚConstantry   r   ÚFunctionr   ÚInterpolÚEscaperb   ÚtokensÚupdater*  rT   rT   rT   rU   r      s‚   /hÿþýüûûþôñðïüûíçüûæ à!ëêß
8È:ÿÆ=Ã
>Â@éÀ
Y§[ÿ¥eÿ›gÿ™iÿ—kÿ•
n’
o‘
p�
q�
rŽs�tŒvýŠz†
}
ÿƒÿ�  �þ ÿ �ý  �û  �ú  �ù 
ùö
üý

ý
ýÿþýý
ú
	ÿ �¾ 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 di | j¤Ž}d}g }t |¡D ]I}| ¡ }| j |¡}|d urA| ¡ }| t	|ƒdt
j|d |… fgf¡ |||d … 7 }q|rRt|| |¡ƒE d H  d}g }| ¡ t
j|fV  q|rkt|| |¡ƒE d H  d S d S )Nr1   r   rT   )r   Úoptionsr   rG   r<   Ú
_prompt_rerL   rD   rB   rE   r   ÚPromptr	   rF   r;   ÚOutput)	rK   rH   ÚrblexerÚcurcodeÚ
insertionsrL   ÚlineÚmrD   rT   rT   rU   rF   š  s2   €
ÿ

ÿ
ÿÿz'RubyConsoleLexer.get_tokens_unprocessedN)r+  r,  r-  r.  r~   r0  r2  r/  r3  Ú_exampler4  ÚcompilerP  rF   rT   rT   rT   rU   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]*rm   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ÚFilerC  r   r   Ú
EnumerableÚFancyEnumerableÚBlockÚ	TrueClassÚNilClassÚ
FalseClassÚTuplerx   Ú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+)r]  r(  N)#r+  r,  r-  r.  r~   r/  r1  r0  r2  r3  r   rY   r   r   r{   rx   r   r   rG  r   r
   r=  rH  r   rB  rD  rC  r   r   r?  r@  rA  rÇ   rÆ   rK  rT   rT   rT   rU   r   ³  s~    









ö




ÿüû

ÿÿÿÿÌ
òr   ) r.  r4  Ú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__ry   r   r   r   rT   rT   rT   rU   Ú<module>   s    
04  r'