contrachapado es una gramática del lenguaje de plantilla que se ve, se siente y funciona como Python
carga ('url')
carga ('compresa')
tipo de documento ('html')
html:
& Nbsp; la cabeza:
& Nbsp; meta (charset = "utf-8")
& Nbsp; meta (name = "viewport", content = "width = dispositivo de ancho; escala inicial = 1,0")
& Nbsp; título:
& Nbsp; si el título:
& Nbsp; # docstrings * se * despojado de precedente espacios en blanco (deben ser
& Nbsp; se retira # sangría), y el primer y último salto de línea.
& Nbsp; "" "
& Nbsp; {title} |
& Nbsp; "" "intepolation # cadena es un poco de trabajo pesado más que` .formato () `, pero más similares que diferentes.
& Nbsp; "bienvenido" literales de cadena # requiere comillas: - / I * puede * añadir otra forma de hacerlo ...
& Nbsp; comprimir ('css'):
& Nbsp; enlace (rel = 'estilo', type = "text / css", href = static ('css / reset.css'))
& Nbsp; enlace (rel = 'estilo', type = "text / css", href = static ('css / welcome.css'))
& Nbsp; guión (src = "// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", type = "text / javascript")
& Nbsp; comprimir ('js'):
& Nbsp; guión (src = static ("js / underscore.js"), type = "text / javascript")
& Nbsp; guión (src = static ("js / Backbone.js"), type = "text / javascript")
& Nbsp; ieif «LT IE 9 ':
& Nbsp; guión (src = "// html5shiv.googlecode.com/svn/trunk/html5.js", type = "text / javascript")
& Nbsp; enlace (rel = 'estilo', type = "text / css", href = static ('css / ie.css'))
& Nbsp; bloque ('extra_head') # bloques, y la herencia bloque? por supuesto!
& Nbsp; cuerpo:
& Nbsp; div (class = "contenedor", id = "contenedor") # hay un atajo para la clase y el ello (aún)
& Nbsp; de cabecera:
& Nbsp; bloque ('cabecera'):
& Nbsp; p (class = "logo"):
& Nbsp; bloque ('header_title'):
& Nbsp; si el usuario:
& Nbsp; "Bienvenido, '{user.name}'
& Nbsp; otra cosa:
& Nbsp; "Bienvenido"
& Nbsp; si current_member:
(Class = "login") p; & nbsp:
& Nbsp; "Bienvenido, {} current_member.preferred_name"
& Nbsp; un (href = url ("cerrar sesión")): 'Salir'
& Nbsp; de navegación:
& Nbsp; ul:
& Nbsp; bloque ('nav'):
& Nbsp; li: un (href = url ("login")): 'Login'
& Nbsp; clase section = "miga de pan":
& Nbsp; bloque ('breadcrumb')
& Nbsp; la sección (class = "principal"):
& Nbsp; bloque ("mensajes"):
& Nbsp; si los mensajes:
& Nbsp; ul (class = "mensajes"):
& Nbsp; para el mensaje en los mensajes:
& Nbsp; li (class = message.tags): '{mensaje}'
& Nbsp; script:
& Nbsp; literales # código, por lo que los editores inteligentes pueden colorear el código fuente
& Nbsp; `` `javascript
& Nbsp; $ (document) .ready (function () {
& Nbsp; $ ("ul.messages") addClass ("Animate.");
& Nbsp; var fade_out = _ (function () {
& Nbsp; this.addClass ("fade-out")
& Nbsp;.}) Se unen ($ ("ul.messages"))
& Nbsp; setTimeout (fade_out, 5000);
& Nbsp;. $ ("Ul.messages") se unen ("clic", fade_out);
& Nbsp;});
& Nbsp; `` `
& Nbsp; bloque ("contenido")
& Nbsp; de pie de página:
& Nbsp; # p:
& Nbsp; # 'Estos son los comentarios.
& Nbsp; # palmo: '|'
& Nbsp; # '& copy; 2012 CrossFit'
INSTALACION
& Nbsp; pip install contrachapado
& Nbsp; capas
La sintaxis de
Cada línea comienza con una declaración, que puede ser una función (div, bloque) un literal ('' ''), o una sentencia de control (if, else, para).
Funciones consiguen llamados con los argumentos y un "bloque":
# argumentos son ((), {}), bloque es Block ()
p
# argumentos son ((), {'clase': 'divvy'}), bloque es Block ()
div (class = "repartir")
# argumentos son (('enfoque automático'), {'id': 'bio'}), bloque es Block (Literal ('Este es mi bio'),)
textarea (autofocus, id = "bio"): 'Este es mi bio »
Incluso si no hay un "bloque", que lo recibirán en lo más mínimo en vacío objeto de bloque que puede llamar en block.render. Será "Falsey", aunque, por lo que se puede comprobar la existencia de un bloque. El bloque mínimo "Truthy" es una cadena vacía. Eso significa div '' le dará un bloque "Truthy", pero div habrá un bloque "Falsey".
Puede ampliar la mierda de madera contrachapada, porque div, si, bloque, todo el lote, se escriben todas como extensiones de madera contrachapada. Sin las extensiones orden interna, el idioma no podría realmente hacer nada, ya que es en su núcleo sólo una gramática del lenguaje.
¿POR QUÉ!?!?
Creo que hay espacio para otro lenguaje de plantillas.
Haml? Coffekup? Jade? No parecen pythonic para mí.
Plain-Jane HTML? Claro, si lo desea. Esto es, creo, la mejor alternativa a la madera contrachapada.
Incluso el gran lenguaje de plantillas de Django es HTML hizo más desagradable insertando marcas adicionales. Miré a Jade y Haml como "sí, usted está recibiendo allí", pero ellos no lo clava.
Estoy unapologettically un DIY-er. Creo que a veces las ruedas sólo necesitan re-inventar! Además, esto me dio la oportunidad de jugar con gramáticas de las lenguas, que creo que son divertidos. Estoy usando Modgrammar
Requisitos :
- Python
Comentarios que no se encuentran