XHPy extiende sintaxis de Python para que los fragmentos XML se convierten en expresiones de Python válidos.
Ventajas
& Nbsp; * Simplicidad: escribir la lógica de interfaz de usuario en una sintaxis sencilla, expresiva sin necesidad de plantillas externas o lenguajes de plantillas.
& Nbsp; * Flexibilidad: las expresiones el uso de Python libremente dentro de las etiquetas XHPy, y viceversa.
& Nbsp; * Seguridad: se benefician de escape automático de texto dentro de las etiquetas XHPy.
& Nbsp; * Reutilización: crear componentes reutilizables por subclases: x: elemento.
Un ejemplo
En bar.py:
desde xhpy.init register_xhpy_module importación
register_xhpy_module ('foo')
foo importación
En foo.py:
desde xhpy.pylib import *
clase: ui: foo (: x: Elemento):
& Nbsp; lista de la barra de atributos
& Nbsp; categoría flujo%
& Nbsp; def render (self):
& Nbsp; a =
& Nbsp; por b en self.getAttribute ('bar'):
& Nbsp; a.appendChild (
& Nbsp; devolver un
Ahora podemos ejecutar bar.py como un script normal de Python:
$ Python bar.py
- 0
- 1
- 2
Te Felicito! Usted acaba de escribir su primer fragmento de XHPy.
Sintaxis
XHPy añade alguna nueva sintaxis para Python. Línea por línea de tiempo de reproducción!
desde xhpy.init register_xhpy_module importación
Esto inicializa XHPy y le permite registrar los módulos que deben ser interpretadas como XHPy.
register_xhpy_module ('foo')
Ahora el módulo foo en foo.py será interpretado como XHPy cuando se importan. Si foo fuera un paquete, todos sus submódulos también sería registrada; esto es útil para el registro de las bibliotecas de interfaz de usuario.
foo importación
Para utilizar realmente XHPy, sin embargo, es probable que desee la biblioteca central:
desde xhpy.pylib import *
Ahora usted tiene acceso a todos los elementos estándar HTML 4.0, la: x: clase base elemento (esto es lo que usted construye componentes personalizados en la parte superior de!), Y algunas utilidades.
clase: ui: foo (: x: Elemento):
Hacer nuevos componentes es fácil: basta subclase: x: elemento. Para su clase de componente que desea registrar, se debe comenzar con: - esto distingue claramente los componentes de las clases de Python ordinarios.
atribuir lista de la barra
Esta es una declaración de atributos, lo que significa que: ui: foo permite bar atributos de
más adelante - como XHP, XHPy utiliza sintaxis de atributo XML.
categoría flujo%
Esta es una declaración categoría -: ui: foo es parte de la categoría de flujo%. Las categorías son útiles principalmente como una forma de identificar los elementos que son similares sin necesidad de utilizar la herencia; por ejemplo, el en pylib.html tiene
niños (pcdata |% flujo) *
lo que indica que sus hijos deben o bien contienen texto o ser de la categoría de flujo%. (Así que podemos poner
def render (self):
Al imprimir una: x: elemento (o llama str en él), el render () se invoca el método; aquí es donde usted pone su lógica de interfaz de usuario.
a =
por b en self.getAttribute ('bar'):
& Nbsp; a.appendChild (
devolver una
Aquí,
- que le permite construir una lista desordenada de una lista de Python. Elementos HTML estándar, como
- se procesan automáticamente - salvo que, en XHPy, puede utilizar expresiones Python dentro de las etiquetas, de modo que
{B}
se sustituye por el valor de b. Observe el uso de getAttribute () y appendChild ():
self.getAttribute ('bar')
recoge el valor de la barra de atributo (en este caso, de alcance (3)), mientras
a.appendChild ( - {b} )
- {b} como hijo de a =
- y
añade
XHPy se basa en gran medida fuera XHP; para más detalles sobre este último, ver el `XHP wiki
& Nbsp; * nombres de clase XHPy pueden utilizarse las clases de Python en cualquier lugar ordinarios puede;
& Nbsp; * etiquetas XHPy ignoran los espacios en blanco interno, pero deben obedecer externamente reglas de sangría y de continuación de línea.
Más sobre el último punto:
foo def (href):
& Nbsp; de retorno
bar def (href):
& Nbsp; volver
& Nbsp;
son válidos, mientras que
foo def (href):
& Nbsp; volver
& Nbsp;
& Nbsp;
no lo es, ya que introduce un dedent extra después de
¿Cómo funciona?
Cuando te
xhpy.init importación
XHPy instala un gancho de importación. Este gancho trampas declaraciones de importación posteriores, corriendo a través de un preprocesador que analiza un superconjunto de Python. Este preprocesador traduce etiquetas XHPy y nombres de clase a Python válida, entonces ejecuta el código traducido en su alcance módulo.
Esto es similar a cómo funciona XHP, excepto:
& Nbsp; * con, por ejemplo, pythonenv, siempre puedes utilizar XHPy incluso sin acceso a los directorios de instalación de paquetes de Python en todo el sistema;
. & Nbsp; * por defecto, Python compila código de bytes .pyc archivos de sus módulos, por lo que el procesamiento previo sólo hay que hacer una vez que la primera vez que se importa un módulo
Requisitos :
- Python
Comentarios que no se encuentran