File: //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/ruby.cpython-310.pyc
o
���a�X � @ s� d Z ddlZddlmZmZmZmZmZmZm Z m
Z
mZ ddlm
Z
mZmZmZmZmZmZmZmZmZ ddlmZ g d�Ze�d�ZdZG d d
� d
e�ZG dd� de�ZG d
d� de�ZdS )z�
pygments.lexers.ruby
~~~~~~~~~~~~~~~~~~~~
Lexers for Ruby and related languages.
:copyright: Copyright 2006-2021 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 Zd ZdZdZg d�Zg d�ZddgZej ej
B Zdd� Zd d
� Z
g dejf�dejf�d
ejf�eddd�ef�deeeej�f�deee�df�dedf�deee�df�eddd�ejf�dejf�eddd�ejf�dejf�edddd�ejf�dejjf�d ef�d!ef�d"ejd#f�d$eeej�d%f�d&ejd%f�d'eeej�d%f�d(eej ee�f�d)eej!ee�f�d*eej"ee�f�d+eej#ee�f�d,ej$j%f�d-ej$j&f�d.ej$j'f�d/ej$j'f�d0ej$j'f�d1ef�e(d2��d3ej)f�d4ej*f�ee+d5d6�eeej�f�d7eee�f�d8ef�d9ef�d:ef�d;e,f�d<ef�d=e,d>fd?eej%eej-�d@fe.d@�gd=e,d>fdAed@fdBej%d@fe.d@�gdCee,e�d@fd=edDfe(dE�gdFej/dDfdGej/d@fe(dE�gdHej/dIfdJej/fdKej/fge(dL�dMej0fge(dL�dNejfdOejfge(dL�dNej1fdOej1fge(dL�dPejfdQejfdNejfdRejfdSejd@fgdTejd@fgdU�Z2e2�3e
� � dVdW� Z4dXS )Yr z=
For `Ruby <http://www.ruby-lang.org>`_ source code.
�Ruby)�ruby�rb�duby) z*.rbz*.rbw�Rakefilez*.rakez *.gemspecz*.rbxz*.duby�Gemfile�Vagrantfileztext/x-rubyzapplication/x-rubyc c s� � |� d�}|t|�d�fV |� d�tj|�d�fV |� d�tj|�d�fV |� d�tj|�d�fV |j�dg �}t|� }|� |�d�dv |�d�f� |� d�|_
|�d�|_t|�dk rm| j
|d �E d H n|j
tj|�d�fV |�� |_
|r�|D ]Z\}}g }t�|j|j
�D ]<}|r�|�� �� } n|�� �� } | |kr�|D ]
}
|
� � tj|
�� fV q�|� � tj|�� fV |�� |_
n|� |� q�|D ]}
|
� � t|
�� fV 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_unprocessed�line_re�finditer�text�strip�rstripr )�self�match�ctxr8 r3 � outermost�tolerant�hdname�lines�check�amatch� rR �6/usr/lib/python3/dist-packages/pygments/lexers/ruby.py�heredoc_callback+ sF �
��zRubyLexer.heredoc_callbackc C s� dd� } dd� }i }dt jfttdd�t jfdt jfd t jd
fdtt jt�fdt jd
fdt jdfdt jdfg|d<