
    ^jy                        d Z ddlmZ ddlZddlZddlmZ ddlZerddlm	Z	  ej
        dej        ej        z            Z G d dej        j                  ZdS )	zNExtensible attributed text format for representing pyglet formatted documents.    )annotationsN)TYPE_CHECKING)Locationa  
    (?P<escape_hex>\{\#x(?P<escape_hex_val>[0-9a-fA-F]+)\})
  | (?P<escape_dec>\{\#(?P<escape_dec_val>[0-9]+)\})
  | (?P<escape_lbrace>\{\{)
  | (?P<escape_rbrace>\}\})
  | (?P<attr>\{
        (?P<attr_name>[^ \{\}]+)\s+
        (?P<attr_val>[^\}]+)\})
  | (?P<nl_hard1>\n(?=[ \t]))
  | (?P<nl_hard2>\{\}\n)
  | (?P<nl_soft>\n(?=\S))
  | (?P<nl_para>\n\n+)
  | (?P<text>[^\{\}\n]+)
    c                  (    e Zd ZddZddd
ZddZdS )AttributedTextDecoderreturnNonec                r    t           j        j                                        | _        d| _        i | _        d S )Nr   )pyglettextdocumentFormattedDocumentdoclength
attributes)selfs    Y/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/text/formats/attributed.py__init__zAttributedTextDecoder.__init__   s,    ;'99;;    Nr   strlocationLocation | None&pyglet.text.document.FormattedDocumentc           
        d}d}t                               |          D ]9}|j        }d}|dk    rC|                    d          }|                     |           |                    d          }d}n|dk    r|s|                     d           d}n|dv r|                     d           d}n|dk    r4|                     |                    d          d	d                     d}nj|d
k    rt          j        |                    d                    }	|                    d          }
|
d         dk    rG|r|	| j        |
d	d          <   n| j	        
                    | j        | j        |
d	d          |	i           n|	| j        |
<   n|dk    rC|                     t          t          |                    d                                         n|dk    rD|                     t          t          |                    d          d                               n7|dk    r|                     d           n|dk    r|                     d           |};| j	        S )NTr    Fnl_soft)nl_hard1nl_hard2
nl_para   attrattr_val	attr_namer   .
escape_decescape_dec_val
escape_hexescape_hex_val   escape_lbrace{escape_rbrace})_patternfinditer	lastgroupgroupappendendswithastliteral_evalr   r   set_paragraph_styler   chrint)r   r   r   next_trailing_spacetrailing_newlinemr2   trailing_spacetvaluenames              r   decodezAttributedTextDecoder.decode$   su   """4(( $	1 $	1AKE!NGGFOOA!"C#(  )##* %KK$$$#(  222D!!!#'  )##AGGI..qrr2333#'  &()<)<==ww{++7c>>' b49QRR1144T[$+PTUVUWUWPXZ_O`aaaa,1DOD)),&&CAGG,<$=$= > >??@@@@,&&CAGG,<$=$=r B BCCDDDD/))C    /))C   "0xr   c                    | j                             | j        || j                   | xj        t	          |          z  c_        | j                                         d S N)r   insert_textr   r   lenclear)r   r   s     r   r3   zAttributedTextDecoder.appendP   sP    T[$@@@s4yy r   )r   r	   rC   )r   r   r   r   r   r   )r   r   r   r	   )__name__
__module____qualname__r   rA   r3    r   r   r   r      sV           
* * * * *X           r   r   )__doc__
__future__r   r5   retypingr   r   pyglet.resourcer   compileVERBOSEDOTALLr/   r   DocumentDecoderr   rJ   r   r   <module>rT      s    T T " " " " " " 



 				              )((((((2:  
bi	! ! 6  6  6  6  6 FK7 6  6  6  6  6 r   