Path: blob/master/contrib/sphinx2/icsecontrib/sagecellserver.py
447 views
#!/usr/bin/env python1# -*- coding: utf-8 -*-23from docutils import nodes4from docutils.parsers.rst import directives5from sphinx.util.compat import Directive6789class sagecellserver(nodes.General, nodes.Element):10pass111213def html_visit_sagecellserver_node(self, node):14self.body.append("<div class='sage'>")15self.body.append("<script type='text/x-sage'>")16self.body.append(node['python_code'])17self.body.append("</script>")18self.body.append("</div>")192021def html_depart_sagecellserver_node(self, node):22pass232425def latex_visit_sagecellserver_node(self, node):26if node["is_verbatim"] == "True":27self.body.append("\n\n")28self.body.append("\\begin{verbatim}\n")29self.body.append(node['python_code'])30self.body.append("\n\end{verbatim}")31self.body.append("\n\n")32else:33self.body.append("\n\\textbf{***SAGE CELL***}\n")343536def latex_depart_sagecellserver_node(self, node):37pass383940class SageCellServer(Directive):41has_content = True42required_arguments = 043optional_arguments = 244option_spec = {45"prompt_tag": directives.unchanged,46"is_verbatim": directives.unchanged,47}4849def run(self):50if "prompt_tag" in self.options:51annotation = self.options.get("prompt_tag")52else:53annotation = "False"5455if "is_verbatim" in self.options:56is_verbatim = self.options.get("is_verbatim")57else:58is_verbatim = "True"5960content_list = self.content6162if annotation == "False":63content_list = map(lambda x: x.replace("sage: ", "").replace("... ", ""), content_list)6465node = sagecellserver()66node['is_verbatim'] = is_verbatim67node['python_code'] = '\n'.join(content_list)6869return [node]707172def setup(app):73app.add_node(sagecellserver,74html = (html_visit_sagecellserver_node, html_depart_sagecellserver_node),75latex = (latex_visit_sagecellserver_node, latex_depart_sagecellserver_node))76app.add_directive("sagecellserver", SageCellServer)777879808182