Code: Alles auswählen
c = creole.creole2html(u"äöüß")Code: Alles auswählen
c = creole.creole2html(u"äöüß")Code: Alles auswählen
>>> from creole import creole2html
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named creoleSicher? Ich habe aus dieser Seite interpretiert, dass python-creole benutzt wird! Und das kennt in der Tat keinen `encoding`-Parameter... (und ist das von Jens erstellte, wie ich oben schriebburli hat geschrieben: Wie es scheint verwendet Flask-Creole diesen creoleparser
Code: Alles auswählen
In [4]: from creole import creole2html
In [5]: creole2html(u"''hallo''")
Out[5]: u"<p>''hallo''</p>"
In [6]: creole2html("''hallo''")
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
/home/nelson/<ipython console> in <module>()
/usr/local/lib/python2.7/dist-packages/creole/__init__.pyc in creole2html(markup_string, debug, parser_kwargs, emitter_kwargs, block_rules, blog_line_breaks, macros, verbose, stderr)
58 Info: parser_kwargs and emitter_kwargs are deprecated
59 """
---> 60 assert isinstance(markup_string, TEXT_TYPE), "given markup_string must be unicode!"
61
62 parser_kwargs2 = {
AssertionError: given markup_string must be unicode!
Probiere mal Zeichen wie ein ßHyperion hat geschrieben:Also alles in Butter.Code: Alles auswählen
In [4]: from creole import creole2html In [5]: creole2html(u"''hallo''") Out[5]: u"<p>''hallo''</p>"
Was für einen Bug soll ich da melden? Und an wen? An den Programmierer von Flask-Creole, dass er den falschen Parser verwendet?Hyperion hat geschrieben: Edit3: Ok, also laut `setup.py` nutzt das Ding also doch das `creoleparser`-Modul. Da bleibt dann wohl nur eines: Bug melden!
Ja hab ich - klappt alles wunderbar!burli hat geschrieben: Probiere mal Zeichen wie ein ß
Nee, dass er es versäumt hat, seine Jinja2-Filter-Funktion auf Unicode umzustellen. Laut Doku vom creoleparser-Modul kann ich der `__init__`-Methode der `Parser`-Klasse ein `encoding`-Argument übergeben und muss dieses auf `None` setzen, um Unicode zu übergeben und wieder zu erhalten. Wie man in Zeile 34 des `creole`-Moduls vom Flask-Creole Projekt erkennen kann, fehlt diese Angabe:burli hat geschrieben: Was für einen Bug soll ich da melden? Und an wen? An den Programmierer von Flask-Creole, dass er den falschen Parser verwendet?
Code: Alles auswählen
self.creole = Parser(dialect=self.dialect, method=parser_method)
Code: Alles auswählen
self.creole = Parser(dialect=self.dialect, method=parser_method, encoding=None)
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
"""
Put Template 'test.html' in 'templates' like this:
{{ data|creole2html }}
"""
from flask import Flask, render_template
from flaskext.creole import Creole
app = Flask(__name__)
Creole(app)
DATA = u'üöä**ß**!'
@app.route('/test')
def test():
return render_template('test.html', data=DATA)
@app.route('/patched')
def patched():
res = Creole(app).creole2html(DATA)
return u"Res: {}".format(res)
@app.route('/')
def hello_world():
res = Creole(app).creole2html(DATA).decode("utf-8")
return u"Res: {}".format(res)
if __name__ == '__main__':
app.debug = True
app.run()
Naja, wenn Du den Jinja2-Filter nicht verwendest, kannst Du ja auch mit einer Work-around-Wrapper-Funktion glücklich werden - oder eben einen anderen Creole-Parser einsetzen.burli hat geschrieben:Jap, mit dem Patch funktioniert es. Jetzt muss es nur noch der Entwickler ändern und mein Provider muss die Änderung einspielen
EDIT: oh, Bug schon eingetragen, danke.
Code: Alles auswählen
from creole import creole2html
@app.template_filter('creole2html')
def creole2html_(text):
return creole2html(text)
Code: Alles auswählen
import markdown
@app.template_filter('markdown2html')
def markdown2html_(text):
return markdown.markdown(text)
Code: Alles auswählen
text|markdown2html|safe