plywood är en mall språk grammatik som ser ut, känns och fungerar som Python
last ("webbadress")
last ("compress ')
doctype ('html')
html:
& Nbsp; head:
& Nbsp; meta (charset = "UTF-8")
& Nbsp; meta (name = "View", content = "width = device-bredd, inledande skala = 1,0")
& Nbsp; titel:
& Nbsp; om titeln:
& Nbsp; # docstrings * är * tagen föregående blank (de måste vara
& Nbsp; # indragen), och den första och sista nyradstecken avlägsnas.
& Nbsp; "" "
& Nbsp; {title} |
& Nbsp; "" "# string intepolation är lite mer tunga än` .format () `, men mer lika än olika.
& Nbsp; "Welcome" # stränglitteraler kräver citat: - / Jag * kanske * lägga ett annat sätt att göra detta ...
& Nbsp; komprimera ("css"):
& Nbsp; link (rel = 'stylesheet "type =" text / css ", href = statiskt (' css / reset.css '))
& Nbsp; link (rel = 'stylesheet "type =" text / css ", href = statiskt (' css / welcome.css '))
& Nbsp; script (src = "// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", type = "text / javascript")
& Nbsp; komprimera ("js"):
& Nbsp; script (src = statiskt ("js / underscore.js"), type = "text / javascript")
& Nbsp; script (src = statiskt ("js / Backbone.js"), type = "text / javascript")
& Nbsp; ieif 'lt IE 9':
& Nbsp; script (src = "// html5shiv.googlecode.com/svn/trunk/html5.js", type = "text / javascript")
& Nbsp; link (rel = 'stylesheet "type =" text / css ", href = statiskt (' css / ie.css '))
& Nbsp; blocket ("extra_head ') # block, och blockera arv? självklart!
& Nbsp; kropp:
& Nbsp; div (class = "wrapper", id = "wrapper") # ingen förkortning för klassen och id (ännu)
& Nbsp; header:
& Nbsp; blocket ("header"):
& Nbsp; p (class = "logo"):
& Nbsp; blocket ("header_title '):
& Nbsp; om användaren:
& Nbsp; "Välkommen," {user.name} "
& Nbsp; annars:
& Nbsp; "Welcome"
& Nbsp; om current_member:
& Nbsp; p (class = "inloggning"):
& Nbsp; "Välkommen, {current_member.preferred_name}"
& Nbsp; en (href = url ("logga ut")): "Logga ut"
& Nbsp; nav:
& Nbsp; ul:
& Nbsp; blocket ("nav"):
& Nbsp; li: a (href = url ("logga")): "Logga in"
& Nbsp; avsnitt class = "flik":
& Nbsp; blocket ("breadcrumb ')
& Nbsp; avsnitt (class = "main"):
& Nbsp; blocket ("meddelanden"):
& Nbsp; om meddelanden:
& Nbsp; ul (class = "meddelanden"):
& Nbsp; för meddelandet i meddelanden:
& Nbsp; li (class = message.tags): "{meddelande}"
& Nbsp; script:
& Nbsp; # kod literals, så att kunniga redaktörer kan färga källkod
& Nbsp; `` `javascript
& Nbsp; $ (document) .ready (function () {
& Nbsp; $ ("ul.messages") addClass ("animera").;
& Nbsp; var fade_out = _ (function () {
& Nbsp; this.addClass ("fade-out")
& Nbsp;.}) Binder ($ ("ul.messages"))
& Nbsp; setTimeout (fade_out, 5000);
& Nbsp;. $ ("Ul.messages") Bind ("klicka", fade_out);
& Nbsp;});
& Nbsp; `` `
& Nbsp; blocket ("innehåll")
& Nbsp; sidfot:
& Nbsp; # tfn:
& Nbsp; # "Det här är en kommentar."
& Nbsp; # span: '|'
& Nbsp; # '& copy; 2012 CrossFit "
INSTALLATION
& Nbsp; pip installera plywood
& Nbsp; ply
SYNTAX
Varje rad inleds med ett uttalande, som antingen kan vara en funktion (div, block) en bokstavlig (',' ''), eller en kontroll uttalande (om, annars, för).
Funktioner bli synad med argument och en "block":
# argument är ((), {}), är blocket block ()
p
# argument är ((), {"klass": "ANDEL"}), är blocket block ()
div (class = "divvy")
# argument är (("autofokus"), {'id': "bio"}), är blocket Block (Literal ("Det här är min bio"),)
textarea (autofokus, id = "bio"): "Det här är min bio"
Även om det inte finns någon "blocket", får du åtminstone vid tomt block objekt som du kan ringa block.render på. Det kommer att bli "falsey", dock, så att du kan kontrollera om det finns ett block. Den minsta "truthy" blocket är en tom sträng. Det betyder div '' ger dig en "truthy" blocket, men div kommer att bli en "falsey" blocket.
Du kan förlänga skiten ur plywood, eftersom div, om, kvarter, hela partiet, är alla skrivna som plywood förlängningar. Utan de inbyggda förlängningar, kunde språket faktiskt inte göra någonting, eftersom det är i sin kärna bara ett språk grammatik.
VARFÖR!?!?
Jag tror att det finns utrymme för en annan mallspråk.
HAML? Coffekup? Jade? De verkar inte pythonic för mig.
Plain-Jane HTML? Visst, om du vill. Det är, tror jag, det bästa alternativet till plywood.
Även den stora django mallspråket är HTML gjorde styggare genom att sätta in ytterligare uppmärkning. Jag tittade på Jade och HAML som "ja, du får det", men de ville inte spika det.
Jag är unapologettically en DIY-er. Jag tror att hjulen ibland bara behöver åter uppfinna! Plus, gav detta mig en chans att spela med språk grammatiker, som jag tycker är roligt. Jag använder Modgrammar
Krav :
- Python
Kommentarer hittades inte