
    ^h                        S SK Jr  S SKJs  Jr  S SKJr  S SKJr  SSK	J
r
Jr  S/r " S S5      r " S	 S
\5      rSS jr\" 5       rg)    )annotationsN)	Formatter)Any   )FormattedTextStyleAndTextTuplesHTMLc                  J    \ rS rSrSrS
S jrSS jrSS jrSS jrSS jr	Sr
g	)r	      a  
HTML formatted text.
Take something HTML-like, for use as a formatted string.

::

    # Turn something into red.
    HTML('<style fg="ansired" bg="#00ff44">...</style>')

    # Italic, bold, underline and strike.
    HTML('<i>...</i>')
    HTML('<b>...</b>')
    HTML('<u>...</u>')
    HTML('<s>...</s>')

All HTML elements become available as a "class" in the style sheet.
E.g. ``<username>...</username>`` can be styled, by setting a style for
``username``.
c                   ^^^^^^ Xl         [        R                  " SU S35      n/ m/ m/ m/ mSUUU4S jjmSUUUUUU4S jjmT" U5        [        T5      U l        g )Nz<html-root>z</html-root>c                    > / n T(       a#  U R                  SSR                  T5      -   5        T(       a  U R                  STS   -   5        T(       a  U R                  STS   -   5        SR                  U 5      $ )z$Build style string for current node.zclass:,zfg:zbg: )appendjoin)partsbg_stackfg_stack
name_stacks    \/home/james-whalen/.local/lib/python3.13/site-packages/prompt_toolkit/formatted_text/html.pyget_current_style(HTML.__init__.<locals>.get_current_style*   sc    EX(<<=UXb\12UXb\1288E?"    c                  > U R                    GHU  nUR                  UR                  :X  a$  TR                  T	" 5       UR                  45        MB  UR
                  S;  nS=p4UR                  R                  5        H  u  pVUS:X  a  UnUS:X  a  UnUS:X  d  M  UnM!     SU;   a  [        S5      eSU;   a  [        S5      eU(       a  T
R                  UR
                  5        U(       a  TR                  U5        U(       a  TR                  U5        T" U5        U(       a  T
R                  5         U(       a  TR                  5         U(       d  GME  TR                  5         GMX     g	)
zProcess node recursively.)z	#documentz	html-rootstyle fgbgcolorr   z "fg" attribute contains a space.z "bg" attribute contains a space.N)

childNodesnodeType	TEXT_NODEr   datanodeName
attributesitems
ValueErrorpop)nodechildadd_to_name_stackr   r   kvr   r   r   r   process_noderesults          r   r/   #HTML.__init__.<locals>.process_node6   s!   >>U__4MM#4#6

"CD(- ? )%
 !LB % 0 0 6 6 89!"B9!"B<!"B !9 by()KLLby()KLL("))%..9 + + '("( r Q )r   returnstr)r*   r   r3   None)valueminidomparseStringr   formatted_text)	selfr6   documentr   r   r   r   r/   r0   s	      @@@@@@r   __init__HTML.__init__!   sa    
&&UG<'HI%' "
  
	# 
	#*	' *	'X 	X+F3r   c                $    SU R                   < S3$ )NzHTML())r6   r:   s    r   __repr__HTML.__repr__f   s    tzznA&&r   c                    U R                   $ N)r9   r@   s    r   __pt_formatted_text__HTML.__pt_formatted_text__i   s    """r   c                T    [        [        R                  U R                  X5      5      $ )zK
Like `str.format`, but make sure that the arguments are properly
escaped.
)r	   	FORMATTERvformatr6   )r:   argskwargss      r   formatHTML.formatl   s     
 I%%djj$?@@r   c                    [        U[        5      (       d  U4n[        S U 5       5      n[        U R                  U-  5      $ )z
HTML('<b>%s</b>') % value
c              3  8   #    U  H  n[        U5      v   M     g 7frD   )html_escape).0is     r   	<genexpr>HTML.__mod__.<locals>.<genexpr>z   s     4ek!nnes   )
isinstancetupler	   r6   )r:   r6   s     r   __mod__HTML.__mod__s   s<     %''HE4e44DJJ&''r   )r9   r6   N)r6   r4   r3   r5   r2   )r3   r   )rJ   objectrK   rY   r3   r	   )r6   rY   r3   r	   )__name__
__module____qualname____firstlineno____doc__r<   rA   rE   rL   rW   __static_attributes__ r   r   r	   r	      s#    (C4J'#A(r   c                      \ rS rSrSS jrSrg)HTMLFormatter~   c                *    [        [        X5      5      $ rD   )rP   rL   )r:   r6   format_specs      r   format_fieldHTMLFormatter.format_field   s    6%566r   r`   N)r6   rY   re   r4   r3   r4   )rZ   r[   r\   r]   rf   r_   r`   r   r   rb   rb   ~   s    7r   rb   c                    [        U [        5      (       d  U  n U R                  SS5      R                  SS5      R                  SS5      R                  SS5      $ )	N&z&amp;<z&lt;>z&gt;"z&quot;)rU   r4   replace)texts    r   rP   rP      sQ     dC   	S'"	f		f		h		r   )rn   rY   r3   r4   )
__future__r   xml.dom.minidomdomr7   stringr   typingr   baser   r   __all__r	   rb   rP   rH   r`   r   r   <module>rv      sE    " ! !   3(o( o(d7I 7
 O	r   