File: //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/ruby.cpython-38.pyc
U
G�
\�V � @ s� d Z ddlZddlmZmZmZmZmZmZm Z m
Z
mZ ddlm
Z
mZmZmZmZmZmZmZmZmZ ddlmZ dddgZe�d �Zd
ZG dd� de�ZG dd� de�ZG d
d� de�ZdS )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 Zd ZdZdZdddgZdddd d
ddd
gZddgZej ej
B Zdd� Zdd� Z
dejfdejfdejfeddd�efdeeeej�fdeee�dfdedfdeee�dfed dd�ejfd!ejfed"d#d�ejfd$ejfed%d&dd'�ejfd(ejjfd)efd*efd+ejd,fd-eeej�d.fd/ejd.fd0eeej�d.fd1eej ee�fd2eej!ee�fd3eej"ee�fd4eej#ee�fd5ej$j%fd6ej$j&fd7ej$j'fd8ej$j'fd9ej$j'fd:efe(d;�d<ej)fd=ej*fee+d>d?�eeej�fd@eee�fdAefdBefdCefdDe,fdEefg(dFe,dGfdHeej%eej-�dIfe.dI�gdFe,dGfdJedIfdKej%dIfe.dI�gdLee,e�dIfdFedMfe(dN�gdOej/dMfdPej/dIfe(dN�gdQej/dRfdSej/fdTej/fge(dU�dVej0fge(dU�dWejfdXejfge(dU�dWej1fdXej1fge(dU�dYejfdZejfdWejfd[ejfd\ejdIfgd]ejdIfgd^�Z2e2�3e
� � d_d`� Z4daS )br z=
For `Ruby <http://www.ruby-lang.org>`_ source code.
ZRuby�rbZrubyZdubyz*.rbz*.rbwZRakefilez*.rakez *.gemspecz*.rbxz*.dubyZGemfileztext/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�dk|�d�f� |� d�|_
|�d�|_| j|d�D ]\}}}|||fV q�|�� |_
|�r�|D ]�\} }
g }t
�|j|j
�D ]�}| �r$|�� �� }n|�� �� }||
k�r�|D ]}
|
� � tj|
�� fV �q>|� � tj|�� fV |�� |_
q�n
|� |� �q|D ]}
|
� � t|
�� fV �q�q�t|j�|_|d d �= d S ) N� � � � �heredocstackz<<-� ��context)�startr
�groupr ZHeredocZ Delimiter�__dict__�
setdefault�bool�append�pos�end�get_tokens_unprocessed�line_re�finditer�text�strip�rstripr �len)�self�match�ctxr1 r- Z outermost�i�t�vZtolerantZhdname�linesZcheckZamatch� rG �6/usr/lib/python3/dist-packages/pygments/lexers/ruby.py�heredoc_callback, s>