
    Mh                     P    d Z ddlZddlmZ ddlmZmZ dgZ G d de          ZdS )z
    pygments.formatters.groff
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    Formatter for groff output.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	Formatter)get_bool_optget_int_optGroffFormatterc                   L    e Zd ZdZdZg dZg Zd Zd Zd Z	d Z
d Zd	 Zd
 ZdS )r   a  
    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)r   troffroffc                     t          j        | fi | t          |dd          | _        t          |dd          | _        d| _        t          |dd          | _        d| _        i | _	        | 
                                 d S )N
monospacedTlinenosFr   wrap)r   __init__r   r   r   _linenor   r   _linelenstyles_make_styles)selfoptionss     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/formatters/groff.pyr   zGroffFormatter.__init__-   s    4++7+++&wdCC#GY>>33	    c                 v   | j         rdnd}| j         rdnd}| j         rdnd}| j        D ]\  }}dx}}|d         r#|d	                    |d                   z  }d
|z   }|d         r
||z  }||z   }|d         r
||z  }||z   }|d         r#|d                    |d                   z  }d|z   }||f| j        |<   d S )Nz\f[CR]z\f[R]z\f[CB]z\f[B]z\f[CI]z\f[I] colorz\m[{}]z\m[]bolditalicbgcolorz\M[{}]z\M[])r   styleformatr   )r   regularr   r   ttypendefstartends           r   r   zGroffFormatter._make_styles:   s   #<))H O9yy"o;8: 	, 	,KE4ECG} $))$w-888mF| $mH~ $mI $))$y/:::m!&DK	, 	,r   c                     t                      }| j        D ](\  }}|d         |                    |d                    )t          |          D ]#}|                    d|z   dz   |z   dz              $d S )Nr   z
.defcolor z rgb #
)setr   addsortedwrite)r   outfilecolors_r"   r   s         r   _define_colorszGroffFormatter._define_colorsQ   s    z 	* 	*GAtG}(

4=)))F^^ 	J 	JEMM,.9EADHIIII	J 	Jr   c                 ~    | xj         dz  c_         |                    d| j         dk    rdpd| j         fz             d S )N   z%s% 4d r&   r   )r   r*   )r   r+   s     r   _write_linenozGroffFormatter._write_lineno[   sG    i4<1#4#=#CT\"RRSSSSSr   c                    t          |                    d                    }| j        rdnd}d}|| j        k    rt	          dt          j        || j        z                      D ]/}||| j        z  || j        z  | j        z            }||dz   |z   z  }0|| j        z  }|dk    r||| dz
  d          z  }|| _        n5| j        |z   | j        k    rd|z   |z   }|| _        n|}| xj        |z  c_        |S )Nr&   z     r   r   r0   )lenrstripr   r   rangemathfloorr   )r   linelengthspacenewlineichunk	remainders           r   
_wrap_linezGroffFormatter._wrap_line`   s   T[[&&''</RDI1dj$));<<== 2 2Qty[49TY)>>?EDL501*I1}}4
1.. )]V#di//e|t+G"DMMGMMV#MMr   c                 6   |                     dd                               dd                               dd                               dd                               d	d
          }|}|D ]}t          |          t          |                                          k    ry|                    d                                          dd                               dd                                          }|                     |d|dd          z   dz             }|S )N\z\[u005C].z	\[char46]'z\[u0027]`z\[u0060]~z\[u007E]unicode_escaper0   xu00z\[u])replacer3   encodedecodeupper)r   textcopycharunis        r   _escape_charszGroffFormatter._escape_charsw   s    ||D+..GC..GD+..GC--GC--	 	
  	B 	BD4yyC....kk"233VXXabb"WS%((UWW  ||D&3qrr7*:S*@AAr   c           	      r   |                      |           |                    d           | j        r|                     |           |D ]W\  }}|| j        vr|j        }|| j        v| j        |         \  }}|                    d          D ]}| j        dk    r|                     |          }|r\|rZ| 	                    |
                    d                    }|dk    r+|                    d                    |||f                     n;|                    | 	                    |
                    d                               |                    d          r@| j        r|                     |           d| _        |                    d           d| _        Y|                    d           d S )Nz.nf
\f[CR]
Tr   r&   r   z
.fi)r.   r*   r   r1   r   parent
splitlinesr   r?   rR   r4   joinendswithr   )	r   tokensourcer+   r!   valuer#   r$   r8   rN   s	            r   format_unencodedzGroffFormatter.format_unencoded   s   G$$$&'''< 	(w'''' 	* 	*LE5t{** t{**U+JE3((.. * *9q==??400D IS I--dkk$.?.?@@DrzzbggudC.@&A&ABBBMM$"4"4T[[5F5F"G"GHHH==&& *| ***7333()d+++()#*& 	gr   N)__name__
__module____qualname____doc__namealiases	filenamesr   r   r.   r1   r?   rR   rZ    r   r   r   r      s         , D&&&GI
 
 
, , ,.J J JT T T
  .  &         r   )	r^   r6   pygments.formatterr   pygments.utilr   r   __all__r   rb   r   r   <module>rf      s      ( ( ( ( ( ( 3 3 3 3 3 3 3 3
X X X X XY X X X X Xr   