Hat jemand Erfahrungen mit Creoleparser?
http://pypi.python.org/pypi/Creoleparser
http://www.wikicreole.org/
Erfahrungen mit Creoleparser?
Das Werkzeug „simplewiki“ nutzt ihn.
Siehe http://dev.pocoo.org/projects/werkzeug/ ... simplewiki
Ist jedenfalls ganz schick, aber als Abhängigkeit kommt halt Genshi mit. Wenn man Genshi allerdings wie im obigen Beispiel als Template Engine einsetzt, isses wunderbar
MfG EnTeQuAK
Siehe http://dev.pocoo.org/projects/werkzeug/ ... simplewiki
Ist jedenfalls ganz schick, aber als Abhängigkeit kommt halt Genshi mit. Wenn man Genshi allerdings wie im obigen Beispiel als Template Engine einsetzt, isses wunderbar

MfG EnTeQuAK
Was ich da in dem "Cheat Sheet compact" sehe, kann man in 15min mit ein paar regulären Ausdrücken selbst bauen. Ich habe das jedenfalls schon mehrfach so oder so ähnlich in verschiedenen Sprachen gemacht und würde dafür nicht auf eine fremde Bibliothek setzen.
Stefan
Stefan
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
klarsma hat geschrieben:Was ich da in dem "Cheat Sheet compact" sehe, kann man in 15min mit ein paar regulären Ausdrücken selbst bauen. Ich habe das jedenfalls schon mehrfach so oder so ähnlich in verschiedenen Sprachen gemacht und würde dafür nicht auf eine fremde Bibliothek setzen.

TUFKAB – the user formerly known as blackbird
der Creoleparser.
Gruß
Gruß
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Creole ist nur die Spec, du kannst dir also auch einen Creole Parser mittels PLY aus der EBNF-Grammatik selbst bauen. Der Creoleparser hingegen, ein Parser der Creole-Syntax benötigt Genshi. Es hindert dich aber keiner dran, selbst einen zu schreiben, mit der formellen Grammatik ist ja ein komplizierterer Teil bereits erledigt.jens hat geschrieben:Wie jetzt? Braucht Creole Genshi oder das simplewiki?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ah, jetzt geht mir ein Licht auf. Die interessante Seite ist ja http://pages.infinit.net/shday/Creoleparser/index.html und nicht die Spec.
Ich habe da etwas falsch verstanden. Ich dache der Creoleparser wäre quasi das was Descriptive Markup Language Toolkit werden sollte. Was ist aus DMLT geworden, EnTeQuAk?
Ich habe da etwas falsch verstanden. Ich dache der Creoleparser wäre quasi das was Descriptive Markup Language Toolkit werden sollte. Was ist aus DMLT geworden, EnTeQuAk?
Die Formatierungen aus dem "cheat sheet" deckt folgender Code ab:
Stefan
Code: Alles auswählen
import re
def format(text):
noformat = []
def escape(m):
noformat.append("<pre><code>%s</code></pre>" % m.group(1))
return "<@%i@>" % (len(noformat) - 1)
def table(m):
line = m.group(1)
line = re.sub(r'\|=([^|]*)', r'<th>\1</th>', line)
line = re.sub(r'\|([^|]*)', r'<td>\1</td>', line)
return '<table><tr>%s</tr></table>' % line
text = re.sub(r'&', r'&', text)
text = re.sub(r'<', r'<', text)
text = re.sub(r'(?ms)^\{\{\{(.*?)\}\}\}', escape, text)
text = re.sub(r'(?m)^== (.*)$', r'<h1>\1</h1>', text)
text = re.sub(r'(?m)^=== (.*)$', r'<h2>\1</h2>', text)
text = re.sub(r'(?m)^==== (.*)$', r'<h3>\1</h3>', text)
text = re.sub(r'(?m)^\* (.*)$', r'<ul><li>\1</li></ul>', text)
text = re.sub(r'(?m)^\** (.*)$', r'<ul><li><ul><li>\1</li></ul></li></ul>', text)
text = re.sub(r'(?m)^(\|.*)\|$', table, text)
text = re.sub(r'(?m)^([^<\n].*)$', r'<p>\1</p>', text)
text = re.sub(r'</p>\n<p>', '\n', text)
text = re.sub(r'</ul>\n<ul>', '\n', text)
text = re.sub(r'</ul></li>\n<li><ul>', '\n', text)
text = re.sub(r'</table>\n<table>', '\n', text)
text = re.sub(r'\[\[(.*?)\|(.*?)\]\]', r'<a href="\1">\2</a>', text)
text = re.sub(r'\[\[(.*?)\]\]', r'<a href="\1">\1</a>', text)
text = re.sub(r'\{\{(.*?)\|(.*?)\}\}', r'<img src="\1" alt="\2"/>', text)
text = re.sub(r'//\b(.*?)\b//', r'<i>\1</i>', text)
text = re.sub(r'\*\*\b(.*?)\b\*\*', r'<b>\1</b>', text)
text = re.sub(r'\\', r'<br/>', text)
text = re.sub(r'<@(\d+)@>', lambda m: noformat[int(m.group(1))], text)
return text
Ist aber weder ein Parser, noch kann das schlechte Formatierungen des Benutzers berücksichtigen.
DMLT ist derzeit am kompletten rewrite, und pausiert (jaja, schlechte kombo...).
Gruß, Christopher
Nein, ist er nicht wie du selber schon bemerkt hast.Jens hat geschrieben:ch habe da etwas falsch verstanden. Ich dache der Creoleparser wäre quasi das was Descriptive Markup Language Toolkit werden sollte. Was ist aus DMLT geworden, EnTeQuAk?
DMLT ist derzeit am kompletten rewrite, und pausiert (jaja, schlechte kombo...).
Gruß, Christopher
Warum ist es wichtig, ob es ein Parser ist? Mein Programm versteht eine Syntax. Damit ist es ein Parser. Es meldet allerdings keine Syntaxfehler. Es ist sogar ein Compiler, denn ich übersetze, was ich verstehe, in HTML. Und was heißt schlechte Formatierung? Entweder hält sich der Benutzer an die Syntax und dann klappt es oder er hält sich nicht daran und dann gilt "garbage in -> garbage out". Ich finde, das reicht für so etwas einfaches wie Text-Formatierung. Ich glaube, dem Benutzer ist weniger geholfen, wenn man statt den Text zu formatieren einen Fehler der Art "// expected to close italics region" ausgibt.
Stefan
Stefan
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ist ja ganz nett, hat aber einige Bugssma hat geschrieben:Die Formatierungen aus dem "cheat sheet" deckt folgender Code ab:...

Ich hab es mal mit einem Test Text probiert: http://paste.pocoo.org/show/33812/
Aber so ist es immer. Man kommt schnell nach ans Ziel, aber bis zu 100% ist es noch ein langer Weg

Vielleicht sollte ich mein tinyTextile mal wieder anfassen

@sma: Dein Parser ist leider: gültiger Creole-Quelltext in, Garbage out. Die haben auf der Seite einen Testfall. Probier den mal aus, da funktioniert echt vieles nicht.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Es gibt auch hier einen Test: http://code.google.com/p/creoleparser/s ... r/tests.py
...der google codehightligher kommt da ein wenig durcheinander, pygments kann's besser: http://paste.pocoo.org/show/33815/
...der google codehightligher kommt da ein wenig durcheinander, pygments kann's besser: http://paste.pocoo.org/show/33815/
Hey, ich habe nur versprochen, in 15min das zu verarbeiten, was da auf der Startseite stand. Keine zusätzlichen Testfälle. Verschachteltes bold/italic war da genauso wenig zu sehen wie Überschriften größer H3, Link-Varianten, eingebetteter Code in einer Zeile usw. Dinge wie "----" in <hr> oder "#" statt "*" hatte ich mir gespart, weil diese simpel genug waren.BlackJack hat geschrieben:@sma: Dein Parser ist leider: gültiger Creole-Quelltext in, Garbage out. Die haben auf der Seite einen Testfall. Probier den mal aus, da funktioniert echt vieles nicht.
Ein paar Sachen ließen sich noch leicht korrigieren, aber z.B. verschachtelte Textauszeichnungen zu erkennen wird mit regulären Ausdrücken alleine nicht klappen. Ich könnte vielleicht nach wie vor mit regulären Ausdrücken einen Token-Stream erzeugen, müsste diesen aber "klassisch" mit einem top-down-Parser verarbeiten.
Stefan
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab jetzt eine Implementierung gefunden, die kein Genshi benötigt:
http://djikiki.googlecode.com/svn/trunk/djikiki/creole/
Stammt wohl ursprünglich aus MoinMoin: http://hg.moinmo.in/moin/1.7/file/tip/MoinMoin/parser/
Oder ob das das original ist: http://sheep.art.pl/devel/creole/file/tip ?
Was jetzt noch toll wäre, ein WYSIWYG JavaScript Editor der Creole Markup statt html ausspuckt...
http://djikiki.googlecode.com/svn/trunk/djikiki/creole/
Stammt wohl ursprünglich aus MoinMoin: http://hg.moinmo.in/moin/1.7/file/tip/MoinMoin/parser/
Oder ob das das original ist: http://sheep.art.pl/devel/creole/file/tip ?
Was jetzt noch toll wäre, ein WYSIWYG JavaScript Editor der Creole Markup statt html ausspuckt...