
    Mh}                     F    d Z ddlZddlmZ ddlmZ  G d de          ZdS )zThis preprocessor detect cells using a different language through
magic extensions such as `%%R` or `%%octave`. Cell's metadata is marked
so that the appropriate highlighter can be used in the `highlight`
filter.
    N)Dict   )Preprocessorc                        e Zd ZdZ edddddddd	d
ddd          Z ed                              d          Zd fd	Zd Z	d Z
 xZS )HighlightMagicsPreprocessorzQ
    Detects and tags code cells that use a different languages than Python.
    rbashcython
javascriptjulialatexoctaveperlrubyshsql)z%%Rz%%bashz%%cythonz%%javascriptz%%juliaz%%latexz%%octavez%%perlz%%rubyz%%shz%%sqlzSyntax highlighting for magic's extension languages. Each item associates a language magic extension such as %%R, with a pygments lexer such as r.)helpT)configNc                     t                      j        dd|i| | j                            | j                   d                    | j                                                  }t          j        d| d          | _	        dS )zPublic constructorr   |z^\s*(z)\s+N )
super__init__default_languagesupdate	languagesjoinkeysrecompilere_magic_language)selfr   kwany_language	__class__s       g/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/nbconvert/preprocessors/highlightmagics.pyr   z$HighlightMagicsPreprocessor.__init__0   s     	---"--- 	%%dn555 xx 6 ; ; = =>>!#,G\,G,G,G!H!H    c                 ~    | j                             |          }|r | j        |                    d                   S dS )a(  
        When a cell uses another language through a magic extension,
        the other language is returned.
        If no language magic is detected, this function returns None.

        Parameters
        ----------
        source: str
            Source code of the cell to highlight
        r   N)r!   matchr   group)r"   sourcems      r&   which_magic_languagez0HighlightMagicsPreprocessor.which_magic_language=   sA     "((00 	6 )!''!**55tr'   c                 n    |j         dk    r'|                     |j                  }|r||d         d<   ||fS )a  
        Tags cells using a magic extension language

        Parameters
        ----------
        cell : NotebookNode cell
            Notebook cell being processed
        resources : dictionary
            Additional resources used in the conversion process.  Allows
            preprocessors to pass variables into the Jinja engine.
        cell_index : int
            Index of the cell being processed (see base.py)
        codemetadatamagics_language)	cell_typer-   r+   )r"   cell	resources
cell_indexmagic_languages        r&   preprocess_cellz+HighlightMagicsPreprocessor.preprocess_cellQ   sI      >V##!66t{CCN E6DZ !23Yr'   )N)__name__
__module____qualname____doc__r   r   tagr   r   r-   r7   __classcell__)r%   s   @r&   r   r      s         
  ( 	
 	
 " /   
cc I I I I I I  (      r'   r   )r;   r   	traitletsr   baser   r   r   r'   r&   <module>r@      s|     
			            T T T T T, T T T T Tr'   