a
    0a<
                     @   s|   d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ G dd	 d	eZe	eeef d
ddZdS )z
    sphinx.builders.html.transforms
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Transforms for HTML builder.

    :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)AnyDictList)nodes)Sphinx)SphinxPostTransform)NodeMatcherc                   @   sJ   e Zd ZdZdZdZedZdZ	e
dddd	Zee e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  )Zhtmlz(?<=.)(-|\+|\^|\s+)(?=.)))ZcapslockZpagedown)ZpageZupZ
scrolllock)Znumr
   ZsysrqZ	backspaceN)kwargsreturnc              	   K   s   t tjdgd}| j|D ]}| j|d  }t|dks| 	|rLq|d 
d |  |r| 	|rd|d d }g |d d< n
|d	}|tjd|dgd7 }z|d	}|t|7 }W qb ty   Y qb0 qbqd S )
NZkbd)classes   r   Zcompound    r   )r   r   literalZdocumentfindallpatternsplitZastextlenis_multiwords_keyappendpopjoinText
IndexError)selfr   ZmatcherZnodepartskeysep r!   >lib/python3.9/site-packages/sphinx/builders/html/transforms.pyrun1   s$    


zKeyboardTransform.run)r   r   c                 C   sP   t |dkrH|d  dkrH|d  |d  f}|| jv rBdS dS ndS d S )Nr   r   r   r      TF)r   striplowermultiwords_keys)r   r   namer!   r!   r"   r   I   s    
z#KeyboardTransform.is_multiwords_key)__name__
__module____qualname____doc__Zdefault_priorityformatsrecompiler   r'   r   r#   r   strboolr   r!   r!   r!   r"   r	      s   
r	   )appr   c                 C   s   |  t ddddS )NZbuiltinT)versionZparallel_read_safeZparallel_write_safe)Zadd_post_transformr	   )r2   r!   r!   r"   setupT   s
    
r4   )r,   r.   typingr   r   r   Zdocutilsr   Zsphinx.applicationr   Z!sphinx.transforms.post_transformsr   Zsphinx.util.nodesr   r	   r0   r4   r!   r!   r!   r"   <module>   s   
?