
    ,h                     H    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y)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                   J    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y)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 | _	        | j                          y )N
monospacedTlinenosFr   wrap)r   __init__r   r   r   _linenor   r   _linelenstyles_make_styles)selfoptionss     [/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pygments/formatters/groff.pyr   zGroffFormatter.__init__-   sf    4+7+&wdC#GY>3	    c                 v   | j                   rdnd}| j                   rdnd}| j                   rdnd}| j                  D ]z  \  }}dx}}|d   r|d	j                  |d         z  }d
|z   }|d   r
||z  }||z   }|d   r
||z  }||z   }|d   r|dj                  |d         z  }d|z   }||f| j                  |<   | y )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 OOy"oo8:: 	,KE4ECG}))$w-88mF|mH~mI))$y/::m!&DKK	,r   c                     t               }| j                  D ]  \  }}|d   |j                  |d          ! t        |      D ]  }|j	                  d|z   dz   |z   dz          ! y )Nr   z
.defcolor z rgb #
)setr   addsortedwrite)r   outfilecolors_r"   r   s         r   _define_colorszGroffFormatter._define_colorsQ   sq    zz 	*GAtG}(

4=)	* F^ 	JEMM,.9EADHI	Jr   c                     | xj                   dz  c_         |j                  d| j                   dk7  xr dxs d| j                   fz         y )N   z%s% 4d r&   r   )r   r*   )r   r+   s     r   _write_linenozGroffFormatter._write_lineno[   s=    i4<<1#4#=#CT\\"RRSr   c                 &   t        |j                  d            }| j                  rdnd}d}|| j                  kD  rt	        dt        j                  || j                  z              D ]9  }||| j                  z  || j                  z  | j                  z    }||dz   |z   z  }; || j                  z  }|dkD  r||| dz
  d  z  }|| _        |S | j                  |z   | j                  kD  rd|z   |z   }|| _        |S |}| 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DII1djj$)));<= 2Qtyy[499TYY)>?EDL5012 *I1}4
1.. )  ]]V#dii/e|t+G"DM
  GMMV#Mr   c                    |j                  dd      j                  dd      j                  dd      j                  dd      j                  d	d
      }|}|D ]  }t        |      t        |j                               k7  s)|j                  d      j                         dd  j                  dd      j	                         }|j                  |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D4yC..kk"23VXab"WS%(UW  ||D&3qr7*:S*@A	B r   c           	      4   | j                  |       |j                  d       | j                  r| j                  |       |D ]B  \  }}|| j                  vr|j
                  }|| j                  vr| j                  |   \  }}|j                  d      D ]  }| j                  dkD  r| j                  |      }|rK|rI| j                  |j                  d            }|dk7  rS|j                  dj                  |||f             n/|j                  | j                  |j                  d                   |j                  d      s| j                  r| j                  |       d| _        |j                  d       d| _         E |j                  d       y )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   sW   G$&'<<w'' 	*LE5t{{* t{{*U+JE3((. *99q=??40DS--dkk$.?@DrzbggudC.@&ABMM$"4"4T[[5F"GH==&||**73()d+()#*	*0 	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T
.& r   )	r^   r6   pygments.formatterr   pygments.utilr   r   __all__r   rb   r   r   <module>rf      s+     ( 3
XY Xr   