3

So[                 @   sX   d Z ddlZddlZddlZddddddd	d
ddddddddddZG dd deZdS )z
Style module
    NZ00Z01Z02Z03Z04Z05Z06Z07Z08Z09Z10Z11Z12Z13Z14Z15)ZwhiteZblackblueZgreenredZbrownZpurpleZorangeZyellowZlimeZtealcyanZlblueZpinkZgreyZgrayZsilverc                   s   e Zd ZdZedd Zedd Zedd Zedd	 Zed
d Z	edddZ
dd Zdd Zdd Zdd Z fddZ  ZS )Stylerz
 A styler c             C   s   t jddd |d S )Nz\S+c             S   s   ddt | jd  S )Nz%s r   )lengroup)m r
   /opt/Infobot/core/style.py<lambda>"   s    zStyler.sopa.<locals>.<lambda>z #fightsopa)resub)selfstringr
   r
   r   sopa    s    zStyler.sopac             C   s   d|  S )Nz%sr
   )r   r
   r
   r   bold$   s    zStyler.boldc             C   s   d|  S )Nz%sr
   )r   r
   r
   r   	underline(   s    zStyler.underlinec             C   s   dj dd | D S )N c             S   s   g | ]}d | qS )u   ̅r
   ).0xr
   r
   r   
<listcomp>.   s    z#Styler.overline.<locals>.<listcomp>)join)textr
   r
   r   overline,   s    zStyler.overlinec             C   s   dj dd | D S )Nr   c             S   s   g | ]}d | qS )u   ̶r
   )r   r   r
   r
   r   r   2   s    z(Styler.strikethrough.<locals>.<listcomp>)r   )r   r
   r
   r   strikethrough0   s    zStyler.strikethroughr   Nc             C   s*   |rdt | t | | f S dt | | f S )Nz	%s,%s%sz%s%s)colors)r   colorZ
backgroundr
   r
   r   r   4   s    zStyler.colorc             C   s2  |j d}d}d|kr*|jddd }d}tjd|}tjdd|}djt|}tjdd|}|r*dd	 |D }d\}}xR|D ]J}|dkrd\}}qd|kr|}q|jdr|dd
 }q|jd\}}qW ||  kod
kn  rd}n4|d
krd| }n |d
krd| }nd||f }|| }|| S )z1 Reduce a set of control codes to simplest form. r   r      z\x03\d?\d?(?:,\d\d?)?z(\x03\d?\d?(?:,\d\d?)?)z([\x1d\x02\x1f\x16])\1c             S   s   g | ]}|d d qS )r   Nr
   )r   ir
   r
   r   r   N   s    z)Styler.control_reduce.<locals>.<listcomp>N,z,z%s,%s)NN)NN)	r   rsplitr   findallr   r   sorted
startswithsplit)r   dataresetr   ZfgZbgr    r   r
   r
   r   control_reduce:   s:    







zStyler.control_reducec             C   s  d|kr dj t| j|jdS tjd| j|}d}ttdd}g }x,tjd|D ]}tj	d|st|j
| qV||kr||  ||< |j
| qV|dkrt|j  rt| r|j
| qV|jdrV|d	d jd
}|dk rt| r|j
| qVt|d	kr*|d |d kr*|j
| qVt|dkrVdd |D }dd t||D }|j
dd
j |jd
  qVW dj |}tjdd|}tjdd|}tjdd|}|S )z= Rearrange and rewrite control codes to shorten the message. 
z-([\x1d\x02\x1f\x0f\x16]|\x03\d?\d?(,\d\d?)?)+NzFz.([\x1d\x02\x1f\x0f\x16]|\x03\d?\d?(?:,\d\d?)?)r   r"   r   r!   r   r      c             S   s   g | ]}|r|nd qS )Nr
   )r   r    r
   r
   r   r      s    z!Styler.minify.<locals>.<listcomp>c             S   s    g | ]\}}||krd n|qS )r   r
   )r   r   yr
   r
   r   r      s    z
\x030(\d),z\x03\1,z(\x03(?:\d?\d?,)?)0(\d[^\d])z\1\2z.([\x1d\x02\x1f\x0f\x16]|\x03\d?\d?(,\d\d?)?)+$)NN)FFFF)r   )r   mapminifyr(   r   r   r+   dictzipmatchappendanyvaluesr'   r   rstrip)r   r)   r   ZtogglesZreducedr    Zcodesr
   r
   r   r0   f   s:     
 
zStyler.minifyc             C   sD   |j  }g }dd }x |D ]}|jd| |f  qW dj|}|S )Nc               S   s   t jddS )Nr      )randomZrandintr
   r
   r
   r   r      s    zStyler.random.<locals>.<lambda>z%.2d%sr   )r(   r4   r   )r   msgZwordsZ
done_wordsZrandZwordr
   r
   r   r9      s    

zStyler.randomc             C   s   | j | j|S )N)r0   r9   )r   r:   r
   r
   r   random_slow   s    zStyler.random_slowc                s$   |t krtj| j|dS t j|S )N)r   )r   	functoolspartialr   super__getattribute__)r   name)	__class__r
   r   r?      s    zStyler.__getattribute__)r   N)__name__
__module____qualname____doc__staticmethodr   r   r   r   r   r   r+   r0   r9   r;   r?   __classcell__r
   r
   )rA   r   r      s   ,.
r   )rE   r   r9   r<   r   objectr   r
   r
   r
   r   <module>   s*   