o
    -wi}V                     @   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 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 g dZe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-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	Lexer
RegexLexerExtendedRegexLexerincludebygroupsdefaultLexerContextdo_insertionswords)
TextCommentOperatorKeywordNameStringNumberPunctuationErrorGenericshebang_matches)	RubyLexerRubyConsoleLexer
FancyLexerz.*?
)*z**-+z-@z+@/%&|^`~z[]z[]=<<z>><<>z<=>>z>=z==z===c                   @   s  e Zd ZdZdZg dZg dZddg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d.ej$j'fd/ej$j'fd0ej$j'fd1efe(d2d3ej)fd4ej*fee+d5d6eeejfd7eeefd8efd9efd:efd;e,fd<efd=e,d>fd?eej%eej-d@fe.d@gd=e,d>fdAed@fdBej%d@fe.d@gdCee,ed@fd=edDfe(dEgdFej/dDfdGej/d@fe(dEgdHej/dIfdJej/fdKej/fge(dLdMej0fge(dLdNejfdOejfge(dLdNej1fdOej1fge(dLdPejfdQejfdNejfdRejfdSejd@fgdTejd@fgdUZ2e23e  dVdW Z4dXS )Yr   z=
    For `Ruby <http://www.ruby-lang.org>`_ source code.
    Ruby)rbrubyduby)z*.rbz*.rbwRakefilez*.rakez	*.gemspecz*.rbxz*.dubyGemfileztext/x-rubyzapplication/x-rubyc                 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k|df | d|_
|d|_| j|dD ]\}}}|||fV  qc| |_
|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  qqxt|j|_|d d = d S d S )	N            heredocstackz<<-   context)startr   groupr   Heredoc	Delimiter__dict__
setdefaultboolappendposendget_tokens_unprocessedline_refinditertextstriprstripr   len)selfmatchctxr6   r2   	outermostitvtoleranthdnamelinescheckamatch rS   ^/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/vendor/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fd
t jdfdtt jt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fD ]\}}}t	dd| |fd|f||dfg|d| < qId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 qf|d  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7  < |S )0Nc                 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 )Nr.   r0   r   interpolated-regexr4   r1   )r6   r   Regexr7   r   r@   r?   r>   rG   rH   rI   nctxrK   rL   rM   rS   rS   rT   intp_regex_callbackZ      z<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callbackc                 s   rV   )Nr.   r0   r   interpolated-stringr4   r1   )r6   r   Otherr7   r   r@   r?   r>   rY   rS   rS   rT   intp_string_callbackb   r\   z=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackz\:@{0,2}[a-zA-Z_]\w*[!?]?z\:@{0,2}prefixz:'(\\\\|\\'|[^'])*'z'(\\\\|\\'|[^'])*'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)"zsimple-stringz(?<!\.)`zsimple-backtickstringsstring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_OPERATORSSingler   r   DoubleBacktickr   r^   r=   rX   r   )	r[   r_   statesnamettyper?   lbracerbracebraceccrS   rS   rT   gen_rubystrings_rulesY   s   







	




zRubyLexer.gen_rubystrings_rulesz\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)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\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_evalrz   	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selectrG   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(?<!\.))ra   r   z__(FILE|LINE)__\bz/(?<!\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::rc   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+rn   defexprz\(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)ri   r$   z	[A-Z_]\w*z(\))(\.|::)?rr   rootrj   rk   z#\{in-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*rs   z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})rh   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[mixounse]*z.+)r$  r   r   r#  r%  rs   rg   rW   r]   r  r  c                 C   s
   t | dS )Nzruby(1\.\d)?r   )rC   rS   rS   rT   analyse_text  s   
zRubyLexer.analyse_textN)5__name__
__module____qualname____doc__rz   aliases	filenames	mimetypesreDOTALL	MULTILINEflagsrU   r   r   Hashbangrv   	Multiliner
   r   r   r   r   	NamespacePseudor   WordBuiltinPreprocr   rX   r   OctHexBinr   VariableClassInstanceGlobalr   CharConstantru   r   Functionr   InterpolEscaper^   tokensupdater&  rS   rS   rS   rT   r      s~   -g !
8:=
>@
Y[egik
n
o
p
q
rstvz
}
           
	





	  Br   c                   @   s4   e Zd ZdZdZddgZdgZedZ	d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           
   	   c   s    t di | j}d}g }t|D ]L}| }| j|}|d urA| }|t	|dt
j|d | fgf |||d  7 }q|rUt|||D ]}	|	V  qKd}g }| t
j|fV  q|rot|||D ]}	|	V  qid S d S )N r   rS   )r   optionsrA   rB   r7   
_prompt_rerH   r?   r=   rF   r   Promptr	   r@   r6   Output)
rG   rC   rblexercurcode
insertionsrH   linemr?   itemrS   rS   rT   r@     s8   


z'RubyConsoleLexer.get_tokens_unprocessedN)r'  r(  r)  r*  rz   r+  r-  r.  compilerK  r@   rS   rS   rS   rT   r     s    
r   c                   @   s  e 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#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d/eeje
efd0ejfd1ejfgd2Z d3S )4r   a  
    Pygments Lexer For `Fancy <http://www.fancy-lang.org/>`_.

    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*.fyz*.fancypackfancyfyztext/x-fancysrcz/(\\\\|\\/|[^/])*/[egimosx]*ri   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Filer=  r   r   
EnumerableFancyEnumerableBlock	TrueClassNilClass
FalseClassTuplert   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+)rX  r$  N)!r'  r(  r)  r*  rz   r,  r+  r-  r   rX   r   r   rv   rt   r   r   rA  r   r
   r7  rB  r   r<  r>  r=  r   r   r9  r:  r;  r   r   rE  rS   rS   rS   rT   r     sz    	

















r   ) r*  r.  pygments.lexerr   r   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   r   pygments.utilr   __all__rT  rA   ru   r   r   r   rS   rS   rS   rT   <module>   s   
,0
  i.