Seite 1 von 1

Jinja2 Projekt - "PyBlogger"

Verfasst: Mittwoch 3. Dezember 2008, 18:16
von Crazed
Hallo,

Ich programmiere momentan an einem Script rum das statische Blogs (HTML) erstellen soll. Dazu möchte ich Jinja2 benutzen weil es mir von einigen Usern in diesem Forum empfohlen worden ist.

Ich habe jetzt schon viele verschiedene Ansätze für "PyBlogger" (So heißt das Projekt) programmiert aber keiner dieser Ansätze gefällt mir. Es ist mir entweder zu "dumm", zu unflexibel oder einfach nur zu hässlich, Ich weiß nicht wie ich es besser ausdrücken soll.

Momentan sieht es so aus:
http://paste.pocoo.org/show/08arvHFN2K0vjxONQ9wi/

Das was hier jetzt z.b hässlich ist, ist die eigentlich völlig sinnlose OOP und das es einfach eine riesige render Methode gibt in der alles, wie ich finde, sehr umständlich gemacht wird. Mir fällt aber leider nichts intelligenteres ein.

Ihr solltet aber wissen das ich momentan die "Posts" tatsächlich in Python Dateien schreibe weil es dadurch einfach viel einfacher ist die relevanten Daten aus den Dateien zu filtern.

Ich habe allerdings vor auf eine MarkUp Engine wie reST umzusteigen und die Posts für den Blog dann mit Hilfe von Jinja2 zu erstellen.

Eventuell nutze ich Jinja auch einfach viel zu wenig aus.
Könnt ihr mir vielleicht ein paar Anregungen und Tipps dazu geben? Wie würdet ihr es intelligent und strukturiert Aufbauen?

MfG,
CracKPod

Re: Jinja2 Projekt - "PyBlogger"

Verfasst: Mittwoch 3. Dezember 2008, 20:44
von sma
Crazed hat geschrieben: Ihr solltet aber wissen das ich momentan die "Posts" tatsächlich in Python Dateien schreibe weil es dadurch einfach viel einfacher ist die relevanten Daten aus den Dateien zu filtern.
Eine Funktion, Konfigurationen im eigenen Format in dicts umzuwandeln in 18 Zeilen Python. Dann brauchst du auch keine Python-Dateien mehr.

Code: Alles auswählen

# encoding: utf-8
s = u"""
 title: An example
author: Stefan
  date: 2008-12-02 12:03:00
  text:
This is the blog entry and
a longer text which can have
paragraphs.

This text goes up to but not
including a "•" in a single
line.
•
keywords: foo, bar, baz
"""

import re

RE = re.compile(r"\s*(\w+):(?:\s+(.*)\s*)?$", re.U)

def parse(s):
    attrs = {}
    lines = iter(s.splitlines())
    for line in lines:
        m = RE.match(line)
        if m:
            if m.group(2) is None:
                value = []
                for line in lines:
                    if line == u"•":
                        break
                    value.append(line)
                attrs[m.group(1)] = "\n".join(value)
            else:
                attrs[m.group(1)] = m.group(2)
    return attrs

print parse(s)
Stefan

Verfasst: Mittwoch 3. Dezember 2008, 20:51
von tiax
Hi,

recht "einfach" ist es auch, diese Dinge einfach oben an den Anfang der Datei zu schreiben:

Code: Alles auswählen

title: blablabla
tags: a,b,c
und dann das email modul zu verwenden, um es wie eine nach rfc2822 formatierte mail zu behandeln

Verfasst: Mittwoch 3. Dezember 2008, 21:08
von Crazed
Vielen Dank für die beiden Vorschläge!

Aber sma, wir wollen doch nachher reST parsen, wir werden warhscheinlich so nicht an die Daten bei einer reST Formatierung des Postes kommen, aber wenn es geht wollen wir auch verschiedene MarkUp engines unterstützen, danke für die Idee!

Verfasst: Donnerstag 4. Dezember 2008, 14:52
von Y0Gi
.oO(Anderen Projektnamen! Anderen Projektnamen!)

Verfasst: Samstag 6. Dezember 2008, 12:13
von sma
Crazed hat geschrieben:Aber sma, wir wollen doch nachher reST parsen
Wollen wir das? Wusste ich gar nicht ;)
Crazed hat geschrieben: wir werden warhscheinlich so nicht an die Daten bei einer reST Formatierung des Postes kommen
Doch wenn ihr es einfach nur wollt (und nicht ich), das Eingabeformat, was ich vorstellte, hat mit reST oder einem anderen Textformat keine Probleme, da ich ja ein eher ungewöhnliches Unicode-Zeichen (das aber auf dem Mac sehr schon griffig auf Alt+Ü liegt) benutze. Einzig wichtig ist, dass diese Endmarkierung - wie sie auch immer aussieht - nicht Teil des restlichen Dokuments ist.

Oder meintest du, dass du nachher nur ein reST-Dokument haben willst und aus diesem dann die Metadaten ziehen willst? Das wäre natürlich dann ein anderer Ansatz, der auch ginge.

Stefan

Verfasst: Samstag 6. Dezember 2008, 12:28
von BlackJack
So ungewöhnlich ist das Zeichen nicht, das aktuelle `docutils` erkennt das als Bulletzeichen für Listen an.