o
    ñu]Ã  ã                   @   s†   d Z ddlZddlmZmZmZmZmZ ddl	m
Z
 ej ¡ r&ddlmZ nddlmZ dd„ Zdd	„ Zeƒ ed
d„ ƒƒZdd„ ZdS )z
Provides our /help responses.
é    N)ÚSTANDARD_OUTPUTÚBOLD_OUTPUTÚERROR_OUTPUTÚmsgÚuses_settings)Úformat)Ú	lru_cachec                 C   s   t | t|ƒƒS )zâ
  Provides our /help response.

  :param stem.control.Controller controller: tor control connection
  :param str arg: controller or interpreter command to provide help output for

  :returns: **str** with our help response
  )Ú	_responseÚ
_normalize)Ú
controllerÚarg© r   ú7/usr/lib/python3/dist-packages/stem/interpreter/help.pyÚresponse   s   r   c                 C   s0   |   ¡ } |  d¡d } |  d¡r| dd … } | S )Nú r   ú/é   )ÚupperÚsplitÚ
startswith)r   r   r   r   r
   )   s
   
r
   c                 C   sè  |st ƒ S | di ¡}||vrtd| gt¢R Ž S t|| d gt¢R Ž }| d| ¡  d¡}| ¡ D ]}|td| gt¢R Ž d 7 }q3|d7 }|dkr…|  dd ¡}|r| ¡ D ](}d	|v r€| 	d	d
¡\}}	|td| gt¢R Ž 7 }|td|	 gt¢R Ž d 7 }qX| ¡ S |dkrÊ|  dd ¡}|rÆdd„ | ¡ D ƒ}
t
dt|
ƒdƒD ]#}d}|
||d … D ]}|d| 7 }q®|t| ¡ gt¢R Ž d 7 }q¢| ¡ S |dkrû| di ¡}| ¡ D ]\}}	|td| gt¢R Ž 7 }|td|	 gt¢R Ž d 7 }qØ| ¡ S |dkr?|  dd ¡}|r;| 	¡ }t
dt|ƒdƒD ]%}d}|||d … D ]	}|d| 7 }q!|t| ¡ gt¢R Ž d 7 }q| ¡ S |dkr]|  dd ¡}|rY|t|gt¢R Ž d 7 }| ¡ S |dv rp|ttdƒgt¢R Ž d 7 }| ¡ S )Nz
help.usagez)No help information available for '%s'...Ú
zhelp.description.%sÚ z  ZGETINFOz
info/namesz -- r   z%-33sz - %sZGETCONFzconfig/namesc                 S   s   g | ]
}|  d d¡d ‘qS )r   r   r   )r   )Ú.0Úoptr   r   r   Ú
<listcomp>\   s    z_response.<locals>.<listcomp>r   é   z%-42sZSIGNALzhelp.signal.optionsz%-15sZ	SETEVENTSzevents/namesé   z%-20sZ
USEFEATUREzfeatures/names)ZLOADCONFZPOSTDESCRIPTORz"msg.multiline_unimplemented_notice)Ú_general_helpÚgetr   r   r   ÚlowerÚ
splitlinesr   Zget_infor   ÚrangeÚlenÚrstripÚitemsr   )r   r   ZconfigZ
usage_infoÚoutputÚdescriptionÚlineÚresultsr   ZsummaryÚoptionsÚiÚentryZsignal_optionsÚsignalÚentriesr   r   r   r	   :   sl   €,Õâ
è 

÷
ür	   c                  C   sŠ   g } t dƒ ¡ D ]7}| d¡}|dkr4|d |… ||d … }}|  t|gt¢R Ž t|gt¢R Ž  ¡ q|  t|gt¢R Ž ¡ qd | ¡S )Nzhelp.generalz - éÿÿÿÿr   )r   r    ÚfindÚappendr   r   r   Újoin)Úlinesr'   ZdivÚcmdr&   r   r   r   r   †   s   
(
r   )Ú__doc__Zstem.prereqZstemZstem.interpreterr   r   r   r   r   Zstem.util.termr   ZprereqZ_is_lru_cache_availableÚ	functoolsr   Zstem.util.lru_cacher   r
   r	   r   r   r   r   r   Ú<module>   s   
J