|eHdZddlZddlmZddlmZmZdgZGddeZy)z pygments.formatters.groff ~~~~~~~~~~~~~~~~~~~~~~~~~ Formatter for groff output. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N) Formatter) get_bool_opt get_int_optGroffFormattercJeZdZdZdZgdZgZdZdZdZ dZ dZ d Z d Z y ) ra Format tokens with groff escapes to change their color and font style. .. versionadded:: 2.11 Additional options accepted: `style` The style to use, can be a string or a Style subclass (default: ``'default'``). `monospaced` If set to true, monospace font will be used (default: ``true``). `linenos` If set to true, print the line numbers (default: ``false``). `wrap` Wrap lines to the specified number of characters. Disabled if set to 0 (default: ``0``). groff)rtroffroffc tj|fi|t|dd|_t|dd|_d|_t |dd|_d|_i|_ |jy)N monospacedTlinenosFrwrap) r__init__rr r _linenorr_linelenstyles _make_styles)selfoptionss ;/usr/lib/python3/dist-packages/pygments/formatters/groff.pyrzGroffFormatter.__init__-sf4+7+&w dC#GY>  3    cF|jrdnd}|jrdnd}|jrdnd}|jD]b\}}dx}}|dr|d |dzz }d |z}|d r ||z }||z}|d r ||z }||z}|d r|d|d zz }d|z}||f|j|<dy)Nz\f[CR]z\f[R]z\f[CB]z\f[B]z\f[CI]z\f[I]colorz\m[%s]z\m[]bolditalicbgcolorz\M[%s]z\M[])r styler)rregularrrttypendefstartends rrzGroffFormatter._make_styles:s#)H OOy"oo8:: ,KE4 ECG}T']22mF| mH~mIT)_44m!&DKK  ,rct}|jD]\}}|d |j|d!t|D]}|j d|zdz|zdz!y)Nrz .defcolor z rgb # )setraddsortedwrite)routfilecolors_r!rs r_define_colorszGroffFormatter._define_colorsQsqzz *GAtG}( 4=) *F^ JE MM,.9EADH I Jrc|xjdz c_|jd|jdk7xrdxsd|jfzy)Nz%s% 4d r%r)rr))rr*s r _write_linenozGroffFormatter._write_lineno[s=   i4<<1#4#=#CT\\"RRSrc&t|jd}|jrdnd}d}||jkDrt dt j ||jz D]9}|||jz||jz|jz}||dz|zz };||jz}|dkDr||| dz dz }||_|S|j|z|jkDrd|z|z}||_|S|}|xj|z c_|S)Nr%z rrr/)lenrstripr rrangemathfloorr)rlinelengthspacenewlineichunk remainders r _wrap_linezGroffFormatter._wrap_line`sT[[&'<<R DII 1djj$)));<= 2Qtyy[499TYY)>?EDL501 2*I1}4 1 .. ) ]]V #dii /e|t+G"DM G MMV #Mrc|jddjddjddjddjd d }|}|D]}t|t|jk7s)|jd jd djd dj }|j|d|d dzdz}|S)N\z\[u005C].z \[char46]'z\[u0027]`z\[u0060]~z\[u007E]unicode_escaper/xu00z\[u])replacer2encodedecodeupper)rtextcopycharunis r _escape_charszGroffFormatter._escape_charsws||D+.GC.GD+.GC-GC-  BD4yC ..kk"23VXab"WS%(UW||D&3qr7*:S*@A  B rc 4|j||jd|jr|j||D]B\}}||jvr|j }||jvr|j|\}}|j dD]}|jdkDr|j|}|rK|rI|j|jd}|dk7rS|jdj|||fn/|j|j|jd|jds|jr|j|d|_ |jdd|_ E|jdy)Nz .nf \f[CR] Trr%rz .fi)r-r)r r0rparent splitlinesrr>rQr3joinendswithr) r tokensourcer*r valuer"r#r7rMs rformat_unencodedzGroffFormatter.format_unencodedsW G$ &' <<   w '' *LE5t{{* t{{*U+JE3((. *99q=??40DS--dkk$.?@Drz bggudC.@&ABMM$"4"4T[[5F"GH==&||**73()  d+() # *  *0  grN)__name__ __module__ __qualname____doc__namealiases filenamesrrr-r0r>rQrYrrrrs=, D&GI ,.JT .& r) r]r5pygments.formatterr pygments.utilrr__all__rrarrres+ (3  XYXr