
    k7iF5                         S r SSKrSSKJrJrJr  SSKJrJr  \(       a  SSK	J
r
Jr  SSKJrJr  S\S\4S	 jr " S
 S5      rg)zHTML documentation formatter.    N)TYPE_CHECKINGAnyOptional)escape_htmlextract_text)ConsoleConsoleOptions)	HelpEntry	HelpPaneltype_objreturnc                    U c  g[        U S5      (       a  U R                  R                  5       nO)[        U S5      (       a  [        U S5      nO[	        U 5      nUR                  SS5      R                  SS5      nUR                  S5      (       a  USS	 nS
U S3$ UR                  S
5      (       a  U$ UR                  S5      (       a  USS	 nSU S3$ UR                  S5      (       a  U$ UR                  S5      (       a  USS $ U$ )zFormat a type object into a readable string.

Parameters
----------
type_obj : Any
    Type object to format.

Returns
-------
str
    Formatted type name.
N plain__rich_console__z<class 'z'>ztyping.Optional[   z	Optional[]ztyping.Union[   zUnion[ztyping.   )hasattrr   rstripr   strreplace
startswith)r   type_str
inner_typeinner_typess       W/home/james-whalen/.local/lib/python3.13/site-packages/cyclopts/help/formatters/html.py_format_type_namer       s     x!!>>((*	-	.	.$/x= 
B/77bAH -..b_
:,a((			[	)	) ?++r"o}A&&			X	&	& 9%%|O    c            
          \ rS rSrSr    SS\S\S\S-  S\\   S-  4S jjr	SS
 jr
S	\4S jrS\S   S\S   SSS	S4S jrS\S   S\S   S	S4S jrS\S   S\S   S	S4S jrS\S   S\S   S\S	S4S jrS\S   S\S   S\S	S4S jrSrg)HtmlFormatter>   a  HTML documentation formatter.

Parameters
----------
heading_level : int
    Starting heading level for panels (default: 2).
    E.g., 2 produces "<h2>Commands</h2>", 3 produces "<h3>Commands</h3>".
include_hidden : bool
    Include hidden commands/parameters in documentation (default: False).
app_name : str
    The root application name for generating anchor IDs.
command_chain : list[str]
    The current command chain for generating anchor IDs.
Nheading_levelinclude_hiddenapp_namecommand_chainc                 |    Xl         X l        X0l        U=(       d    / U l        [        R
                  " 5       U l        g )N)r%   r&   r'   r(   ioStringIO_output)selfr%   r&   r'   r(   s        r   __init__HtmlFormatter.__init__N   s/     +, *0b{{}r!   r   c                 8    [         R                  " 5       U l        g)z!Reset the internal output buffer.N)r*   r+   r,   r-   s    r   resetHtmlFormatter.reset[   s    {{}r!   c                 6    U R                   R                  5       $ )zYGet the accumulated HTML output.

Returns
-------
str
    The HTML documentation string.
)r,   getvaluer1   s    r   
get_outputHtmlFormatter.get_output_   s     ||$$&&r!   consoler   optionsr	   panelr   c           	         UR                   (       d  gU R                  R                  S5        UR                  (       aX  [	        [        UR                  U5      5      nU R                  R                  SU R                   SU SU R                   S35        UR                  (       aE  [	        [        UR                  U5      5      nU(       a  U R                  R                  SU S35        UR                  S	:X  a  U R                  UR                   U5        O,UR                  S
:X  a  U R                  UR                   U5        U R                  R                  S5        g)a  Format and render a help panel as HTML.

Parameters
----------
console : Optional[Console]
    Console for rendering (used for extracting plain text).
options : Optional[ConsoleOptions]
    Console rendering options (unused for HTML).
panel : HelpPanel
    Help panel to render.
Nz<section class="help-panel">
z<hz class="panel-title">z</hz>
z<div class="panel-description"></div>
command	parameterz</section>
)entriesr,   writetitler   r   r%   descriptionformat_format_command_panel_format_parameter_panel)r-   r8   r9   r:   
title_text	desc_texts         r   __call__HtmlFormatter.__call__i   s   " }} 	;< ;;$\%++w%GHJLLD$6$6#77LZLX[\`\n\n[oorst #L1B1BG$LMI""%DYKx#XY <<9$&&u}}g>\\[(((@>*r!   r?   r
   c                 .   U(       d  gU R                   R                  S5        U GH  n/ nUR                  (       a  UR                  UR                  5        UR                  (       a  UR                  UR                  5        U R
                  (       a  U(       a  US   nU R                  (       aB  U R                  U/-   nU R
                   SSR                  USS 5       3R                  5       nOU R
                   SU 3R                  5       nSU S[        U5       S3n[        U5      S:  a"  S	R                  S
 USS  5       5      n	U S	U	 3nO!U(       a  S	R                  S U 5       5      OSn[        [        UR                  U5      5      n
U R                   R                  SU S35        U
(       a  U R                   R                  SU
 35        U R                   R                  S5        GM     U R                   R                  S5        g)zFormat command entries as HTML.

Parameters
----------
entries : list[HelpEntry]
    Command entries to format.
console : Optional[Console]
    Console for text extraction.
Nz<ul class="commands-list">
r   -   z
<a href="#z"><code>z</code></a>, c              3   @   #    U  H  nS [        U5       S3v   M     g7f<code></code>Nr   .0ns     r   	<genexpr>6HtmlFormatter._format_command_panel.<locals>.<genexpr>   s      '\R[Q&Q0@(HR[   c              3   @   #    U  H  nS [        U5       S3v   M     g7frO   rR   rS   s     r   rV   rW      s      %VPU1{1~.>g&FPUrX   r   <li><strong>	</strong>: </li>
</ul>
)r,   r@   namesextendshortsr'   r(   joinlowerr   lenr   rB   )r-   r?   r8   entryr_   primary_name
full_chain	anchor_id	name_htmlaliases	desc_htmls              r   rD   #HtmlFormatter._format_command_panel   s     	9:EE{{U[[)||U\\* }}$Qx%%!%!3!3|n!DJ#'==/388JqrN3K2L M S S UI $(==/<. A G G II )8K<U;VVab	u:>"ii'\RWXYXZR['\\G#,+Ry 9I [`DII%VPU%VVeg	#L1B1BG$LMILLi[	BC""R	{#34LLy)G J 	9%r!   c                    U(       d  gU R                   R                  S5        U GH  n/ nUR                  (       a  UR                  UR                  5        UR                  (       a  UR                  UR                  5        UR
                  b  [        UR
                  U5      OSnSnU(       a  [        S U 5       5      n[        S U 5       5      nU=(       a    UnU(       a\  US;   aV  U V	s/ s H  oR                  S5      (       d  M  U	PM     sn	U V	s/ s H  oR                  S5      (       a  M  U	PM     sn	-   nObU(       a[  US;   aU  U V	s/ s H  oR                  S5      (       a  M  U	PM     sn	U V	s/ s H  oR                  S5      (       d  M  U	PM     sn	-   nU(       aQ  U(       a1  [        U5      S	:  a"  S
[        US   5       S[        US   5       S3n
OSR                  S U 5       5      n
OSn
U R                   R                  SU
 S35        [        UR                  U5      nU(       a'  U R                   R                  S[        U5       35        / nUR                  (       a  UR                  S5        UR                  (       a7  SR                  S UR                   5       5      nUR                  SU S35        Ub  U(       a  US;   a>  [!        S U 5       U(       a  US   OS5      nUR                  S[        U5       S35        OuUS;   a2  [!        S U 5       S5      nUR                  S[        U5       S35        O=UR                  S[        U5       S35        OUR                  S[        U5       S35        UR"                  (       a7  SR                  S UR"                   5       5      nUR                  S U S35        U(       a.  U R                   R                  S!SR                  U5       S35        U R                   R                  S"5        GM     U R                   R                  S#5        gs  sn	f s  sn	f s  sn	f s  sn	f )$zFormat parameter entries as HTML.

Parameters
----------
entries : list[HelpEntry]
    Parameter entries to format.
console : Optional[Console]
    Console for text extraction.
Nz<ul class="parameters-list">
Fc              3   |   #    U  H2  oR                  S 5      (       + =(       a    UR                  S5      v   M4     g7f--no-z--Nr   rS   s     r   rV   8HtmlFormatter._format_parameter_panel.<locals>.<genexpr>   s.     "c]bXY||G'<#<#SdAS#S]bs   :<c              3   B   #    U  H  oR                  S 5      v   M     g7frp   Nrq   rS   s     r   rV   rr      s     "H%Q<<#8#8%s   )Trueenabledrp   )Falsedisabled   rP   r   z</code>, <code>rL   rQ   rM   c              3   @   #    U  H  nS [        U5       S3v   M     g7frO   rR   rS   s     r   rV   rr      s      )ZTYqF;q>2B'*JTYrX   r   rZ   r[   r\   z=<span class="metadata-item metadata-required">Required</span>c              3   R   #    U  H  nS [        [        U5      5       S3v   M     g7frO   )r   r   )rT   cs     r   rV   rr     s&     'eWdRS&SV1D0EW(MWds   %'zZ<span class="metadata-item metadata-choices"><span class="metadata-label">choices:</span> z</span>c              3      #    U  H6  oR                  S 5      (       a  M  UR                  S5      (       d  M2  Uv   M8     g7fro   rq   rS   s     r   rV   rr     s)     b1\\'5JQq||\`OaQQs   A A 	A z--flagz`<span class="metadata-item metadata-default"><span class="metadata-label">default:</span> <code>z</code></span>c              3   T   #    U  H  oR                  S 5      (       d  M  Uv   M      g7frt   rq   rS   s     r   rV   rr   &  s     -XA,,wBWaas   (	(z	--no-flagc              3   @   #    U  H  nS [        U5       S3v   M     g7frO   rR   )rT   es     r   rV   rr   5  s     $]}!vk!n-=W%E}rX   zR<span class="metadata-item metadata-env"><span class="metadata-label">env:</span> z!<span class="parameter-metadata">r]   r^   )r,   r@   r_   r`   ra   defaultr   anyr   rd   r   rb   rB   requiredappendchoicesnextenv_var)r-   r?   r8   re   r_   default_stris_bool_flaghas_positivehas_negativerU   ri   descmetadata_itemschoices_strpositive_flagnegative_flagenv_htmls                    r   rE   %HtmlFormatter._format_parameter_panel   sK     	;<EE{{U[[)||U\\* CH--B[,u}}g>aeK L ""c]b"cc""H%"HH+<K3F$F(-G1g1FQG#(K#(aW0E5K E "k5J&J(-K1\\'5JQK#(O#(aLL,A5O E
 CJ!O"(U1X)>(?{[`ab[cOdNeel mI $		)ZTY)Z ZI	 LLi[	BC   1 17;D""RD(9':#;<  N ~~%%&ef }}"ii'eW\WdWd'ee%%pq|p}  ~E  F
 &"&99(,bb(-E!H8) '--~  @K  LY  @Z  [  [i  j %(==(,-X-XZe(f&--~  @K  LY  @Z  [  [i  j '--~  @K  LW  @X  Y  Yg  h #))z  |G  HS  |T  {U  Uc  d
 }}99$]u}}$]]%%hiqhrryz
 ""%Frww~G^F__f#ghLLy)I L 	9%e H K
 L Os0   2QQQ8QQ2Q>QQusagec                     U(       ar  [        [        X15      5      nU(       aV  U R                  R                  S5        U R                  R                  SU S35        U R                  R                  S5        ggg)zRender the usage line as HTML.

Parameters
----------
console : Optional[Console]
    Console for text extraction.
options : Optional[ConsoleOptions]
    Console rendering options (unused).
usage : Any
    The usage line content.
z<div class="usage-block">
z<pre class="usage">z</pre>
r<   Nr   r   r,   r@   )r-   r8   r9   r   
usage_texts        r   render_usageHtmlFormatter.render_usageB  sd    " $\%%ABJ""#@A""%8H#MN"":.  r!   rB   c                     U(       a<  [        [        X15      5      nU(       a   U R                  R                  SU S35        ggg)zRender the description as HTML.

Parameters
----------
console : Optional[Console]
    Console for text extraction.
options : Optional[ConsoleOptions]
    Console rendering options (unused).
description : Any
    The description content.
z<div class="description">r<   Nr   )r-   r8   r9   rB   rG   s        r   render_description HtmlFormatter.render_descriptionZ  s?    " #L$FGI""%>yk#RS  r!   )r,   r'   r(   r%   r&   )ry   FNN)r   N)__name__
__module____qualname____firstlineno____doc__intboolr   listr.   r2   r6   r   rH   rD   rE   r   r   r   __static_attributes__ r!   r   r#   r#   >   sX   " $#*.%% % *	%
 Cy4'%%'C '(+)$(+ *+(+ 	(+
 
(+T5&T+-> 5&R[I\ 5&ae 5&nv&tK/@ v&8T]K^ v&cg v&p/)$/ *+/ 	/
 
/0T)$T *+T 	T
 
Tr!   r#   )r   r*   typingr   r   r   cyclopts._markupr   r   rich.consoler   r	   cyclopts.helpr
   r   r   r    r#   r   r!   r   <module>r      s?    # 	 / / 642- - -`pT pTr!   