ich versuche gerade, mir für das bbcode-Plugin von Nikola einige Formatierungsbefehle neu hinzuzufügen. Dazu muss ich dem bbcode-Parser einige neue Befehle hinzufügen.
Der Quellcode des Plugins ist hier: https://github.com/getnikola/plugins/bl ... /bbcode.py. Bei Zeile 56 könnte man dann nun eigene Formatierer einrichten. Da ich das ungern in diese bbcode.py selbst schreiben möchte (kann eventuell aktualisiert werden, so dass meine ganzen eigenen Änderungen verschwinden würden), möchte ich das in einer eigenen Datei auslagern, die dann dort einfach nur eingebunden wird.
Jedenfalls fügt man dort folgendermaßen neue Befehle hinzu (http://bbcode.readthedocs.org/en/latest/formatters.html):
Code: Alles auswählen
parser.add_formatter('quote', render_quote, strip=True, swallow_trailing_newline=True)Code: Alles auswählen
def add_image(tag_name, value, options, parent, context):
img_string = '<img src="{}"'.format(value)
for option in options.items():
img_string = img_string + ' {}="{}"'.format(option[0], option[1])
return img_string + '>'
advanced_formatters = ["img", add_image]
Code: Alles auswählen
for formatter in advanced_formatters:
self.parser.add_formatter(formatter[0], formatter[1], strip=True, swallow_trailing_newline=True)
Ich dachte immer, Python arbeitet größtenteils intern mit Zeigern, oder nicht? In advanced_formatters[1] steht ja auch die Funktion drin, also kann ich ja advanced_formatters[1](blabla) ausführen und das funktioniert. Wieso kann ich dann nicht mit einer Schleife darüber laufen und der Verweis bleibt erhalten?
Danke
