別のアプローチは、パーサーを追加することです。
以下は、 MoinmoinのHelloWorldパーサーの非常に迅速で汚い適応です。
import StringIO
import sys
class Parser():
def __init__(self, raw, request, **kw):
self.raw = raw
self.request = request
self.kw=kw
def format(self, formatter):
# Execute the code
code_out = StringIO.StringIO()
sys.stdout = code_out
exec self.raw
sys.stdout = sys.__stdout__
out_lines = code_out.getvalue().split("\n")
# Print the output
for out_line in out_lines:
self.request.write(formatter.rawHTML(out_line+"<br>"))
たとえば、として保存されている場合はpath/to/MoinMoin/parser/interpret_python.py
、ページに入ることができます
{{{#!interpret_python
for j in [1,3,5]:
print(j)
}}}
そしてそれはテキストを生成します
1
3
5
ページを表示するとき。実行をサンドボックスに限定することで、safe(r)にすることができます。