
_W              "   @   s   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 d d d d d d d d d d d d  d! d  d" d# i Z Gd$ d%   d% e  Z d S)&z
Style module
    NZwhiteZ00ZblackZ01blueZ02ZgreenZ03redZ04ZbrownZ05ZpurpleZ06ZorangeZ07ZyellowZ08ZlimeZ09ZtealZ10cyanZ11ZlblueZ12ZpinkZ13ZgreyZ14ZgrayZsilverZ15c                   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 d   Z
 d d   Z d d   Z d d   Z d d   Z   f d d   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/utils/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   s1   | r d t  | t  | |  f Sd t  | |  f S)Nz	%s,%s%sz%s%s)colors)r   colorZ
backgroundr
   r
   r   r   4   s    zStyler.colorc             C   s  | 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 \ } } xu | D]m } | d k r d \ } } q d | k r | } q | j d  r| d d
  } q | j d  \ } } q W| | k oBd
 k n rPd } nB | d
 k ri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   sI  d | k r. d j  t |  j | j d    St j d |  j |  } d } t t d d   } g  } xt j d |  D]y} t j	 d |  s | j
 |  qz | | k r | | | | <| j
 |  qz | d k r	t | j    r	t |  r	| j
 |  qz | j d  rz | d	 d  j d
  } | d k rYt |  rY| j
 |  qz t |  d	 k r| d | d k r| j
 |  qz t |  d k rz d d   | D } d d   t | |  D } | j
 d d
 j  |  j d
   qz Wd 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   s\   | j    } g  } d d   } x( | D]  } | j d |   | f  q% Wd 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                s2   | t  k r" t j |  j d | St   j |  S)Nr   )r   	functoolspartialr   super__getattribute__)r   name)	__class__r
   r   r?      s    zStyler.__getattribute__)__name__
__module____qualname____doc__staticmethodr   r   r   r   r   r   r+   r0   r9   r;   r?   r
   r
   )rA   r   r      s   ,.
r   )rE   r   r9   r<   r   objectr   r
   r
   r
   r   <module>   s*   