Python-dekorierte Vorlagen

Python Templating-Strategie mit Dekoratoren und Inline-Ausdrücke
Jetzt downloaden

Python-dekorierte Vorlagen Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • MIT/X Consortium Lic...
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Caleb P. Burns
  • Website des Verlags:
  • https://github.com/cpburnz/

Python-dekorierte Vorlagen Stichworte


Python-dekorierte Vorlagen Beschreibung

Warum die Mühe mit eingebetteter Templating Sprachen in Python zu arbeiten, wenn Python ist bereits eine voll funktionsfähige und erweiterbare Skriptsprache perfekt für Templating? python-verziert-Vorlagen sind ein Python-Modul, das eine gerade forword Templating Strategie für Python zur Verfügung stellt. Alles, was Ihre Template-Funktionen involed ist verziert, und alle Ausdrücke in ihnen verkettet und Funktion completion.TemplatesHere ist ein Beispiel unter Verwendung einer einfachen Vorlage :: import ptd @ pdt.template def Spam (Eier, Schinken = None) zurückgegeben wird: "Dies würde normalerweise der doc-String sein, aber das wird wie ein Ausdruck ausgegeben werden. ''Eier # Output einige Eier Summe (xrange (10)) # Ausgabe 45 "Hier ist ein weiterer String-Ausdruck." drucken Diese noch regelmäßige Druck Aussagen, die werden drucken gedruckt auf stdout. wenn nicht ham: # Alle Ausdrücke bis zu diesem Punkt werden mit der # leer return-Anweisung zurückgegeben werden. Rückkehr "some% s Schinken haben." # Ausgang% Schinken der Schinken # Alle Ausdrücke ausgegeben wird Rückkehr am Ende eines sein # template.Here ist, was die Vorlage aussehen wird, nachdem es neu kompiliert :: import pdt def Spam (Eier, Schinken = None) _buffer = pdt.ListIO ( Dies würde normalerweise die doc-String sein, aber dies ist wie ein Ausdruck ausgegeben gehen werden.) _buffer.write ( ) _buffer.write (Eier) # Ausgabe einige Eier. _buffer.write (sum (xrange (10))) # Ausgabe 45 _buffer.write ( "Hier ist ein weiterer String-Ausdruck.") print "Diese sind immer noch regelmäßig print-Anweisungen, die werden" drucken "auf der Standardausgabe gedruckt." wenn nicht ham: # Alle Ausdrücke bis zu diesem Punkt werden mit der # leer return-Anweisung zurückgegeben werden. Rückkehr _buffer.getvalue () _buffer.write ( some Schinken s% hat.% Schinken) # Ausgabe der Schinken # Alle Ausdrücke am Ende einer # Vorlage zurückgegeben werden ausgegeben. Rück _buffer.getvalue () Vorlagen IO BufferTemplates verwendet einen internen Puffer zum Speichern von Expressionsergebnissen, die am Ende der Funktion zurück Willbe. Eine benutzerdefinierte Puffer Fabrik functionand Argumente können mit :: import angegeben werden pdt @ pdt.template (io_factory = myfactory, io_args = myargs, io_kw = MyKeywords) def Spam (...): * io_factory * (** aufrufbar **) erzeugt `` file`` artige Instanzen Implementierung * write () * und * getvalue () *, wenn sie aufgerufen. Typischerweise wird dies ein Klassenobjekt sein. Standardmäßig ist das `` ListIO``. * Io_args * ( `` tuple``) gibt optional irgendwelche Positionsargumente an * io_factory * übergeben, wenn sie aufgerufen wird. Der Standardwert ist eine leere `` tuple``. * Io_kw * ( `` dict``) optional gibt Schlüsselwort Argumente * io_factory * übergeben, wenn sie aufgerufen wird. Der Standardwert ist eine leere `` dict``.Here ist eine vereinfachte Version des `` ListIO`` Klasse: Klasse SimpleListIO (Objekt): def __init __ (self): self.buff = [] def write (Selbst, Daten): if Daten nicht None: self.buff.append (str (Daten)) def getvalue (self): return "" .join (self.buff) Import pdt @ pdt.template (io_factory = SimpleListIO) def Spam (...) : ... Hier ist ein Beispiel IO-Puffer, der die Ergebnisse und speichert kodiert sie mit `` cStringIO`` :: import cStringIO Klasse CustomIO (Objekt): def __init __ (self, = 'utf8' kodiert): self.buff = cStringIO. StringIO () = self.enc Codierungs def write (self, Daten): wenn die Daten nicht None ist: self.buff.write (Unicode (data) .encode (self.enc)) def GetValue (self): return self.buff .getvalue () Import pdt @ pdt.template (io_factory = CustomIO, io_kw = { 'encoding': 'latin1'}) def Spam (...): Die * io_args * und * io_kw * wie Lage- und Stichwort argumentsto geben * * io_factory die die Klasse constructor.The ist * write () * -Funktion wird das Ergebnis jedes Ausdrucks in der ersten (* data *) Argument empfangen. * Daten * müssen entweder eine `` str`` oder `` unicode`` manuell konvertiert werden. Wenn * Daten * ist `` None``, sollte es so Funktionen werden ignoriert, die keinen Wert zurückgibt (dh `` None``) nicht ausgeben None für jeden Anrufs.Verfahren * getvalue () * Funktion zurückgibt die verkettete `` str`` oder `` unicode`` Ergebnis jedes Ausdrucks * Schreib gesendet () *. ImplementationPDT von Quijotes PTL_ (Python Template Language), jedoch ohne die Notwendigkeit einer speziellen Datei Syntax, Erweiterungen und Importhaken inspiriert ist. http://quixote.ca/Only in Quelle `` def``ed Funktionen werden unterstützt: Die PDT-Vorlage Dekorateur ändert die Quelle gewickelter Funktionen und Neukompilierungen sie für den Ausdruck Ausgang ... _PTL zu ermöglichen. Funktionen, für die ihre Textquelle (nicht-Byte-Code) nicht verfügbar ist, werden nicht unterstützt. Weder sind Verschlüsse, Generatoren, noch sind `` lambda``s unterstützt. Funktionen können nur über / dekoriert werden nach (nicht unter / vor), die als Vorlage eingerichtet ... HINWEIS: Generator Funktionen können in der future.Product der Homepage unterstützt werden


Python-dekorierte Vorlagen Zugehörige Software