contreplaqué est une grammaire de la langue de modèle qui ressemble, se sent et fonctionne comme Python
charge ('url')
charge («compresse»)
doctype ('html')
html:
& Nbsp; la tête:
& Nbsp; meta (charset = "utf-8")
& Nbsp; meta (name = "viewport", content = "width = dispositif de largeur; initial échelle = 1.0")
& Nbsp; titre:
& Nbsp; si le titre:
& Nbsp; # docstrings * * sont dépouillés de blancs précédent (ils doivent être
& Nbsp; # retrait), et le premier et le dernier saut de ligne est supprimé.
& Nbsp; "" "
& Nbsp; {title} |
& Nbsp; "" "# intepolation de chaîne est un peu plus lourd que` .format () `, mais plus semblables que différents.
& Nbsp; 'Bienvenue' # littéraux chaîne exige citations: - / I * pourrait * ajouter une autre façon de le faire ...
& Nbsp; compresser ('css'):
& Nbsp; lien (rel = "stylesheet", type = "text / css", href = statique («css / reset.css '))
& Nbsp; lien (rel = "stylesheet", type = "text / css", href = statique («css / welcome.css '))
& Nbsp; de script (src = "//", ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js type = "text / javascript")
& Nbsp; compresser ('js'):
& Nbsp; de script (src = statique ("js / underscore.js»), type = "text / javascript")
& Nbsp; de script (src = statique ("js / Backbone.js»), type = "text / javascript")
& Nbsp; IEIF Lt IE 9 ':
& Nbsp; de script (src = "//", html5shiv.googlecode.com/svn/trunk/html5.js type = "text / javascript")
& Nbsp; lien (rel = "stylesheet", type = "text / css", href = statique («css / ie.css '))
& Nbsp; bloc ('extra_head') # blocs, et le bloc héritage? bien sûr!
& Nbsp; le corps:
& Nbsp; div (class = "wrapper", id = "wrapper") # pas de raccourci pour class et id (encore)
& Nbsp; en-tête:
& Nbsp; bloc («tête»):
& Nbsp; p (class = "logo"):
& Nbsp; bloc ('header_title'):
& Nbsp; si l'utilisateur:
& Nbsp; »Bienvenue, '{} user.name'
& Nbsp; d'autre:
& Nbsp; "Bienvenue"
& Nbsp; si current_member:
& Nbsp; p (class = "login"):
& Nbsp; "Bienvenue, {} current_member.preferred_name"
& Nbsp; un (href = url ("déconnecter")): "Déconnexion"
& Nbsp; nav:
& Nbsp; ul:
& Nbsp; bloc ('nav'):
& Nbsp; li: un (href = url ("login")): «Login»
& Nbsp; section class = "breadcrumb":
& Nbsp; bloc («fil d'Ariane»)
& Nbsp; section (class = "main"):
& Nbsp; bloc («messages»):
& Nbsp; si les messages:
& Nbsp; ul (class = "messages"):
& Nbsp; pour le message dans les messages:
& Nbsp; li (class = message.tags): «{message} '
& Nbsp; de script:
& Nbsp; littéraux # de code, de sorte que les éditeurs avertis peuvent colorer le code source
& Nbsp; `` `javascript
& Nbsp; $ (document) .ready (function () {
& Nbsp; $ ("") ul.messages addClass ("animent.");
& Nbsp; var fade_out = _ (function () {
& Nbsp; this.addClass ("fade-out»)
& Nbsp;.}) Lie ($ ("ul.messages"))
& Nbsp; setTimeout (fade_out, 5000);
& Nbsp; $. ("Ul.messages») bind («clic», fade_out);
& Nbsp;});
& Nbsp; `` `
& Nbsp; bloc («contenu»)
& Nbsp; le pied de page:
& Nbsp; # p:
& Nbsp; # 'Ce sont des commentaires. "
& Nbsp; # durée: '|'
& Nbsp; # '& copy; 2012 CrossFit'
POSE
& Nbsp; pip installer contreplaqué
& Nbsp; nappe
syntaxe
Chaque ligne commence par une déclaration, qui peut être soit une fonction (div, bloc) un littéral (',' ''), ou une instruction de contrôle (if, else, for).
Fonctions être appelée avec les arguments et un «bloc»:
# arguments sont ((), {}), le bloc est Block ()
p
# arguments sont ((), {«classe»: «Divvy '}), le bloc est Block ()
div (class = "divvy")
# arguments sont (('autofocus'), {'id': 'bio'}), le bloc est Block (littérale («Ce est ma bio»),)
textarea (autofocus, id = "bio"): "Ce est ma bio»
Même se il n'y a pas de "bloc", vous aurez au moins au objet bloc vide que vous pouvez appeler sur block.render. Il sera "Falsey", mais, si vous pouvez vérifier l'existence d'un bloc. Le bloc minimum »truthy" est une chaîne vide. Cela signifie div '' vous donnera un bloc "truthy», mais div aura un bloc "Falsey".
Vous pouvez étendre la merde hors de contreplaqué, parce div, si, bloc, l'ensemble du lot, sont toutes écrites comme des extensions de contreplaqué. Sans les extensions builtin, la langue ne pouvait pas faire grand chose, parce que ce est à sa base juste une grammaire de la langue.
POURQUOI!?!?
Je pense qu'il ya place pour un autre langage de templates.
Haml? Coffekup? Jade? Ils ne semblent pas pythonique pour moi.
Plaine-Jane HTML? Bien sûr, si vous voulez. Ce est, je pense, la meilleure alternative au contreplaqué.
Même le grand langage de template de Django est HTML fait plus méchant en insérant balisage supplémentaire. Je ai regardé Jade et Haml que "oui, vous y arriver", mais ils ne ont pas le clouer.
Je suis un unapologettically DIY-er. Je pense que parfois roues juste besoin de réinventer! De plus, cela m'a donné une chance de jouer avec les grammaires de langue, ce qui je pense sont amusants. Je utilise Modgrammar
Exigences :
- Python
Commentaires non trouvées