Seite 1 von 1

Python-Code auf einer Homepage darstellen

Verfasst: Sonntag 14. Januar 2007, 15:03
von Mawilo
Hallo,

mir ist zwar so, als hätte ich zu diesem Thema schon mal was gelesen - ich weis nur nicht mehr wo.:oops:
Alos - ich möchte Python Code auf einer Homepage darstellen. Mit allen Einrückungen und ggf. auch mit der farblichen Darstellung. Gibt es dazu schon etwas fertiges? Ich habe mich bisher kaum mit so etwas beschäftigt. Ich benötige deshalb etwas, was nicht so kompliziert ist :D

Stephan

Verfasst: Sonntag 14. Januar 2007, 15:18
von Leonidas
Dann nimm Pygments. Unterstützt neben Python auch viele andere Sprachen und ist inzwischen ziemlich populär.

Verfasst: Sonntag 14. Januar 2007, 16:15
von mawe
Ich verwende dafür recht gerne vim. Einfach

Code: Alles auswählen

:runtime! syntax/2html.vim
im command-mode eintippen, und fertig.

Verfasst: Montag 15. Januar 2007, 09:11
von Mawilo
Danke für die Tips. Ich werde das in der nächsten Zeit mal ausprobieren.

Stephan

Verfasst: Montag 15. Januar 2007, 10:39
von birkenfeld
Mit Pygments:

Code: Alles auswählen

pygmentize -o mein.html python-datei.py

Verfasst: Mittwoch 17. Januar 2007, 20:44
von Mawilo
Ich habe mit folgender Datei getestet:

Code: Alles auswählen

# -*- coding: iso-8859-15 -*-

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter

f = file('JoPop3.2.pyw', 'r')
out = file('testcode.html', 'a')

code = f.read()

lexer = get_lexer_by_name("python", stripall=True)
formatter = HtmlFormatter(linenos=True, encoding='utf-8', style='colorful')
result = highlight(code, lexer, formatter, outfile = out)


f.close()
out.close()
Der Code wird auch als html dargestellt. Nur leider ohne die gewünschte Farbgebung.

Was muss da noch geändert werden, damit ich eine farbige Darstellung bekomme? In der Doku habe ich nichts gefunden (oder überlesen?)

Stephan

Verfasst: Mittwoch 17. Januar 2007, 21:27
von birkenfeld
Wie du an der HTML-Ausgabe sehen kannst, gibt Pygments nur CSS-Klassen aus. Die passenden CSS-Definitionen bekommst du mit `formatter.get_style_defs()` oder, wenn du ein ganzes HTML-Dokument mit der Formatteroption "full=True" erzeugst.

Verfasst: Mittwoch 17. Januar 2007, 21:45
von Mawilo
Danke, jetzt wird's bunt :D

Stephan

Verfasst: Sonntag 21. Januar 2007, 11:36
von mitsuhiko
Ansonsten gibts noch (gut, die Lösung ist nicht so groovy) die Möglichkeit mit der Formatteroption noclasses=True pygments die Stildefinitionen direkt in die <span> Elemente zu stecken. Ich rate aber mal davon ab ;)