Python Code in WordPress schön darstellen

Im Zuge meines ersten Tutorials, habe ich mich viele Stunden mit der Umformatierung von Python Code beschäftigt, damit dieser in WordPress leserlich aussieht. Im Folgenden möchte ich euch zwei Möglichkeiten zeigen, wie ihr das erreichen könnt:

Das Problem

Wenn man normalen Python-Code mit all seinen Tab-Einrückungen einfach in WordPress rein kopiert, sieht das in etwa so aus:

import itertools

def iter_primes():
# an iterator of all numbers between 2 and +infinity
numbers = itertools.count(2)

# generate primes forever
while True:
# get the first number from the iterator (always a prime)
prime = numbers.next()
yield prime

# this code iteratively builds up a chain of
# filters…slightly tricky, but ponder it a bit
numbers = itertools.ifilter(prime.__rmod__, numbers)

for p in iter_primes():
if p > 1000:
break
print p

Offensichtlich ignoriert der WordPress Editor einfach alle Tab-Einrückungen. Das ist nicht nur hässlich, sondern macht das ganze Skript unbrauchbar, da es auf diese Wiese nicht mehr funktioniert

Möglichkeit 1: Ein Webdienst

Bei meinen Recherchen bin ich auf einen Online-Dienst gestoßen, welcher die Möglichkeit bietet, Tab-Einrückungen durch eine gewisse Anzahl von Leerzeichen zu ersetzen:

http://beta.phpformatter.com

Ihr müsst einfach euren Python Code in dem “Input” Reiter rein kopieren

Imput

Danach müsst ihr einfach nur auf den Reiter “Output” klicken und den erstellen Code, welcher nun keine Tabs mehr enthält, raus kopieren.

output

Die meines Erachtens schönste Möglichkeit den Code in WordPress einzuplegen, ist der “Preformatet” Style: Einfach an die Stelle in eurem Post klicken, an welchen ihr euren Code haben wollt, den Style auf “Preformated” ändern und mit Strg+C den zuvor kopierten Code einfügen.

wp_edit

Das Ergebnis sieht dann folgender Maßen aus:

import itertools

def iter_primes():
    # an iterator of all numbers between 2 and +infinity
    numbers = itertools.count(2)

    # generate primes forever
    while True:
        # get the first number from the iterator (always a prime)
        prime = numbers.next()
        yield prime

        # this code iteratively builds up a chain of
        # filters...slightly tricky, but ponder it a bit
        numbers = itertools.ifilter(prime.__rmod__, numbers)

for p in iter_primes():
    if p > 1000:
        break
    print p

Möglichkeit 2: Ein Automater Skript (Mac)

Da mir die erste Möglichkeit noch zu umständlich war (den erstellten Code bei dem Web-Service kann man nicht mit Strg-A komplett markieren, d.h. man muss umständlich “von Hand” alles markieren), habe ich mir ein kleines Automator Skript gebastelt:

Man öffnet das Mac-Program Automator und erstellt ein neues “Programm”

programm_erstellen

Danach wählt man in der Linken Spalte “Dienstprogramme” aus und zieht das Element “Shell-Skript ausführen” aus dessen Unterordner in den Arbeitsablauf rein

shell_erstellen

Nun ändert man die Option “Eingabe übergeben” von “als stin” zu “Als Argumente”

argumente

Jetzt muss man nur noch den Code in dem Shell-Skript ändern zu:

for f in "$@"
do
    expand $f > $f.txt
done

Jetzt müssen wir unseren Arbeitsverlauf an einem Ort unserer Wahl Speichern. Der Ordner Programme bietet sich ja an. Ich habe das Programm bei mir “PyToWp” für “Python to WordPress” genannt.

app_folder

Der Einfachheit halber ziehen wir die PytoWp.app Datei auf unser Dock um eine Verknüpfung zu erstellen:

Dock

Um das Skript zu verwenden, müssen wir einfach nur unser Dateiname.py Programm auf dieses Icon im Dock ziehen. Das Skript erstellt automatisch eine .txt in dem selben Ordner, in dem auch unsere .py Datei liegt. In der .txt wurden alle Tabs durch Leerzeichen ersetzt. Hier ein kleines Demo-Video zur Benutzung:


Der So erstellte “tabfreie”-Text kann dann genauso in WordPress mit dem “Preformatted” Style eingefügt werden.

About these ads

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ photo

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s