o b@svdZddlZddlmZeZGdddZGdddZdedjej Z iZ ej D] Z e D]Z e e e <q0q,[ dS) zGModule to parse ANSI escape sequences Maintainer: Jean-Paul Calderone N)Loggerc@sNeZdZdZdZeddeDZeee\Z Z Z Z Z ZZZdZddZdS) ColorTextzb Represents an element of text along with the texts colors and additional attributes. )brgylmcwccs|]}|VqdSN)upper).0xr7/usr/lib/python3/dist-packages/twisted/conch/ui/ansi.py szColorText.)BlackRedGreenYellowBlueMagentaCyanWhitec CsT||||_|_|_||_||_||_||_||_|jr(|j|j|_|_dSdSr )textfgbgdisplaybold underlineflashreverse) selfrrrrrr r!r"rrr__init__)szColorText.__init__N)__name__ __module__ __qualname____doc__COLORStuple BOLD_COLORSrangelenBLACKREDGREENYELLOWBLUEMAGENTACYANWHITE COLOR_NAMESr$rrrrrs rc@seZdZdZdZdZdZdZdZeeeeefZ ddZ d d Z d d Z d dZ ddZddZddZejfddZddZdS) AnsiParserz& Parser class for ANSI codes. ) HfABCDRsudG)JKP)hr)p)r cCsD|||_|_|j|j|_|_d\|_|_|_|_d|_d|_ dS)Nrrrr) defaultFG defaultBG currentFG currentBGrr!r r"rprepend)r#rKrLrrrr$Js  zAnsiParser.__init__cCsd}d}d}t|}||krC|dkr||tvrd}n |r;|d|}|dkr/|||dS||||}|}d}|d}||ks|S)zF Remove all ANSI color escapes from the given string. rJrIrN)r-_setsfind)r#stringresultshowiLnrrr stripEscapesQs"  zAnsiParser.stripEscapescCdSr r)r#colorstrrrr writeStringgzAnsiParser.writeStringc Cst|jr |j|}d|_|d}t|dkr"|||ddS|||d|ddD]}t|}d}d}||krS||tjdvrKn|d7}||ksA|s[d|_dS|ddkrp||||ddq2|dd}|d8}||dkrd|_dSt||d}|durq2|t j kr| |d|d||dd}|||q2|t j kr|d|d||dd}}| ||||q2|t jkr|d|d||dd}}|||||q2|t jkr||dd}|||q2||krd||_q2tjd ||d ||dd}|||q2dS) zK Turn a string input into a list of L{ColorText} elements. rJrPrIrNz[;?[z+Unhandled ANSI control type: {control_type}) control_type)rOsplitr-r] formatTextrTdigits_setmapgetr7 COLOR_SET parseColor CURSOR_SET parseCursor ERASE_SET parseEraseMODE_SET_logwarn) r#strpartsr?rXrWtypecursoreraserrr parseStringjsj        "  "    zAnsiParser.parseStringcCs|dd}|s d}z tt|d}Wnty.tjd|d|j|j|_|_ YdSw|D]}|dkrN|j|j|_|_ d\|_ |_ |_ |_ d |_q1|d krVd |_ q1d |kr`d krhnn|d |_q1d |krrd krznn|d |_ q1|dkr|j|_q1|dkr|j|_ q1|dkrd |_ q1|dkrd |_ q1|dkrd |_ q1|dkrd|_q1|dkrd|_ q1|dkrd|_ q1|dkrd|_q1|dkrd|_ q1|dkrd |_q1tjd|dq1dS)z5 Handle a single ANSI color sequence NrQ0;z)Invalid ANSI color sequence: {sequence!r})sequencerrHrI%(/'1z*Unrecognised ANSI color command: {command})command)mapintra ValueErrorrmerrorrKrLrMrNrr!r r"rblink)r#rorprrrrrgsZ      zAnsiParser.parseColorcCr[r r)r#rrrrrrir^zAnsiParser.parseCursorcCr[r r)r#rsrrrrkr^zAnsiParser.parseErasecCs&|rtj|S|jr||ptj|Sr )rr)r)r#valuemodeBOLDrrr pickColors zAnsiParser.pickColorc Cs4t|||jd||jd|j|j|j|j|jS)NrrI) rrrMrNrrr r!r")r#rrrrrbs  zAnsiParser.formatTextN)r%r&r'r(rhrjrl ASSIGN_SETrfSETSr$rZr]rtrgrirkrr+rrbrrrrr74s"?5 r7rJ)r(rTtwisted.loggerrrmrr7joinrrrRrdr?rrrrrs "D