contraplacado é uma gramática da linguagem modelo que olha, sente, e funciona como Python
load ('url')
load ('compressa')
doctype ('html')
html:
& Nbsp; cabeça:
& Nbsp; meta (charset = "utf-8")
& Nbsp; meta (name = "viewport", content = "width = device-width; escala inicial = 1.0")
& Nbsp; title:
& Nbsp; se o título:
& Nbsp; # docstrings * * são despojados de precedente em branco (eles devem ser
& Nbsp; # ondulado), e a primeira e última linha nova é removido.
& Nbsp; "" "
& Nbsp; {title} |
& Nbsp; "" "# string intepolation é um pouco mais pesados do que o` .format () `, mas mais semelhantes do que diferentes.
& Nbsp; "bem vindo" # string literais requerem aspas: - / I * * poderia adicionar outra maneira de fazer isso ...
& Nbsp; comprimir ("css"):
& Nbsp; link (rel = "stylesheet", type = "text / css", href = estática ("css / reset.css '))
& Nbsp; link (rel = "stylesheet", type = "text / css", href = estática ("css / welcome.css '))
& Nbsp; do roteiro (src = "// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", type = "text / javascript")
& Nbsp; comprimir ('js'):
& Nbsp; do roteiro (src = estática ("js / underscore.js"), type = "text / javascript")
& Nbsp; do roteiro (src = estática ("js / Backbone.js"), type = "text / javascript")
& Nbsp; ieif «LT IE 9 ':
& Nbsp; do roteiro (src = "// html5shiv.googlecode.com/svn/trunk/html5.js", type = "text / javascript")
& Nbsp; link (rel = "stylesheet", type = "text / css", href = estática ("css / ie.css '))
& Nbsp; block ('extra_head') # blocos, e herança bloco? claro!
& Nbsp; do corpo:
& Nbsp; div (class = "wrapper", id = "wrapper") # nenhum atalho para classe e id (até o momento)
& Nbsp; cabeçalho:
& Nbsp; block ('header'):
& Nbsp; p (class = "logo"):
& Nbsp; block ('header_title'):
& Nbsp; se o usuário:
& Nbsp; "Bem-vindo, '{user.name}'
& Nbsp; mais:
& Nbsp; 'Bem-vindo'
& Nbsp; se current_member:
& Nbsp; p (class = "login"):
& Nbsp; "Bem-vindo, {} current_member.preferred_name"
& Nbsp; a (href = url ("logout")): 'Sair'
& Nbsp; nav:
& Nbsp; ul:
& Nbsp; block ('nav'):
& Nbsp; li: a (href = url ("login")): 'Login'
& Nbsp; classe section = "breadcrumb":
& Nbsp; block ('migalhas')
& Nbsp; seção (class = "main"):
& Nbsp; block ('mensagens'):
& Nbsp; se as mensagens:
& Nbsp; ul (class = "mensagens"):
& Nbsp; para a mensagem em mensagens:
& Nbsp; li (class = message.tags): '{mensagem}'
& Nbsp; script:
& Nbsp; literais # código, de modo que os editores mais experientes podem colorir o código-fonte
& Nbsp; `` `javascript
& Nbsp; $ (document) .ready (function () {
& Nbsp; $ ("ul.messages") addClass ("animam.");
& Nbsp; var fade_out = _ (function () {
& Nbsp; this.addClass ("fade-out")
& Nbsp;.}) Ligar ($ ("ul.messages"))
& Nbsp; setTimeout (fade_out, 5000);
& Nbsp;. $ ("Ul.messages") bind ("clique", fade_out);
& Nbsp;});
& Nbsp; `` `
& Nbsp; bloco ("conteúdo")
& Nbsp; rodapé:
& Nbsp; # p:
& Nbsp; # 'Estes são os comentários. "
& Nbsp; # útil: '|'
& Nbsp; # '& copy; 2012 CrossFit'
Instalação
& Nbsp; pip instalar plywood
& Nbsp; ply
Sintaxe
Cada linha começa com uma declaração, que pode ser uma função (div, bloco) um literal (',' ''), ou uma declaração de controle (if, else, para).
Funções obter chamado com os argumentos e um "bloco":
# argumentos são ((), {}), o bloco é Block ()
p
# argumentos são ((), {'classe': 'Divvy'}), o bloco é Block ()
div (class = "dividir")
# argumentos são (('autofocus'), {'id': 'bio'}), o bloco é Block (Literal ('Esta é a minha bio'),)
textarea (autofocus, id = "bio"): "Esta é a minha bio '
Mesmo se não houver "block", você vai ter, no mínimo, no vazio bloco objeto que você pode chamar block.render diante. Será "Falsey", no entanto, para que você possa verificar a existência de um bloco. O bloco mínimo "Truthy" é uma cadeia vazia. Isso significa div '' vai lhe dar um block "Truthy", mas div será um bloco "Falsey".
Você pode estender o crap fora de madeira compensada, porque div, se, bloco, todo o lote, são todos escritos como extensões de madeira compensada. Sem as extensões embutidas, a linguagem não poderia realmente fazer alguma coisa, porque é em seu núcleo apenas uma gramática da linguagem.
POR QUE!?!?
Eu acho que há espaço para uma outra linguagem de templates.
Haml? Coffekup? Jade? Eles não parecem pythônico para mim.
Plain-Jane HTML? Claro, se você quiser. Isto é, penso eu, a melhor alternativa para a madeira compensada.
Até mesmo o grande modelo de linguagem HTML Django é feita através da inserção de nastier marcação adicional. Olhei para Jade e Haml como "sim, você está chegando lá", mas eles não pregá-lo.
Estou unapologettically um DIY-er. Eu acho que às vezes as rodas só preciso re-inventar! Além disso, isso me deu a chance de jogar com gramáticas de língua, que eu acho que são divertidos. Estou usando Modgrammar
Requisitos :
- Python
Comentários não encontrado