Python-versierde sjablonen

Python-sjablonen-strategie met decorateurs en inline uitdrukkingen
Download nu

Python-versierde sjablonen Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • MIT/X Consortium Lic...
  • Prijs:
  • FREE
  • Naam uitgever:
  • Caleb P. Burns
  • Uitgever website:
  • https://github.com/cpburnz/

Python-versierde sjablonen Tags


Python-versierde sjablonen Beschrijving

Waarom werkend met ingesloten sjablonen in Python wanneer Python al een volledig functionele en uitbreidbare scripttaal is die perfect is voor het sjablonen? Python-versierde-sjablonen is een Python-module die een rechte forword-sjablonerende strategie voor Python biedt. Alles wat is geïmplementeerd, is het versieren van uw sjabloonfuncties, en alle uitdrukkingen in hen zullen worden aangeconcerenteerd en geretourneerd op functie voltooiing. Templatenhere is een voorbeeld met een eenvoudige sjabloon :: import PTD @ PDT.Template Def SPAM (eieren, ham = geen): '' 'Dit zou normaal gesproken de DOC-string zijn, maar dit wordt uitgevoerd als een uitdrukking. '' 'eieren # output wat eieren sum (Xrange (10)) # Output 45 "Hier is een andere snaarexpressie." Print "Dit zijn nog steeds regelmatige afdrukverklaringen die" afdrukken "zijn afgedrukt naar stDout." Als niet ham: # Alle uitdrukkingen tot op dit punt worden teruggestuurd met de # lege retourverklaring. terugkeer "hebben wat% s ham." % ham # output the ham # Alle uitdrukkingen uitgevoerd zullen terugkeren aan het einde van een #-template.Here hoe de sjabloon eruit zal zien na opnieuw gecompileerd :: import PDT DEF SPAM (eieren, ham = geen) _buffer = PDT.listio ( ) _buffer.write ('' 'Dit zou normaal gesproken de DOC-string zijn, maar dit wordt uitgevoerd als een uitdrukking.' '') _buffer.write (eieren) # uitgang enkele eieren. _buffer.write (SUM (XRANGE (10)) # OUTPUT 45 _BUFFER.WRITE ("Hier is een andere snaarexpressie.") Afdrukken "Dit zijn nog regelmatige afdrukverklaringen die" afdrukken "zijn afgedrukt naar stDout." Als niet ham: # Alle uitdrukkingen tot op dit punt worden teruggestuurd met de # lege retourverklaring. Retourneer _buffer.getValue () _buffer.write ("hebben wat% s ham."% ham) # output de ham # alle uitdrukkingen uitgevoerd worden teruggestuurd aan het einde van een #-sjabloon. RETURN _Buffer.getValue () Sjabloon IO Buffertemplates Gebruik een interne buffer om expressieresultaten op te slaan die aan het einde van de functie terugkeren. Een aangepaste bufferfabriek Functionand-argumenten kunnen worden gespecificeerd met :: Import PDT @ PDT.Template (io_factory = myfactory, io_args = myargs, io_kw = mykeywords) Def spam (...): * io_factory * (** callable **) Creëert `` Bestand`-achtige gevallen implementeren * Schrijf () * en * getwaarue () * wanneer het wordt gebeld. Meestal wordt dit een klassenobject. Standaard is dit `` Listio``. * IO_ARGS * (`` tuple```) specificeert eventueel eventuele positionele argumenten die zijn doorgegeven aan * io_factory * wanneer het wordt genoemd. Default is een leeg `` tuple``. * IO_KW * (`` DICT```) specificeert optioneel trefwoordargumenten die zijn doorgegeven aan * io_factory * wanneer het wordt genoemd. Standaard is een lege `` dict`.Here's een vereenvoudigde versie van de `` listio`` class: class sivelelistio (object): def __init __ (zelf): self.buff = [] Def write (zelf, gegevens): als Gegevens zijn niet: Self.buff.appdry (Str (gegevens)) Def GetValue (Self): Return "" .join (self.buff) Import PDT @ PDT.Template (IO_FACTORY = SIMELISTIO) DEF SPAM (...) : ... Hier is een voorbeeld IO-buffer die codeert voor de resultaten en ze ze opslaat met `` CSTRINGIO`` :: Import CSSTRINGIO-klasse Customio (Object): Def __init __ (Zelf, Codering = 'UTF8'): Self.buff = CSTRINGIO. Stringio () Self.c = Codering Def Write (Self, Data): Als gegevens niet zijn: self.buff.write (Unicode (gegevens) .code (self.c)) Def GetValue (Self): Retour . GetValue () importeren PDT @ PDT.template (io_factory = customio, io_kw = {'-codering': 'Latin1'}) Def spam (...): de * io_args * en * io_kw * worden doorgegeven als positional en trefwoord argumentsto * io_factory * die de klasseconstructeur is. De * -toestellen () * -functie ontvangt het resultaat van elke uitdrukking in het eerste (* gegevens *) argument. * Gegevens * zullen worden omgezet in een `` str'` of `` Unicode`` handmatig. Als * gegevens * is `` none'``, moet het worden genegeerd, dus functies die geen waarde retourneren (dwz `none'``) niet" geen "voor elke oproep uitvoeren. De * GetValue () * functie retourneert De samenvoegde `` Str` of `` Unicode`` resultaat van elke uitdrukking die is verzonden naar * Write () *. ImplementatiePDT is geïnspireerd op de PTL_ (Python Template-taal), maar zonder de behoefte aan speciale bestandssyntaxis, extensies en importhaken. De PDT-sjabloon-decorator wijzigt de bron van gewikkelde functies en keuzemen ze om de expressie-uitgang toe te staan ... _PTL: http://quixote.ca/only in de bron `` Def` U'de functies worden ondersteund. Functies waarvoor hun tekstbron (niet bytecode) niet beschikbaar is, worden niet ondersteund. Evenmin zijn sluitingen, generatoren, noch zijn `` Lambda`s ondersteund. Functies kunnen alleen worden ingericht boven / na (niet onder / vóór) worden ingericht als een sjabloon ... OPMERKING: Generatorfuncties kunnen worden ondersteund in de toekomst van PRODUCTION .PRODUCT


Python-versierde sjablonen Gerelateerde software