3 •�&[ã@sžddlZddlZddlZddlZddlZddlZddlZejdkZdd„Z ej e ƒej dƒZ d%Z Gd d „d eƒZd&dd„Zdd„Zedk�ršejeƒƒdS)'éNécCstjjdƒtjjƒdS)Nz)ÚsysÚstdoutÚwriteÚflush©rrú,/Users/gilbertstawny/Scripts/Timer/lolcat.pyÚresets r z\x1b\[(\d+)(;\d+)?(;\d+)?[m|K]éÍéîéåééÿé\c@s\eZdZdejfdd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dS)ÚLolCatécCs||_||_dS)N)ÚmodeÚoutput)ÚselfrrrrrÚ__init__(szLolCat.__init__cCsttdd„t||ƒƒƒS)NcSs|d|ddS)Nréér)ÚcrrrÚ-sz"LolCat._distance..)ÚsumÚmapÚzip)rZrgb1Zrgb2rrrÚ _distance,s zLolCat._distancec söˆ\}}}ˆjdkrXtdˆj…}‡‡fdd„t|ƒDƒ}|jƒ|dd}d|fSd}d } xD|r¤|| ks~|| ks~|| krš|| ko”|| ko”|| k} d }| d 7} qbW| rÄd tttˆƒd ƒƒ}n$tdgdd„tˆdddgƒDƒƒ}d|fSdS)Néécs&g|]\}}ˆj|ttˆƒƒ|f‘qSr)rrÚint)Ú.0Úir)Úrgbrrrú 5szLolCat.ansi..rrz3%dTg@Fg@E@éèg€@@cSs(g|] \}}tdt|ƒdƒ|‘qS)ér)r Úfloat)r!ÚvalÚmodrrrr$Hsé$r&z38;5;%d)rr)rÚ COLOR_ANSIÚ enumerateÚsortr r'rr) rr#ÚrÚgÚbZcolorsZmatchesZcolorZ gray_possibleÚsepZgrayr)r#rrÚansi0s&      z LolCat.ansicGsddj|ƒfS)Nz[%smÚ)Újoin)rZcodesrrrÚwrapMsz LolCat.wrapcCshtj||ƒdd}tj||dtjdƒdd}tj||dtjdƒdd}|||gS)Nr é€rré)ÚmathZsinZpi)rÚfreqr"r.r/r0rrrÚrainbowPs$$zLolCat.rainbowcCsP|jr|jjdƒx&|D]}|jd7_|j||ƒqW|jrL|jjdƒdS)Nz[?25lrz[?25h)ÚanimaterrÚosÚprintln)rÚfdÚoptionsÚlinerrrÚcatVs  z LolCat.catcCs^|jƒ}|js|jjƒr$tjd|ƒ}|jr8|j||ƒn |j||ƒ|jj dƒ|jj ƒdS)Nr3Ú ) ÚrstripZforcerÚisattyÚ STRIP_ANSIÚsubr;Ú println_aniÚ println_plainrr)rÚsr?rrrr=as   zLolCat.printlncCsn|sdSx`td|jƒD]P}|jjdt|ƒfƒ|jjƒ|j|j7_|j||ƒt j d|j ƒqWdS)Nrz[%dDgð?) ÚrangeZdurationrrÚlenrr<ÚspreadrHÚtimeÚsleepZspeed)rrIr?r"rrrrGns  zLolCat.println_anicCszxtttr |n |j|jdƒƒD]V\}}|j|j|j||jƒ}|jj dj |j |j |ƒƒtr^|n |j |jdƒgƒƒqWdS)NÚreplacer3)r,ÚPY3ÚdecodeZ charset_py2r:r9r<rLrrr4r5r2Úencode)rrIr?r"rr#rrrrHys $ zLolCat.println_plainN)Ú__name__Ú __module__Ú __qualname__rrrrr2r5r:rAr=rGrHrrrrr's   rúxterm-256colorcCsfdtjkrdStjjddƒdkr$dStjjd|ƒ}|jdƒsD|dkrHdS|jd ƒsZ|dkr^dSdSd S)z) Poor-mans color mode detection. ZANSICONrZ ConEmuANSIZOFFZONrZTERMz -256colorÚxtermÚscreenz-colorÚrxvtN)rWrX)rY)r<ÚenvironÚgetÚendswith)Z term_hintZtermrrrÚ detect_mode‚s r]cCsÐddl}|jdd�}|jddddd d �|jd d dd dd �|jdddddd �|jdddddd�|jdddddd �|jddddd d �|jd!d"ddd#d�|jd$d%d&d'd(d)�|jd*d%d&d+d,d)�|jd-d%d&d.d/d)�|jd0d1d2d3d4�|jƒ\}}|jdk�rtjdd.ƒn|j|_|j�p&t ƒ|_t |jd5�}|�sBd6g}xˆ|D]€}|d6k�rf|j t j |ƒn`y&t|d7ƒ�}|j ||ƒWdQRXWn8tk �rÄ}zt jjt|ƒd8ƒWYdd}~XnX�qHWdS)9zMain entry point.rNz%prog [] [file ...])Zusagez-pz--spreadr'g@zRainbow spread)ÚtypeÚdefaultÚhelpz-Fz--freqgš™™™™™¹?zRainbow frequencyz-Sz--seedr z Rainbow seedz-az --animateZ store_trueFzEnable psychedelics)Úactionr_r`z-dz --durationé zAnimation durationz-sz--speedg4@zAnimation speedz-fz--forcez*Force colour even when stdout is not a ttyz-3Z store_constrrzForce 3 bit colour mode)raZdestZconstr`z-4rzForce 4 bit colour modez-8rzForce 8 bit colour modez-cz --charset-py2zutf-8z6Manually set a charset to convert from, for python 2.7)r_r`)rú-r.rB)ÚoptparseZ OptionParserZ add_optionZ parse_argsZseedÚrandomZrandintr<rr]rrArÚstdinÚopenÚIOErrorÚstderrrÚstr)rdZparserr?ÚargsÚlolcatÚfilenameZhandleÚerrorrrrÚrun”sL                  roÚ__main__)r©rrr©r rr©rr r©r r r©rrr ©r rr ©rr r ©r r r ©r r r ©rrr©rrr©rrr©rrr©rrr©rrr©rrr)rqrrrsrtrurvrwrxryrzr{r|r}r~rr€)rV)Úatexitr8r<reÚrerrMÚ version_inforPr ÚregisterÚcompilerEr+Úobjectrr]rorSÚexitrrrrÚ s.   [ 1