Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagecell
Path: blob/master/contrib/moinmoin/sagecell.py
447 views
1
"""
2
MoinMoin - Sage Cell Parser
3
4
@copyright: 2012 Jason Grout <[email protected]>
5
@license: Modified BSD
6
7
Usage::
8
9
{{{#!sagecell
10
1+1
11
}}}
12
13
Installation
14
15
Put this file in ``data/plugin/parser/``.
16
17
You must also something like these lines in your wikiconfig::
18
19
html_head = '<script type="text/javascript" src="https://sagecell.sagemath.org/static/embedded_sagecell.js"></script>'
20
html_head += '<style type="text/css">.sagecell_output th, .sagecell_output td {border: none;}</style>'
21
22
23
"""
24
from MoinMoin.parser._ParserBase import ParserBase
25
from uuid import uuid4
26
27
Dependencies = ['user']
28
29
template="""
30
<div id="sagecell-%(random)s"><script type="text/x-sage">%(code)s</script></div>
31
<script type="text/javascript">
32
sagecell.makeSagecell({inputLocation: '#sagecell-%(random)s'});
33
</script>
34
"""
35
36
class Parser(ParserBase):
37
38
parsername = "sagecell"
39
Dependencies = []
40
41
def __init__(self, code, request, **kw):
42
self.code = self.sanitize(code)
43
self.request = request
44
45
def sanitize(self, code):
46
"""
47
Sanitize the code, for example, escape any instances of </script>
48
"""
49
sanitized=code.replace("</script>", "<\/script>")
50
return sanitized
51
52
def format(self, formatter):
53
self.request.write(formatter.rawHTML(template%{'random': uuid4(), 'code': self.code}))
54
55