playwud ay isang wika template grammar na ganito, nakakaramdam, at gumagana tulad ng Python
-load ('url')
-load ('i-compress')
doctype ('html')
html:
& Nbsp; head:
& Nbsp; meta (charset = "utf-8")
& Nbsp; meta (name = "viewport," content = "width = device lapad; paunang-scale = 1.0")
& Nbsp; pamagat:
& Nbsp; kung pamagat:
& Nbsp; # docstrings * * ay Nakuha ang naunang whitespace (dapat nilang
& Nbsp; # may mga yupi), at ang una at huling newline ay inalis.
& Nbsp; "" "
& Nbsp; {title} |
& Nbsp; "" "# string intepolation ay isang kaunti pa ng mabibigat na-duty sa` .format () `, ngunit higit pa kaysa sa mga katulad na naiiba.
& Nbsp; 'Maligayang pagdating' # string literals nangangailangan quote: - / ako * * Maaaring magdagdag ng isa pang paraan upang gawin ito ...
& Nbsp; i-compress ('css'):
& Nbsp; ng link (rel = 'stylesheet', i-type = 'text / css', href = static ('css / reset.css'))
& Nbsp; ng link (rel = 'stylesheet', i-type = 'text / css', href = static ('css / welcome.css'))
& Nbsp; script (src = "// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", i-type = "text / javascript")
& Nbsp; i-compress ('js'):
& Nbsp; script (src = static ("js / underscore.js"), i-type = "text / javascript")
& Nbsp; script (src = static ("js / backbone.js"), i-type = "text / javascript")
& Nbsp; ieif 'lt IE 9':
& Nbsp; script (src = "// html5shiv.googlecode.com/svn/trunk/html5.js", i-type = "text / javascript")
& Nbsp; ng link (rel = 'stylesheet', i-type = 'text / css', href = static ('css / ie.css'))
& Nbsp; bloke ('extra_head') # bloke, at i-block ang inheritance? syempre!
& Nbsp; body:
& Nbsp; div (class = "wrapper", id = "wrapper") # walang shorthand para sa klase at id (pa)
& Nbsp; header:
& Nbsp; bloke ('header'):
& Nbsp; p (class = "logo"):
& Nbsp; bloke ('header_title'):
& Nbsp; kung gumagamit:
& Nbsp; 'Welcome,' {user.name} '
& Nbsp; iba pa:
& Nbsp; 'Maligayang pagdating'
& Nbsp; kung current_member:
& Nbsp; p (class = "pag-login"):
& Nbsp; "Maligayang pagdating, {current_member.preferred_name}"
& Nbsp; ng (href = url ("logout")): 'Log Out'
& Nbsp; nav:
& Nbsp; ul:
& Nbsp; bloke ('nav'):
& Nbsp; li: isang (href = url ("login")): 'Login'
& Nbsp; class na seksyon = "breadcrumb":
& Nbsp; bloke ('breadcrumb')
& Nbsp; seksyon (class = "pangunahing"):
& Nbsp; bloke ('mensahe'):
& Nbsp; kung mensahe:
& Nbsp; ul (class = "mensahe"):
& Nbsp; para sa mensahe sa mensahe:
& Nbsp; li (class = message.tags): '{mensahe}'
& Nbsp; script:
& Nbsp; literals # code, upang maaari kulayan savvy mga editor ang source code
& Nbsp; `` `javascript
& Nbsp; $ (dokumento) .ready (function na () {
& Nbsp; $ ("ul.messages") addClass ("bigyang-buhay").;
& Nbsp; var fade_out = _ (function na () {
& Nbsp; this.addClass ("fade-out")
& Nbsp;.}) Isailalim ($ ("ul.messages"))
& Nbsp; setTimeout (fade_out, 5000);
& Nbsp;. $ ("Ul.messages") isailalim ("i-click", fade_out);
& Nbsp;});
& Nbsp; `` `
& Nbsp; bloke ('nilalaman')
& Nbsp; footer:
& Nbsp; # p:
& Nbsp; # 'Ito ang mga komento.'
& Nbsp; # span: '|'
& Nbsp; # '& copy; 2012 CrossFit'
INSTALL
& Nbsp; buto ng bungang-kahoy-install playwud
& Nbsp; sapin
syntax
Ang bawat linya ay nagsisimula sa isang pahayag, na maaaring maging isang function (div, pigilin) ang isang literal (',' ''), o isang control statement (kung, iba pa, para sa).
Mga Function makakuha tinawag gamit ang mga argumentong at isang "i-block":
# Argumento ay ((), {}), bloke ay Block ()
p
# Argumento ay ((), {'klase': 'magsama'}), bloke ay Block ()
div (class = "magsama")
# Argumento ay (('autofocus'), {'id': 'bio'}), bloke ay Block (literal ('Ito ang aking bio'),)
textarea (autofocus, id = "bio"): 'Ito ang aking bio'
Kahit na walang "i-block", makakakuha ka ng sa hindi bababa sa walang laman na bloke bagay na iyon, maaari kang tumawag sa block.render. Ito ay magiging "falsey", bagaman, sa gayon maaari mong suriin para sa pagkakaroon ng isang bloke. Ang minimum na "truthy" bloke ay isang walang laman na string. Iyon ay nangangahulugang div '' ay magbibigay sa iyo ng isang "truthy" bloke, ngunit div ay magiging isang "falsey" block.
Maaari mong pahabain ang tae out sa playwud, dahil div, kung, bloke, ang marami, ay nakasulat lahat bilang playwud extension. Kapag wala ang builtin extension, ang wika ay hindi maaaring aktwal na gumawa ng anumang bagay, dahil ito ay sa core nito lamang ng isang wika grammar.
BAKIT!?!?
Sa tingin ko ay may kuwarto para sa isa pang templating wika.
Haml? Coffekup? Jade? Hindi sila mukhang pythonic sa akin.
Plain-Jane HTML? Oo naman, kung gusto mo. Iyon ay, sa palagay ko, ang pinakamahusay na alternatibo sa playwud.
Kahit na ang mahusay na wika Django template ay ginawa HTML nastier sa pamamagitan ng pagpasok ng mga karagdagang markup. Tiningnan ko ang Jade at Haml ng "oo, nakukuha mo doon", ngunit hindi nila Kuko ito.
Ako unapologettically ng DIY-ER. Sa tingin ko na kung minsan mga gulong Kailangan lang re-inventing! Plus, ito ay nagbigay sa akin ng isang pagkakataon upang i-play na may grammars wika, na sa palagay ko ay masaya. Ginagamit ko ang Modgrammar
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan