HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/pygments/lexers/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/pygments/lexers/__pycache__/ruby.cpython-312.pyc
�

|�e�X����dZddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZddl
mZmZmZmZmZmZmZmZmZmZmZddlmZgd�ZdZGd�d	e�ZGd
�de�ZGd�d
e�Zy)z�
    pygments.lexers.ruby
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Ruby and related languages.

    :copyright: Copyright 2006-2023 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�4�eZdZdZdZdZgd�Zgd�ZddgZe	je	jzZd�Z
d	�Zgd
ej f�dej"f�dej$f�ed
d��ef�deeeej0�f�deee�df�dedf�deee�df�edd��ej2f�dej6f�edd��ej8f�dej8f�eddd��ej8f�dej8j2f�de
f�d e
f�d!ej:d"f�d#eeej@�d$f�d%ej@d$f�d&eeej@�d$f�d'ee!jDee�f�d(ee!jFee�f�d)ee!jHee�f�d*ee!jJee�f�d+ejLjNf�d,ejLjPf�d-ejLjRf�d.ejLjRf�d/ejLjRf�d0ef�e*d1��d2ejVf�d3ejXf�ee-d4�5�eeej4�f�d6eee�f�d7ef�d8ef�d9ef�d:e.f�d;ef�d<e.d=fd>eejNeej^�d?fe0d?�gd<e.d=fd@ed?fdAejNd?fe0d?�gdBee.e�d?fd<edCfe*dD�gdEejbdCfdFejbd?fe*dD�gdGejbdHfdIejbfdJejbfge*dK�dLejdfge*dK�dMej@fdNej@fge*dK�dMejffdNejffge*dK�dOej@fdPej@fdMej@fdQej@fdRej@d?fgdSej:d?fgdT�Z4e4jke��dU�Z6yV)Wrz
    For Ruby source code.
    �Rubyzhttp://www.ruby-lang.org)�ruby�rb�duby)	z*.rbz*.rbw�Rakefilez*.rakez	*.gemspecz*.rbxz*.duby�Gemfile�Vagrantfileztext/x-rubyzapplication/x-rubyc#�FK�|jd�}|t|jd�f��|jd�tj|jd�f��|jd�tj
|jd�f��|jd�tj|jd�f��|jjdg�}t|�}|j|jd�dv|jd�f�|jd�|_
|jd�|_t|�dkr|j|�	�Ed{���n.|jtj|jd�f��|j�|_
|�r`|D�]:\}}g}tj|j |j�D]�}|r|j�j#�}	n|j�j%�}	|	|k(r�|D]3}
|
j�tj|
j�f���5|j�tj
|j�f��|j�|_
��|j|���|D])}
|
j�t&|
j�f���+��=t|j �|_|dd�=yy7����w)
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           �6/usr/lib/python3/dist-packages/pygments/lexers/ruby.py�heredoc_callbackzRubyLexer.heredoc_callback*st�������A����X�u�{�{�1�~�-�-��k�k�!�n�f�n�n�e�k�k�!�n�<�<��k�k�!�n�f�.�.����A��>�>��k�k�!�n�f�n�n�e�k�k�!�n�<�<��|�|�.�.�~�r�B���\�*�*�	����U�[�[��^�~�=�u�{�{�1�~�N�O��+�+�a�.����)�)�A�,����|��s�"��2�2�3�2�?�?�?��'�'�6�>�>�5�;�;�q�>�9�9��)�)�+����$0�
D� ��&���$�-�-�c�h�h����@�D�E�� %���
� 3� 3� 5�� %���
� 4� 4� 6�����&+�Q�F�"(�,�,�.�&�.�.�&�,�,�.�"P�P�Q�#�k�k�m�V�-=�-=�u�{�{�}�L�L�"'�)�)�+�������U�+�D�#(�D��$�l�l�n�e�V�\�\�^�C�C�D�#
D�&�#�(�(�m�C�G��Q��-�
@�s�E/L!�1L�2F-L!c
��d�}d�}i}dtjfttd��tjfdtjfdtjdfd	t	tjt
�fd
tjdfdtjd
fdtjdfg|d<dtjd
fdtjdfdtjd
fdtjdffD]%\}}}td�d|z|fd|f||dfg|d|z<�'dD�]�\}}}}d|zdztjf|tjdf|tjdftd�d|zdztjfd |zd!ztjfg||d"z<|djd#|ztj|d"zf�d|zdztjf|tjdf|tjdfd|zdztjfd |zd!ztjfg||d$z<|djd%|ztj|d$zf�d|zdztjf|tjdf|d&ztjdftd'�d|zdztjfd |zd!ztjfg||d(z<|djd)|ztj|d(zf����|dxxd*|fd+tjfd,|fd-t	ttjd�fd.t	ttjd�fd/|fgz
cc<|S)0Nc3�K�|jd�tj|jd�f��t	|jd�ddg�}|j|��D]\}}}|jd�|z||f���!|jd�tj|jd�f��|j
�|_y�w)Nr4r6r�interpolated-regexr;r7)r=r�Regexr>r	rHrFrE�rMrNrO�nctx�i�t�vs       rV�intp_regex_callbackz<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callbackZs������+�+�a�.�&�,�,����A��>�>�����A���4H�3I�J�D��6�6�t�6�D�
-���1�a��k�k�!�n�Q�&��1�,�,�
-��+�+�a�.�&�,�,����A��>�>��i�i�k�C�G���CCc3�K�|jd�tj|jd�f��t	|jd�ddg�}|j|��D]\}}}|jd�|z||f���!|jd�tj|jd�f��|j
�|_y�w)Nr4r6r�interpolated-stringr;r7)r=r�Otherr>r	rHrFrEr\s       rV�intp_string_callbackz=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackbs������+�+�a�.�&�,�,����A��>�>�����A���4I�3J�K�D��6�6�t�6�D�
-���1�a��k�k�!�n�Q�&��1�,�,�
-��+�+�a�.�&�,�,����A��>�>��i�i�k�C�G�rbz\:@{0,2}[a-zA-Z_]\w*[!?]?z\:@{0,2}��prefixz:'(\\\\|\\[^\\]|[^'\\])*'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)�"zsimple-string-double�'zsimple-string-singlez(?<!\.)`zsimple-backtick�stringsz
string-doublez
string-single�sym�backtickr%�string-intp-escapedz	[^\\%s#]+�[\\#]�#popzsimple-))�\{�\}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_OPERATORSrr�Double�Single�BacktickrrerDr[r)	rarf�states�name�ttyperF�lbrace�rbrace�braceccs	         rV�gen_rubystrings_ruleszRubyLexer.gen_rubystrings_rulesYs���	"�	"���*�6�=�=�9�
�>�+�
6��
�
�F�
)�6�=�=�9�
�F�M�M�<�0�
&�
�f�m�m�[�
1�
3�
�6�=�=�"8�9�
�6�=�=�"8�9�
�&�/�/�+<�=�
��y��"1�&�-�-�� E�!0�&�-�-�� E�!&��
�
�s� ;�!+�V�_�_�c� B�!C�		��D�%��
�-�.���#�U�+��5�!��e�V�$�	&�F�9�T�>�"�			�'�!	6�)�F�F�G�T��G�#�c�)�6�<�<�8�����w�/�����v�.��-�.��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9�
+�F�4��&�'�
�9��$�$�j�6�&9�6�<�<�&*�>�&9�&;�
<��G�#�c�)�6�<�<�8�����w�/�����v�.��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9�&�F�4�	�>�"�
�9��$�$�i�&�&8�&�,�,�&*�9�n�&6�
7��G�#�c�)�6�<�<�8�����w�/��-�'����v�>��
�&��7�"�S�(�&�,�,�7��G�#�d�*�F�L�L�9�
%�F�4��=�!�
�9��$�$�e�f�n�f�l�l�&*�8�m�&5�
6�A!	6�H	�y��
=�
 �
"�3�F�L�L�A�
6�
!�
#�M�
�j�&�,�,��
5�
7�8�
�j�&�,�,��
5�
7�;�
!�
#�#
�	
��*�
�z\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)�BEGIN�END�alias�begin�break�casezdefined?�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+)�funcnamezdef(?=[*%&^`~+-/\[<>=])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�clonezconst_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(?<!\.))rhr�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::rkzI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)rgz,(\.|::)([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]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)rpr'z	[A-Z_]\w*z(\))(\.|::)?ry�rootrqrrz#\{�in-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rzz2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})roz[^\\#]+z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+)r,r�r�r+r-rzrnrZrdr&r%c��t|d�S)Nzruby(1\.\d)?r)rJs rV�analyse_textzRubyLexer.analyse_text�s���t�_�5�5r�N)7�__name__�
__module__�__qualname__�__doc__r��url�aliases�	filenames�	mimetypes�re�DOTALL�	MULTILINE�flagsrWr�r�Hashbangr~�	Multilinerrrrr�	Namespace�Pseudor�Word�Builtin�Preprocr
rr[r�Oct�Hex�Binr��Variable�Class�Instance�Globalr�Char�Constantr|r�Functionr�Interpol�Escapere�tokens�updater/�r�rVrrsf����D�
$�C�$�G�>�I�� 4�5�I��I�I����$�E�- �^e�PG
�
�'�*�*�+�G
�
�w�~�~�&�G
�&�w�'8�'8�9�G
�
�=�FK�	L�
�
�G
�%�
�g�z�4�>�>�
:�
<�G
��H�W�j�9�:�F�G
� (��*�=�!G
�"�h�w�
�;�[�I�#G
�&�R��	�
�^�^�
�'G
�2��
�
�.�3G
�4�B�KP�	Q�
�\�\�
�5G
�@,�T�\�\�:�AG
�B�'�*0:�%�+I�,�\�\�-
�CG
�p"�4�<�<�#6�#6�7�qG
�tC�
�
�uG
�z-�.>�?�{G
�|����*�5�}G
�@�.$�D�&�,�,�7�9J�/
L�AG
�r�v�|�|�->�?�sG
�v"�8�J����#E�
�
 �wG
�J4�
�f�j�j�*�h�
7�
9�KG
�N?�
�f�j�j�*�h�
7�
9�OG
�R1�
�f�j�j�*�h�
7�
9�SG
�V-�
�f�n�n�j�(�
;�
=�WG
�\��
�
� 3� 3�4�]G
�^�t�}�}�5�5�6�_G
�`�t�}�}�+�+�,�aG
�b.�t�}�}�/C�/C�D�cG
�d ����!5�!5�6�eG
�f�H��gG
�h
�I��iG
�l��[�[�
�mG
�t�$�-�-�(�uG
�z�>�*�
5�
�h��
�
�
.�
0�{G
�~=�
�h��
%�
'�G
�B"�4�(�CG
�D%�&.�
0�EG
�H"�8�,�IG
�J�{�+�KG
�L�Z� �MG
�R�K��+���d�j�j�(�D�M�M�
:�F�
D�
�F�O�
��K��+�
�H�f�%�
�4�:�:�v�.��F�O�	
��h�{�H�=�v�F�
�H�g�&��F�O�
��F�O�O�W�-�
�F�O�O�V�,��F�O�
��V�_�_�i�0�
 �&�/�/�2�
����1�
�
�M�"�
B�
�]�]�
� 
�
�M�"�
�v�|�|�$�
����&�
�
�M�"�
�v�|�|�$�
����&� 
�
�M�"�
�f�l�l�#�
�V�\�\�"�
�v�|�|�$�
�&�,�,�'�
�f�l�l�F�3�

��G�O�O�V�,�
�CD�F�J�M�M�'�)�*�6r�rc�P�eZdZdZdZddgZdgZdZejd�Z
d�Zy	)
rz8
    For Ruby interactive console (**irb**) output.
    zRuby irb session�rbcon�irbztext/x-ruby-shellsessionz
rbcon/consolez.irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] |>> |\?> c	#�LK�tdi|j��}d}g}tj|�D]�}|j	�}|j
j
|�}|�J|j�}|jt|�dtj|d|fgf�|||dz
}�z|r't||j|��Ed{���d}g}|j�tj|f����|r$t||j|��Ed{���yy7�T7��w)N�rrQ)r�optionsrrIr>�
_prompt_rerNrFrDrGr�Promptr
rHr=�Output)	rMrJ�rblexer�curcode�
insertionsrN�line�mrFs	         rVrHz'RubyConsoleLexer.get_tokens_unprocessed�s1�����+�d�l�l�+�����
��%�%�d�+�	:�E��;�;�=�D����%�%�d�+�A��}��e�e�g���!�!�3�w�<�%&�����T�c�
�$C�#D�#F�G��4���:�%���,�"�G�$B�$B�7�$K� M�M�M� �G�!#�J��k�k�m�W�^�^�T�9�9�	:��$��G�:�:�7�C�E�
E�
E��M��
E�s%�C	D$�D �A
D$�D"�D$�"D$N)r0r1r2r3r�r5r7�_exampler8�compilerXrHrQr�rVrr�s@����D����G�+�,�I��H�����)�*�J�Er�rc �
�eZdZdZdZdZddgZddgZdgZd	e	jd
fde	jd
fde	jd
fd
e	jd
fde	jd
fde	jd
fde	jd
fde	jd
fde	jd
fde	jd
fg
defde	jdfde	jdfde	jdfde	jdfde	jfde	jdfdejfde	jfde	fde	fd efd!ej"fd"efed#d$�%�ej(fd&ej*fd'efd(ej"fd)ej.j0fd*ej.j2fd+efd,efd-eej8ee�fd.eej:ee�fd/eej<ee�fd0eej>ee�fd1ej@fd2ej>fgd3�Z!y4)5rz�
    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�fyztext/x-fancysrcz"/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*rpz"!(\\\\|\\[^\\]|[^!\\])*![egimosx]*z\\(\\\\|[^\\])*\\[egimosx]*z$\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*z"<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*z%\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*z$\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*z"@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*z"%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*z$\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*r*zs\{(\\\\|\\[^\\]|[^}\\])*\}\s*�balanced-regexzs<(\\\\|\\[^\\]|[^>\\])*>\s*zs\[(\\\\|\\[^\\]|[^\]\\])*\]\s*zs\((\\\\|\\[^\\]|[^)\\])*\)\s*z&m?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*zm(?=[/!\\{<\[(@%$])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�FilerGrr�
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+)rfr,N)"r0r1r2r3r�r4r6r5r7rr[rrr~r{rrrKrrrArLrrFrHrGrrrCrDrEr�r�rOrQr�rVrr�sr����D�
-�C���'�I���o�G�"�#�I�
3�F�L�L�&�I�
2�F�L�L�&�I�
+�V�\�\�6�B�
4�f�l�l�F�K�
2�F�L�L�&�I�
5�v�|�|�V�L�
4�f�l�l�F�K�
2�F�L�L�&�I�
2�F�L�L�&�I�
4�f�l�l�F�K�
��Z� �/����>N�O�
,�f�l�l�<L�M�
/����?O�P�
.����>N�O�
6����E�
#�V�\�\�3C�D��'�.�.�)�
)�6�=�=�9�
,�f�5�
(�&�1��&�
(�.�t�}�}�=�
��,�
�;�DI�	J�
�\�\�
�-�d�m�m�<�
'��2�
�$�-�-�(�
�t�}�}�5�5�6�
��
�
� 3� 3�4�
�H��
�d�#�7�
�f�j�j�*�h�
7�
9�
A�
�f�j�j�*�h�
7�
9�
3�
�f�j�j�*�h�
7�
9�
,�
�f�n�n�j�(�
;�
=�
?����N�
�V�^�^�$�i5
�D�Fr�r) r3r8�pygments.lexerrrrrrrr	r
rr�pygments.tokenr
rrrrrrrrrr�
pygments.utilr�__all__r|rrrrQr�rV�<module>r|sq���
�C�C�C�4�4�4�4�)�
9����l6�"�l6�^"E�u�"E�JT��Tr�