Plantillas decoradas por Python

Estrategia de plantación de Python que involucra decoradores y expresiones en línea
Descargar ahora

Plantillas decoradas por Python Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • MIT/X Consortium Lic...
  • Precio:
  • FREE
  • Nombre del editor:
  • Caleb P. Burns
  • Sitio web del editor:
  • https://github.com/cpburnz/

Plantillas decoradas por Python Etiquetas


Plantillas decoradas por Python Descripción

¿Por qué molestarse en trabajar con lenguajes de plantillas incrustadas dentro de Python cuando Python ya es un lenguaje de scripting completamente funcional y extensible perfecto para la plantilla? Las plantillas de Python-Decorated son un módulo de Python que proporciona una estrategia de plantación recta para Python. Todo lo que involucra está decorando sus funciones de plantilla, y todas las expresiones dentro de ellas se concatenarán y se devolverán en la función Finalización. TemplateShere es un ejemplo utilizando una plantilla simple :: Importar PTD @ PDT.TEMPLATE DEF SPAM (huevos, jamón = ninguno): '' "Esto normalmente sería la cadena DOC, pero esto se va a emitir como una expresión. '' 'Huevos # Salimos algunas sumas de huevos (Xrange (10)) # Salida 45 "Aquí hay otra expresión de cadena". Imprimir "Estas son declaraciones de impresión regulares que se" imprimirán "impresas en STDOUT". Si no, HAM: # Todas las expresiones hasta este punto se devolverán con el Declaración de devolución # vacío. volver "tener un poco de jamón de% s". % Jamón # Salida El jamón # Todas las expresiones salidas se devolverán al final de una plantilla #. Aquí se verá la plantilla después de ser recompilado :: Importar PDT DEF SPAM (huevos, jamón = ninguno) _buffer = pdt.listio ( ) _buffer.write ('' ', esto normalmente sería la cadena Doc, pero esto se va a emitir como una expresión' '') _Buffer.Write (huevos) # Salga de algunos huevos. _Buffer.Write (SUM (Xrange (10))) # Salida 45 _Buffer.Write ("Aquí está otra expresión de cadena".) Imprima "Estos son declaraciones de impresión regulares que se" imprimirán "impresas en Stdout". Si no, HAM: # Todas las expresiones hasta este punto se devolverán con el Declaración de devolución # vacío. Devuelve _Buffer.getValue () _Buffer.Write ("tiene un poco de jamón de% s."% jamón) # Salida del jamón # todas las expresiones emitidas se devolverán al final de una plantilla #. Devolver _Buffer.GetValue () Plantilla IO BufferTemplates Use un búfer interno para almacenar resultados de expresión que se devolverá al final de la función. Una función de fábrica de búfer personalizada y se pueden especificar argumentos con :: Importar PDT @ PDT.template (io_factory = myfactory, io_args = myargs, io_kw = mykeywords) def spam (...): * io_factory * (** Callable **) crea `` FIEL FILE` similar a las instancias de implementación * Escribir () * y * GetValue () * Cuando se llama. Típicamente, este será un objeto de clase. Por defecto, esto es `` LISTIO``. * Io_args * (`` `tuple``) opcionalmente especifica cualquier argumento posicional pasado a * io_factory * cuando se llama. El valor predeterminado es un `` tuple "vacío '. * Io_kw * (` `DICT``) Opcionalmente especifica opcionalmente los argumentos de la palabra Pasados ​​a * io_factory * cuando se llama. El valor predeterminado es un `` DICT``'.here es una versión simplificada de la clase '`listio`` de la clase: clase simplelistio (objeto): definitivamente __init __ (yo): self.buff = [] def escribe (auto, datos): si Los datos no son ninguno: self.buff.append (STR (DATOS)) DEF GetValue (Self): Return "" .join (self.buff) Importar PDT @ PDT.template (IO_FACTORY = SIMPLEELISTIO) DEF SPAM (...) : ... Aquí hay un ejemplo de tampón IO de ejemplo que codifica los resultados y los almacena usando `` Cstringio`` :: Importar Class Classio (Objeto): definit __init __ (yo, codificación = 'utf8'): self.buff = cstringio. Stringio () Self.Enc = Codificación Def Escribir (Self, Datos): Si los datos no son ninguno: self.buff.write (Unicode (Datos) .Enode (self.enc)) DEF GetValue (yo): devolver la Self.Buff .getvalue () Importar PDT @ PDT.template (io_factory = personalio, io_kw = {'codificación': 'latin1'}) Def spam (...): el * io_args * y * io_kw * se pasan como un argumento posicional y de la palabra clave. * io_factory * que es el constructor de clase. La función * Escribir () * recibirá el resultado de cada expresión en el primer argumento (* DATATS *). * Los datos * deberán convertirse en un `` STR``` `Unicode`` 'manualmente. Si * DATA * es `` Ninguno``, se debe ignorar las funciones que no devuelvan un valor (es decir, ', Ninguno``) No emite "Ninguno" para cada llamada. La función * GetValue () * Función devuelve la función El resultado de la concatenada `` STR'`' 'Unicode'`' 'Unicode`' de cada expresión enviada a * Escribir () *. ImplementaciónPDT está inspirada en la PTL_ de Quixote (Idioma de la plantilla de Python), pero sin la necesidad de sintaxis, extensiones y ganchos de importación de archivos especiales. El decorador de plantillas de PDT modifica la fuente de las funciones envueltas y recompélas para permitir la salida de expresión ... _ptl: http://quixote.ca/only en las funciones de Fuente `` Def 'se admiten. Las funciones para las cuales su fuente de texto (no código de byte) no está disponible no son compatibles. Tampoco los cierres, los generadores, ni los '' lambda 'apoyan. Las funciones solo se pueden decorar arriba / después (no por debajo / antes) siendo decorada como plantilla ... Nota: Las funciones del generador pueden ser compatibles en la página principal del producto.


Plantillas decoradas por Python Software relacionado