o
    Ni	                     @  s   d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ er4ddlmZ dd	lmZ G d
d de
ZdddZdS )zTransforms for HTML builder.    )annotationsN)TYPE_CHECKINGAny)nodes)SphinxPostTransform)NodeMatcher)Sphinx)ExtensionMetadatac                   @  s:   e Zd ZdZdZdZedZdZ	dd
dZ
dddZdS )KeyboardTransforma$  Transform :kbd: role to more detailed form.

    Before::

        <literal class="kbd">
            Control-x

    After::

        <literal class="kbd compound">
            <literal class="kbd">
                Control
            -
            <literal class="kbd">
                x
    i  )htmlz(?<=.)(-|\+|\^|\s+)(?=.)))capslock)pagedown)r   up)scrollr   )numr   )sysrq)backspacekwargsr   returnNonec              	   K  s   t tjdgd}t|| jD ]d}| j|d  }t	|dks'| 
|r(q|d d |  |rt| 
|rJd|d d }g |d d< n|d	}|tjd|dgd7 }z|d	}|t|7 }W n	 tyq   Y nw |s5qd S )
Nkbd)classes   r   compound    r   )r   r   literallistfindalldocumentpatternsplitastextlenis_multiwords_keyappendpopjoinText
IndexError)selfr   matchernodepartskeysep r5   S/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/html/transforms.pyrun1   s,   


zKeyboardTransform.runr2   	list[str]boolc                 C  sB   t |dkr|d  dkr|d  |d  f}|| jv S dS )Nr    r   r   r      F)r(   striplowermultiwords_keys)r/   r2   namer5   r5   r6   r)   K   s   
z#KeyboardTransform.is_multiwords_keyN)r   r   r   r   )r2   r8   r   r9   )__name__
__module____qualname____doc__default_priorityformatsrecompiler%   r=   r7   r)   r5   r5   r5   r6   r
      s    


r
   appr   r   r	   c                 C  s   |  t ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_post_transformr
   )rG   r5   r5   r6   setupS   s
   
rM   )rG   r   r   r	   )rB   
__future__r   rE   typingr   r   docutilsr   !sphinx.transforms.post_transformsr   sphinx.util.nodesr   sphinx.applicationr   sphinx.util.typingr	   r
   rM   r5   r5   r5   r6   <module>   s    A