
    Te                     |    d dl Z d dlZ ej                  d      Z ej                  d      Z G d d      Zd Zd Zy)    Nz(.)([A-Z][a-z]+)z([a-z0-9])([A-Z])c                       e Zd ZdZd Zy)MethodDispatcherzJSON RPC dispatcher that calls methods on itself.

    Method names are computed by converting camel case to snake case, slashes with double underscores, and removing
    dollar signs.
    c                     dt        |       }t        | |      r+t        | |      t        j                        fd       }|S t               )Nm_c                      di | xs i S )N r   )paramsmethods    ;/usr/lib/python3/dist-packages/pylsp_jsonrpc/dispatchers.pyhandlerz-MethodDispatcher.__getitem__.<locals>.handler   s    /2//    )_method_to_stringhasattrgetattr	functoolswrapsKeyError)selfitemmethod_namer   r
   s       @r   __getitem__zMethodDispatcher.__getitem__   sV    ,T2344%T;/F__V$0 %0 Njr   N)__name__
__module____qualname____doc__r   r   r   r   r   r      s    
r   r   c                 X    t        | j                  dd      j                  dd            S )N/__$ )_camel_to_underscorereplace)r
   s    r   r   r      s%    sD 9 A A#r JKKr   c                 v    t         j                  d|       }t        j                  d|      j                         S )Nz\1_\2)_RE_FIRST_CAPsub_RE_ALL_CAPlower)strings1s     r   r!   r!   #   s.    			8V	,B??8R(..00r   )r   recompiler$   r&   r   r   r!   r   r   r   <module>r,      sD     	

-.bjj,- (L1r   