o
    hu                     @   s8   d Z ddlmZ eG dd dZeG dd dZdS )zEThis module defines types for representing parsing/compilation errors    )	dataclassc                   @   s&   e Zd ZU eed< eed< eed< dS )MessagemessagelinecolumnN)__name__
__module____qualname__str__annotations__int r   r   //home/seanl/mnt/public/Repos/urclelf/./error.pyr      s   
 r   c                   @   s\   e Zd ZU ee ed< eddededefddZ	ddededefd	d
Z
defddZdS )	Tracebackerrorsr      r   line_numbercolumn_numberc                 C   s   t t|||gS )N)r   r   )clsr   r   r   r   r   r   new   s   zTraceback.newc                 C   s6   |s| j d j}| j d j}| j dt||| d S )Nr   )r   r   r   insertr   )selfr   r   r   r   r   r   	elaborate   s   zTraceback.elaboratereturnc              	   C   s   g }| d | jD ]&}|j }| |j d|j d|d   |dd  D ]}| | q(q
d}|D ]}t||krAt|}q5|dd|  | d|  d|S )N	TRACEBACK: r   r   =
)	appendr   r   
splitlinesr   r   lenr   join)r   lineserror	sub_linesr   traceback_widthr   r   r   __str__   s    


"
zTraceback.__str__N)r   r   )r   r   r	   listr   r   classmethodr
   r   r   r   r'   r   r   r   r   r   
   s   
 r   N)__doc__dataclassesr   r   r   r   r   r   r   <module>   s    