
    Fe
                    ~    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rddlmZ  G d	 d
e
      ZddZy)zTransforms for HTML builder.    )annotationsN)TYPE_CHECKINGAny)nodes)SphinxPostTransform)NodeMatcher)Sphinxc                  P    e Zd ZdZdZdZ ej                  d      ZdZ	d	dZ
d
dZy)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spacec                   t        t        j                  dg      }t        | j                  j                  |            D ]  }| j                  j                  |d   j                               }t        |      dk(  s| j                  |      rO|d   j                  d       |j                          |sv| j                  |      rdj                  |d d       }g |d d n|j                  d	      }|t        j                  d|dg      z  }	 |j                  d	      }|t        j                  |      z  }|r y # t        $ r Y w xY w)
Nkbd)classes   r   compound    r   )r   r   literallistdocumentfindallpatternsplitastextlenis_multiwords_keyappendpopjoinText
IndexError)selfkwargsmatchernodepartskeyseps          A/usr/lib/python3/dist-packages/sphinx/builders/html/transforms.pyrunzKeyboardTransform.run-   s!   emmeW= ..w78 	DLL&&tBx'89E5zQ$"8"8"?O"":.HHJ))%0''%),C "E"1I))A,Cb#w??))A,CEJJsO+D 	& " s   )D??	E
Ec                    t        |      dk\  rJ|d   j                         dk(  r4|d   j                         |d   j                         f}|| j                  v S y)Nr   r   r   r      F)r'   striplowermultiwords_keys)r.   r2   names      r5   r(   z#KeyboardTransform.is_multiwords_keyG   sS    u:?uQx~~/258>>#U1X^^%55D4////    N)r/   r   returnNone)r2   z	list[str]r>   bool)__name__
__module____qualname____doc__default_priorityformatsrecompiler$   r;   r6   r(    r=   r5   r   r      s6      Gbjj45G*O4r=   r   c                8    | j                  t               ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_post_transformr   )apps    r5   setuprQ   O   s&    ,- "# r=   )rP   r	   r>   zdict[str, Any])rD   
__future__r   rG   typingr   r   docutilsr   !sphinx.transforms.post_transformsr   sphinx.util.nodesr   sphinx.applicationr	   r   rQ   rI   r=   r5   <module>rX      s3    " " 	 %  A ));+ ;|r=   