B
    7d                 @   s   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZ ddl
mZ ejZdd	lmZ d
d ZG dd deeeZde eefgZdS )zWTornado handlers for the live notebook view.

This is a fork from jupyter/notebook#6.x
    )
namedtuple)webgen)_i18n)ensure_async)
path_regexFilesRedirectHandler)ExtensionHandlerMixinExtensionHandlerJinjaMixin)JupyterHandler)nbclassic_pathc              C   s`  ddl m} m} tdddg}|ddd|d	d
d|ddd|ddd|ddd|ddd|ddd|dddg}g }xl|  D ]b}||}| }t|dd }tt||dd }	|d k	r~||	kr~td||j}
|	|||
 q~W t
dd |D }x |D ]}|j|kr|	| qW |ddd}||kr8|| |ddd}||krX|| t|S )Nr   )get_export_namesget_exporterExporterInfonamedisplayhtmlzHTML (.html))r   r   latexzLaTeX (.tex)markdownzMarkdown (.md)notebookzNotebook (.ipynb)ZpdfzPDF via LaTeX (.pdf)rstzreST (.rst)scriptzScript (.txt)ZslideszReveal.js slides (.slides.html)Zexport_from_notebookz{} ({})c             s   s   | ]}|j  V  qd S )N)r   lower).0exporter r   h/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/nbclassic/notebook/handlers.py	<genexpr>=   s    z)get_frontend_exporters.<locals>.<genexpr>pythonzpython (.py)Zcustomzcustom (.txt))Znbconvert.exporters.baser   r   r   getattrsuperr   formatZfile_extensionappendsetr   removesorted)r   r   r   Zdefault_exportersZfrontend_exportersr   Zexporter_classZexporter_instanceZux_nameZsuper_uxnamer   namesr   Zpython_exporterZtemplate_exporterr   r   r   get_frontend_exporters   s@    














r'   c               @   s    e Zd Zejejdd ZdS )NotebookHandlerc             c   s   | d}| j}yt|j|ddV }W nN tjk
rv } z.|jdkrdd|dkrdt	| |V  n W dd}~X Y nX |d dkrt	| |V  |
dd	d
 }| | jd||d| j| jtd dS )z}get renders the notebook template if a name is given, or
        redirects to the '/files/' handler if the name is not given./F)contenti  filesNtyper      znotebook.html)Znotebook_pathZnotebook_nameZkill_kernelmathjax_urlmathjax_configr'   )stripZcontents_managerr   getr   	HTTPErrorstatus_codesplitr   Zredirect_to_filesrsplitwriteZrender_templater/   r0   r'   )selfpathcmmodeler   r   r   r   r2   P   s$    

zNotebookHandler.getN)__name__
__module____qualname__r   authenticatedr   	coroutiner2   r   r   r   r   r(   N   s   r(   z{}/notebooks{}N)__doc__collectionsr   tornador   r   Zjupyter_server.transutilsr   Zjupyter_server.utilsr   Zjupyter_server.base.handlersr   r   Z jupyter_server.extension.handlerr	   r
   r   r3   Z	nbclassicr   r'   r(   r!   Zdefault_handlersr   r   r   r   <module>   s   2'