<!DOCTYPE html PUBLIC "-//W3C//DTD xhtml dtd1.0 缩写成<!DOCTYPE html>

!DOCTYPE html PUBLIC &//W3C//DTD XHTML 1.0 Transitional//EN&解决方法
&来源:读书人网&【读书人网():综合教育门户网站】
!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN!DOCTYPE html PUBLIC -//W3C//DTD XHTM
!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Transitional//EN&!DOCTYPE&html&PUBLIC&"-//W3C//DTD&XHTML&1.0&Transitional//EN"&是本地文件还是W3C网上文件
[解决办法]它就是让浏览器认识的一个标识不是什么文件[解决办法]这个是让浏览器识别你的html是哪个版本的。JavaScript
CoffeeScript
JADE (Java Agent DEvelopment Framework) 是一个完全用Java语言实现的软件框架。它通过一个兼容 FIPA 规范的中间件来简化了中间多代理的实现。支持调试和部署阶段的图形工具。完全采用Java语言,最低系统要求是Java版本1.4。
最近一次提交:6 天 前
Tj Holowaychuk
Rebuilt docs
Tj Holowaychuk
&title&Jade&/title&
Tj Holowaychuk
&script src=&/ajax/libs/jquery/1/jquery.min.js&&&/script&
Tj Holowaychuk
&style&body {
margin: 0;
padding: 0;
font: 14px/1.5 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif,
color: #252519;
color: #252519;
text-decoration:
color: #19469D;
margin: 12px 0;
h1, h2, h3 {
margin: 0;
padding: 0;
Tj Holowaychuk
table#source {
width: 100%;
border-collapse:
table#source td:first-child {
padding: 30px 40px 30px 40
vertical-align:
table#source td:first-child,
table#source td:first-child pre {
width: 450
table#source td:last-child {
padding: 30px 0 30px 40
border-left: 1px solid #E5E5EE;
background: #F5F5FF;
table#source tr {
border-bottom: 1px solid #E5E5EE;
table#source tr.filename {
padding-top: 40
border-top: 1px solid #E5E5EE;
table#source tr.filename td:first-child {
text-transform:
table#source tr.filename td:last-child {
font-size: 12
table#source tr.filename h2 {
margin: 0;
padding: 0;
Tj Holowaychuk
Tj Holowaychuk
table#source tr.code h1,
table#source tr.code h2,
table#source tr.code h3 {
margin-top: 30
font-family: &Lucida Grande&, &Helvetica Nueue&, Arial, sans-
font-size: 18
table#source tr.code h2 {
font-size: 16
table#source tr.code h3 {
font-size: 14
table#source tr.code ul {
margin: 15px 0 15px 35
padding: 0;
table#source tr.code ul li {
margin: 0;
padding: 1px 0;
table#source tr.code ul li p {
margin: 0;
padding: 0;
table#source tr.code td:first-child pre {
padding: 20
Tj Holowaychuk
Tj Holowaychuk
code .string { color: #219161; }
code .regexp { color: #219161; }
code .keyword { color: #954121; }
code .number { color: #19469D; }
code .comment { color: # }
code .this { color: #19469D; }&/style&
Tj Holowaychuk
$(function(){
$('tr.code').hide();
$('tr.filename').toggle(function(){
$(this).nextUntil('.filename').fadeIn();
}, function(){
$(this).nextUntil('.filename').fadeOut();
Tj Holowaychuk
Tj Holowaychuk
&table id=&source&&&tbody&&tr&&td&&h1&Jade&/h1&&p&Jade is a high performance template engine for &a href=&http://nodejs.org&&node&/a&, inspired by &a href=&/&&haml&/a&, created by &a href=&/visionmedia&&TJ Holowaychuk&/a&.&/p&&/td&&td&&/td&&/tr&&tr class=&filename&&&td&&h2 id=&lib/jade.js&&&a href=&#&&jade&/a&&/h2&&/td&&td&lib/jade.js&/td&&/tr&&tr class=&code&&
Tj Holowaychuk
&td class=&docs&&
Tj Holowaychuk
&p&Library version.
Tj Holowaychuk
&td class=&code&&
Tj Holowaychuk
&pre&&code&&span class=&variable&&exports&/span&.&span class=&variable&&version&/span& = &span class=&string&&'0.2.2'&/span&;&/code&&/pre&
Tj Holowaychuk
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Module dependencies.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&sys&/span& = &span class=&variable&&require&/span&(&span class=&string&&'sys'&/span&),
&span class=&variable&&fs&/span& = &span class=&variable&&require&/span&(&span class=&string&&'fs'&/span&);&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Intermediate JavaScript cache.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&type&/strong&: &em&Object&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&cache&/span& = &span class=&variable&&exports&/span&.&span class=&variable&&cache&/span& = {};&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Self closing tags.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&type&/strong&: &em&Object&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&selfClosing&/span& = &span class=&variable&&exports&/span&.&span class=&variable&&selfClosing&/span& = [
&span class=&string&&'meta'&/span&,
&span class=&string&&'img'&/span&,
&span class=&string&&'link'&/span&,
&span class=&string&&'br'&/span&,
&span class=&string&&'hr'&/span&,
&span class=&string&&'input'&/span&,
&span class=&string&&'area'&/span&,
&span class=&string&&'base'&/span&
];&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Default supported doctypes.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&type&/strong&: &em&Object&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&doctypes&/span& = &span class=&variable&&exports&/span&.&span class=&variable&&doctypes&/span& = {
&span class=&string&&'5'&/span&: &span class=&string&&'&!DOCTYPE html&'&/span&,
&span class=&string&&'xml'&/span&: &span class=&string&&'&?xml version=&1.0& encoding=&utf-8& ?&'&/span&,
&span class=&string&&'default'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Transitional//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&&'&/span&,
&span class=&string&&'transitional'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Transitional//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&&'&/span&,
&span class=&string&&'strict'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Strict//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&&'&/span&,
&span class=&string&&'frameset'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Frameset//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&&'&/span&,
&span class=&string&&'1.1'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.1//EN& &http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&&'&/span&,
&span class=&string&&'basic'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML Basic 1.1//EN& &http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd&&'&/span&,
&span class=&string&&'mobile'&/span&: &span class=&string&&'&!DOCTYPE html PUBLIC &-//WAPFORUM//DTD XHTML Mobile 1.2//EN& &http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd&&'&/span&
};&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Filters.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&type&/strong&: &em&Object&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&filters&/span& = &span class=&variable&&exports&/span&.&span class=&variable&&filters&/span& = {&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Wrap text with CDATA block.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&cdata&/span&: &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&){
&span class=&keyword&&return&/span& &span class=&string&&'&![CDATA[\
'&/span& + &span class=&variable&&str&/span& + &span class=&string&&'\
]]&'&/span&;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Wrap text with script and CDATA tags.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&javascript&/span&: &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&){
&span class=&keyword&&return&/span& &span class=&string&&'&script type=&text/javascript&&\
//&![CDATA[\
'&/span& + &span class=&variable&&str&/span& + &span class=&string&&'\
//]]&&/script&'&/span&;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Transform sass to css, wrapped in style tags.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&sass&/span&: &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&){
&span class=&variable&&str&/span& = &span class=&variable&&str&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/\
/g&/span&, &span class=&string&&'
'&/span&);
&span class=&keyword&&var&/span& &span class=&variable&&sass&/span& = &span class=&variable&&require&/span&(&span class=&string&&'sass'&/span&).&span class=&variable&&render&/span&(&span class=&variable&&str&/span&).&span class=&variable&&replace&/span&(&span class=&regexp&&/
/g&/span&, &span class=&string&&'\
'&/span&);
&span class=&keyword&&return&/span& &span class=&string&&'&style&'&/span& + &span class=&variable&&sass&/span& + &span class=&string&&'&/style&'&/span&;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Transform sass to css, wrapped in style tags.
&td class=&code&&
&pre&&code&&span class=&variable&&less&/span&: &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&){
&span class=&keyword&&var&/span& &span class=&variable&&less&/span&;
&span class=&variable&&str&/span& = &span class=&variable&&str&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/\
/g&/span&, &span class=&string&&'
'&/span&);
&span class=&variable&&require&/span&(&span class=&string&&'less'&/span&).&span class=&variable&&render&/span&(&span class=&variable&&str&/span&, &span class=&keyword&&function&/span&(&span class=&variable&&err&/span&, &span class=&variable&&css&/span&){
&span class=&variable&&less&/span& = &span class=&string&&'&style&'&/span& + &span class=&variable&&css&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/
/g&/span&, &span class=&string&&'\
'&/span&) + &span class=&string&&'&/style&'&/span&;
&span class=&keyword&&return&/span& &span class=&variable&&less&/span&;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Transform markdown to html.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&markdown&/span&: &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&){
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&md&/span& = &span class=&variable&&require&/span&(&span class=&string&&'markdown'&/span&);
Tj Holowaychuk
&span class=&variable&&str&/span& = &span class=&variable&&str&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/\
/g&/span&, &span class=&string&&'
'&/span&);
Tj Holowaychuk
&span class=&keyword&&return&/span& (&span class=&variable&&md&/span&.&span class=&variable&&toHTML&/span&
? &span class=&variable&&md&/span&.&span class=&variable&&toHTML&/span&(&span class=&variable&&str&/span&)
: &span class=&variable&&md&/span&.&span class=&variable&&parse&/span&(&span class=&variable&&str&/span&)).&span class=&variable&&replace&/span&(&span class=&regexp&&/
/g&/span&, &span class=&string&&'\
'&/span&).&span class=&variable&&replace&/span&(&span class=&regexp&&/'/g&/span&,&span class=&string&&'''&/span&);
Tj Holowaychuk
};&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Initialize jade parser with the given input string.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&param&/strong&: &em&String&/em&
str&/p&&/li&&li&&p&&strong&param&/strong&: &em&String&/em&
filename&/p&&/li&&li&&p&&strong&api&/strong&: &em&public&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&function&/span& &span class=&class&&Parser&/span&(&span class=&variable&&str&/span&, &span class=&variable&&filename&/span&){
&span class=&this&&this&/span&.&span class=&variable&&input&/span& = &span class=&variable&&str&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/\r
|\r/g&/span&, &span class=&string&&'
'&/span&);
&span class=&this&&this&/span&.&span class=&variable&&filename&/span& = &span class=&variable&&filename&/span&;
&span class=&this&&this&/span&.&span class=&variable&&deferredTokens&/span& = [];
&span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span& = &span class=&number integer&&0&/span&;
&span class=&this&&this&/span&.&span class=&variable&&lineno&/span& = &span class=&number integer&&1&/span&;
}&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Parser prototype.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&class&&Parser&/span&.&span class=&variable&&prototype&/span& = {&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Generate token object.
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&keyword&&function&/span& &span class=&variable&&token&/span&(&span class=&variable&&type&/span&){
&span class=&variable&&self&/span&.&span class=&variable&&input&/span& = &span class=&variable&&self&/span&.&span class=&variable&&input&/span&.&span class=&variable&&substr&/span&(&span class=&variable&&captures&/span&[&span class=&number integer&&0&/span&].&span class=&variable&&length&/span&);
&span class=&keyword&&return&/span& {
&span class=&variable&&type&/span&: &span class=&variable&&type&/span&,
&span class=&variable&&line&/span&: &span class=&variable&&self&/span&.&span class=&variable&&lineno&/span&,
&span class=&variable&&val&/span&: &span class=&variable&&captures&/span&[&span class=&number integer&&1&/span&]
&span class=&comment&&// EOS&/span&
&span class=&keyword&&if&/span& (!&span class=&this&&this&/span&.&span class=&variable&&input&/span&.&span class=&variable&&length&/span&) {
&span class=&keyword&&if&/span& (&span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span&-- &&span class=&variable&&gt&/span&; &span class=&number integer&&0&/span&) {
&span class=&keyword&&return&/span& { &span class=&variable&&type&/span&: &span class=&string&&'outdent'&/span&, &span class=&variable&&line&/span&: &span class=&this&&this&/span&.&span class=&variable&&lineno&/span& };
} &span class=&keyword&&else&/span& {
&span class=&keyword&&return&/span& { &span class=&variable&&type&/span&: &span class=&string&&'eos'&/span&, &span class=&variable&&line&/span&: &span class=&this&&this&/span&.&span class=&variable&&lineno&/span& };
&span class=&comment&&// Tag&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^(\w[:\w]*)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'tag'&/span&);
&span class=&comment&&// Filter&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^:(\w+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'filter'&/span&);
Tj Holowaychuk
&span class=&comment&&// Each&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^- *each *(\w+)(?: *, *(\w+))? * in *([^
]+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&variable&&token&/span&(&span class=&string&&'each'&/span&);
&span class=&variable&&tok&/span&.&span class=&variable&&val&/span& = &span class=&variable&&captures&/span&[&span class=&number integer&&1&/span&];
&span class=&variable&&tok&/span&.&span class=&variable&&key&/span& = &span class=&variable&&captures&/span&[&span class=&number integer&&2&/span&] || &span class=&string&&'index'&/span&;
&span class=&variable&&tok&/span&.&span class=&variable&&code&/span& = &span class=&variable&&captures&/span&[&span class=&number integer&&3&/span&];
&span class=&keyword&&return&/span& &span class=&variable&&tok&/span&;
Tj Holowaychuk
&span class=&comment&&// Code&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^(!?=|-)([^
]+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&var&/span& &span class=&variable&&flags&/span& = &span class=&variable&&captures&/span&[&span class=&number integer&&1&/span&];
&span class=&variable&&captures&/span&[&span class=&number integer&&1&/span&] = &span class=&variable&&captures&/span&[&span class=&number integer&&2&/span&];
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&variable&&token&/span&(&span class=&string&&'code'&/span&);
&span class=&variable&&tok&/span&.&span class=&variable&&escape&/span& = &span class=&variable&&flags&/span&[&span class=&number integer&&0&/span&] === &span class=&string&&'='&/span&;
&span class=&variable&&tok&/span&.&span class=&variable&&buffer&/span& = &span class=&variable&&flags&/span&[&span class=&number integer&&0&/span&] === &span class=&string&&'='&/span& || &span class=&variable&&flags&/span&[&span class=&number integer&&1&/span&] === &span class=&string&&'='&/span&;
&span class=&keyword&&return&/span& &span class=&variable&&tok&/span&;
&span class=&comment&&// Doctype&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^!!! *(\w+)?/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'doctype'&/span&);
&span class=&comment&&// Id&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^#([\w-]+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'id'&/span&);
&span class=&comment&&// Class&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^\.([\w-]+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'class'&/span&);
&span class=&comment&&// Attributes&/span&
Tj Holowaychuk
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^\( *(.+) *\)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&variable&&token&/span&(&span class=&string&&'attrs'&/span&),
Tj Holowaychuk
&span class=&variable&&attrs&/span& = &span class=&variable&&tok&/span&.&span class=&variable&&val&/span&.&span class=&variable&&split&/span&(&span class=&regexp&&/ *, *(?=[\w-]+ *[:=]|[\w-]+ *$)/&/span&);
Tj Holowaychuk
&span class=&variable&&tok&/span&.&span class=&variable&&attrs&/span& = {};
&span class=&keyword&&for&/span& (&span class=&keyword&&var&/span& &span class=&variable&&i&/span& = &span class=&number integer&&0&/span&, &span class=&variable&&len&/span& = &span class=&variable&&attrs&/span&.&span class=&variable&&length&/span&; &span class=&variable&&i&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&len&/span&; ++&span class=&variable&&i&/span&) {
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&pair&/span& = &span class=&variable&&attrs&/span&[&span class=&variable&&i&/span&];
&span class=&comment&&// Support = and :&/span&
&span class=&keyword&&var&/span& &span class=&variable&&colon&/span& = &span class=&variable&&pair&/span&.&span class=&variable&&indexOf&/span&(&span class=&string&&':'&/span&),
&span class=&variable&&equal&/span& = &span class=&variable&&pair&/span&.&span class=&variable&&indexOf&/span&(&span class=&string&&'='&/span&);
&span class=&comment&&// Boolean&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&colon&/span& &&span class=&variable&&lt&/span&; &span class=&number integer&&0&/span& &&span class=&variable&&amp&/span&;&&span class=&variable&&amp&/span&; &span class=&variable&&equal&/span& &&span class=&variable&&lt&/span&; &span class=&number integer&&0&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&key&/span& = &span class=&variable&&pair&/span&,
&span class=&variable&&val&/span& = &span class=&variable&&true&/span&;
} &span class=&keyword&&else&/span& {
&span class=&comment&&// Split on first = or :&/span&
&span class=&keyword&&var&/span& &span class=&variable&&split&/span& = &span class=&variable&&equal&/span& &&span class=&variable&&gt&/span&;= &span class=&number integer&&0&/span&
? &span class=&variable&&equal&/span&
: &span class=&variable&&colon&/span&;
&span class=&keyword&&if&/span& (&span class=&variable&&colon&/span& &&span class=&variable&&gt&/span&;= &span class=&number integer&&0&/span& &&span class=&variable&&amp&/span&;&&span class=&variable&&amp&/span&; &span class=&variable&&colon&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&equal&/span&) &span class=&variable&&split&/span& = &span class=&variable&&colon&/span&;
&span class=&keyword&&var&/span& &span class=&variable&&key&/span& = &span class=&variable&&pair&/span&.&span class=&variable&&substr&/span&(&span class=&number integer&&0&/span&, &span class=&variable&&split&/span&),
&span class=&variable&&val&/span& = &span class=&variable&&pair&/span&.&span class=&variable&&substr&/span&(++&span class=&variable&&split&/span&, &span class=&variable&&pair&/span&.&span class=&variable&&length&/span&);
&span class=&variable&&tok&/span&.&span class=&variable&&attrs&/span&[&span class=&variable&&key&/span&.&span class=&variable&&trim&/span&().&span class=&variable&&replace&/span&(&span class=&regexp&&/^['&]|['&]$/g&/span&, &span class=&string&&''&/span&)] = &span class=&variable&&val&/span&;
Tj Holowaychuk
&span class=&keyword&&return&/span& &span class=&variable&&tok&/span&;
&span class=&comment&&// Indent&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^
( *)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
++&span class=&this&&this&/span&.&span class=&variable&&lineno&/span&;
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&variable&&token&/span&(&span class=&string&&'indent'&/span&),
&span class=&variable&&indents&/span& = &span class=&variable&&tok&/span&.&span class=&variable&&val&/span&.&span class=&variable&&length&/span& / &span class=&number integer&&2&/span&;
Tj Holowaychuk
&span class=&keyword&&if&/span& (&span class=&this&&this&/span&.&span class=&variable&&input&/span&[&span class=&number integer&&0&/span&] === &span class=&string&&'
'&/span&) {
&span class=&variable&&tok&/span&.&span class=&variable&&type&/span& = &span class=&string&&'newline'&/span&;
&span class=&keyword&&return&/span& &span class=&variable&&tok&/span&;
} &span class=&keyword&&else&/span& &span class=&keyword&&if&/span& (&span class=&variable&&indents&/span& % &span class=&number integer&&1&/span& !== &span class=&number integer&&0&/span&) {
Tj Holowaychuk
&span class=&keyword&&throw&/span& &span class=&keyword&&new&/span& &span class=&class&&Error&/span&(&span class=&string&&'Invalid indentation, got '&/span&
+ &span class=&variable&&tok&/span&.&span class=&variable&&val&/span&.&span class=&variable&&length&/span& + &span class=&string&&' space'&/span&
+ (&span class=&variable&&tok&/span&.&span class=&variable&&val&/span&.&span class=&variable&&length&/span& &&span class=&variable&&gt&/span&; &span class=&number integer&&1&/span& ? &span class=&string&&'s'&/span& : &span class=&string&&''&/span&)
+ &span class=&string&&', must be a multiple of two.'&/span&);
} &span class=&keyword&&else&/span& &span class=&keyword&&if&/span& (&span class=&variable&&indents&/span& === &span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span&) {
&span class=&variable&&tok&/span&.&span class=&variable&&type&/span& = &span class=&string&&'newline'&/span&;
} &span class=&keyword&&else&/span& &span class=&keyword&&if&/span& (&span class=&variable&&indents&/span& &&span class=&variable&&gt&/span&; &span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span& + &span class=&number integer&&1&/span&) {
&span class=&keyword&&throw&/span& &span class=&keyword&&new&/span& &span class=&class&&Error&/span&(&span class=&string&&'Invalid indentation, got '&/span&
+ &span class=&variable&&indents&/span& + &span class=&string&&' expected '&/span&
+ (&span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span& + &span class=&number integer&&1&/span&) + &span class=&string&&'.'&/span&);
} &span class=&keyword&&else&/span& &span class=&keyword&&if&/span& (&span class=&variable&&indents&/span& &&span class=&variable&&lt&/span&; &span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&n&/span& = &span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span& - &span class=&variable&&indents&/span&;
&span class=&variable&&tok&/span&.&span class=&variable&&type&/span& = &span class=&string&&'outdent'&/span&;
&span class=&keyword&&while&/span& (--&span class=&variable&&n&/span&) {
&span class=&this&&this&/span&.&span class=&variable&&deferredTokens&/span&.&span class=&variable&&push&/span&({
&span class=&variable&&type&/span&: &span class=&string&&'outdent'&/span&,
&span class=&variable&&line&/span&: &span class=&this&&this&/span&.&span class=&variable&&lineno&/span&
&span class=&this&&this&/span&.&span class=&variable&&lastIndents&/span& = &span class=&variable&&indents&/span&;
&span class=&keyword&&return&/span& &span class=&variable&&tok&/span&;
&span class=&comment&&// Text&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&captures&/span& = &span class=&regexp&&/^(?:\| ?)?([^
]+)/&/span&.&span class=&variable&&exec&/span&(&span class=&this&&this&/span&.&span class=&variable&&input&/span&)) {
&span class=&keyword&&return&/span& &span class=&variable&&token&/span&(&span class=&string&&'text'&/span&);
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Parse input returning a string of js for evaluation.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&return&/strong&: &em&String&/em& &/p&&/li&&li&&p&&strong&api&/strong&: &em&public&/em&&/p&&p& &/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parse&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&buf&/span& = [&span class=&string&&'var buf = [];'&/span&];
&span class=&keyword&&while&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& !== &span class=&string&&'eos'&/span&) {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&parseExpr&/span&());
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&&span class=&variable&&quot&/span&;&span class=&keyword&&return&/span& &span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&''&/span&);&&span class=&variable&&quot&/span&;);
&span class=&keyword&&return&/span& &span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&);
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
| each block
Tj Holowaychuk
| code block?
Tj Holowaychuk
| expr newline
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseExpr&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&switch&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span&) {
&span class=&keyword&&case&/span& &span class=&string&&'tag'&/span&:
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&parseTag&/span&();
&span class=&keyword&&case&/span& &span class=&string&&'doctype'&/span&:
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&parseDoctype&/span&();
&span class=&keyword&&case&/span& &span class=&string&&'filter'&/span&:
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&parseFilter&/span&();
&span class=&keyword&&case&/span& &span class=&string&&'text'&/span&:
&span class=&keyword&&return&/span& &&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'& + interpolate(this.advance.val.replace(/'&/span&/&span class=&variable&&g&/span&, &&span class=&variable&&quot&/span&;\\&span class=&string&&'&)) + & '&/span&);&&span class=&variable&&quot&/span&;;
&span class=&keyword&&case&/span& &span class=&string&&'id'&/span&:
&span class=&keyword&&case&/span& &span class=&string&&'class'&/span&:
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&this&&this&/span&.&span class=&variable&&advance&/span&;
&span class=&this&&this&/span&.&span class=&variable&&deferredTokens&/span&.&span class=&variable&&push&/span&({
&span class=&variable&&val&/span&: &span class=&string&&'div'&/span&,
&span class=&variable&&type&/span&: &span class=&string&&'tag'&/span&,
&span class=&variable&&line&/span&: &span class=&this&&this&/span&.&span class=&variable&&lineno&/span&
&span class=&this&&this&/span&.&span class=&variable&&deferredTokens&/span&.&span class=&variable&&push&/span&(&span class=&variable&&tok&/span&);
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&parseExpr&/span&();
Tj Holowaychuk
&span class=&keyword&&case&/span& &span class=&string&&'each'&/span&:
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&parseEach&/span&();
Tj Holowaychuk
&span class=&keyword&&case&/span& &span class=&string&&'code'&/span&:
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&this&&this&/span&.&span class=&variable&&advance&/span&,
&span class=&variable&&val&/span& = &span class=&variable&&tok&/span&.&span class=&variable&&val&/span&;
&span class=&keyword&&var&/span& &span class=&variable&&buf&/span& = &span class=&variable&&tok&/span&.&span class=&variable&&buffer&/span&
? &span class=&string&&'buf.push('&/span& + (&span class=&variable&&tok&/span&.&span class=&variable&&escape&/span&
? &span class=&string&&'escape('&/span& + &span class=&variable&&val&/span& + &span class=&string&&')'&/span&
: &span class=&variable&&val&/span&) + &span class=&string&&')'&/span&
: &span class=&variable&&val&/span&;
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& === &span class=&string&&'indent'&/span&
Tj Holowaychuk
? &span class=&variable&&buf&/span& + &span class=&string&&'
(function(){'&/span& + &span class=&this&&this&/span&.&span class=&variable&&parseBlock&/span&() + &span class=&string&&'}).call(this);'&/span&
Tj Holowaychuk
: &span class=&variable&&buf&/span& + &span class=&string&&';'&/span&;
&span class=&keyword&&case&/span& &span class=&string&&'newline'&/span&:
&span class=&this&&this&/span&.&span class=&variable&&advance&/span&;
&span class=&keyword&&return&/span& &span class=&this&&this&/span&.&span class=&variable&&_&/span& + &span class=&this&&this&/span&.&span class=&variable&&parseExpr&/span&();
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&doctype
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseDoctype&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&name&/span& = &span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'doctype'&/span&).&span class=&variable&&val&/span&;
&span class=&keyword&&if&/span& (&span class=&variable&&name&/span& === &span class=&string&&'5'&/span&) &span class=&this&&this&/span&.&span class=&variable&&mode&/span& = &span class=&string&&'html 5'&/span&;
&span class=&keyword&&return&/span& &&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&variable&&default&/span&&span class=&string&&'] + &'&/span&);&&span class=&variable&&quot&/span&;;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&filter text
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseFilter&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&name&/span& = &span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'filter'&/span&).&span class=&variable&&val&/span&,
&span class=&variable&&filter&/span& = &span class=&variable&&filters&/span&[&span class=&variable&&name&/span&];
&span class=&keyword&&if&/span& (&span class=&variable&&filter&/span&) {
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&text&/span& = &span class=&variable&&interpolate&/span&(&span class=&this&&this&/span&.&span class=&variable&&parseTextBlock&/span&().&span class=&variable&&replace&/span&(&span class=&regexp&&/'/g&/span&, &&span class=&variable&&quot&/span&;\\'&&span class=&variable&&quot&/span&;));
&span class=&keyword&&return&/span& &&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'& + filter(text) + &'&/span&);&&span class=&variable&&quot&/span&;;
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
&span class=&keyword&&throw&/span& &span class=&keyword&&new&/span& &span class=&class&&Error&/span&(&span class=&string&&'unknown filter &:'&/span& + &span class=&variable&&name&/span& + &span class=&string&&'&'&/span&);
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&each block
&td class=&code&&
&pre&&code&&span class=&variable&&parseEach&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&each&/span& = &span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'each'&/span&);
&span class=&keyword&&var&/span& &span class=&variable&&fn&/span& = &span class=&string&&'('&/span& + &span class=&variable&&iterate&/span&
.&span class=&variable&&replace&/span&(&span class=&regexp&&/__obj__/&/span&, &span class=&variable&&each&/span&.&span class=&variable&&code&/span&)
.&span class=&variable&&replace&/span&(&span class=&regexp&&/__val__/g&/span&, &span class=&variable&&each&/span&.&span class=&variable&&val&/span&)
.&span class=&variable&&replace&/span&(&span class=&regexp&&/__key__/g&/span&, &span class=&variable&&each&/span&.&span class=&variable&&key&/span&)
.&span class=&variable&&replace&/span&(&span class=&regexp&&/__block__/g&/span&, &span class=&this&&this&/span&.&span class=&variable&&parseBlock&/span&()) + &span class=&string&&').call(this);'&/span&;
&span class=&keyword&&return&/span& &span class=&variable&&fn&/span&;
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&indent (text | newline)* outdent
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseTextBlock&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&buf&/span& = [];
&span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'indent'&/span&);
&span class=&keyword&&while&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& === &span class=&string&&'text'&/span& || &span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& === &span class=&string&&'newline'&/span&) {
&span class=&keyword&&if&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& === &span class=&string&&'newline'&/span&) {
&span class=&this&&this&/span&.&span class=&variable&&advance&/span&;
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'\
'&/span&);
} &span class=&keyword&&else&/span& {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&advance&/span&.&span class=&variable&&val&/span&);
&span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'outdent'&/span&);
&span class=&keyword&&return&/span& &span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&''&/span&);
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&indent expr* outdent
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseBlock&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&buf&/span& = [];
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&_&/span&); &span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'indent'&/span&);
&span class=&keyword&&while&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& !== &span class=&string&&'outdent'&/span&) {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&parseExpr&/span&());
&span class=&this&&this&/span&.&span class=&variable&&expect&/span&(&span class=&string&&'outdent'&/span&);
&span class=&keyword&&return&/span& &span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&);
},&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&tag (attrs | class | id)* text? (code | block)
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&parseTag&/span&: &span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&name&/span& = &span class=&this&&this&/span&.&span class=&variable&&advance&/span&.&span class=&variable&&val&/span&,
&span class=&variable&&html5&/span& = &span class=&this&&this&/span&.&span class=&variable&&mode&/span& === &span class=&string&&'html 5'&/span&,
&span class=&variable&&hasAttrs&/span& = &span class=&variable&&false&/span&,
&span class=&variable&&attrBuf&/span& = &span class=&string&&''&/span&,
&span class=&variable&&codeClass&/span& = &span class=&string&&''&/span&,
&span class=&variable&&classes&/span& = [],
&span class=&variable&&attrs&/span& = {},
&span class=&variable&&buf&/span& = [];
&span class=&comment&&// (attrs | class | id)*&/span&
&span class=&variable&&out&/span&:
&span class=&keyword&&while&/span& (&span class=&number integer&&1&/span&) {
&span class=&keyword&&switch&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span&) {
&span class=&keyword&&case&/span& &span class=&string&&'id'&/span&:
&span class=&variable&&hasAttrs&/span& = &span class=&variable&&true&/span&;
&span class=&variable&&attrs&/span&.&span class=&variable&&id&/span& = &span class=&string&&'&'&/span& + &span class=&this&&this&/span&.&span class=&variable&&advance&/span&.&span class=&variable&&val&/span& + &span class=&string&&'&'&/span&;
&span class=&keyword&&continue&/span&;
&span class=&keyword&&case&/span& &span class=&string&&'class'&/span&:
&span class=&variable&&hasAttrs&/span& = &span class=&variable&&true&/span&;
&span class=&variable&&classes&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&advance&/span&.&span class=&variable&&val&/span&);
&span class=&keyword&&continue&/span&;
&span class=&keyword&&case&/span& &span class=&string&&'attrs'&/span&:
&span class=&variable&&hasAttrs&/span& = &span class=&variable&&true&/span&;
&span class=&keyword&&var&/span& &span class=&variable&&obj&/span& = &span class=&this&&this&/span&.&span class=&variable&&advance&/span&.&span class=&variable&&attrs&/span&,
&span class=&variable&&keys&/span& = &span class=&class&&Object&/span&.&span class=&variable&&keys&/span&(&span class=&variable&&obj&/span&);
&span class=&keyword&&for&/span& (&span class=&keyword&&var&/span& &span class=&variable&&i&/span& = &span class=&number integer&&0&/span&, &span class=&variable&&len&/span& = &span class=&variable&&keys&/span&.&span class=&variable&&length&/span&; &span class=&variable&&i&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&len&/span&; ++&span class=&variable&&i&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&key&/span& = &span class=&variable&&keys&/span&[&span class=&variable&&i&/span&],
&span class=&variable&&val&/span& = &span class=&variable&&obj&/span&[&span class=&variable&&key&/span&];
&span class=&keyword&&if&/span& (&span class=&variable&&key&/span& === &span class=&string&&'class'&/span&) {
Tj Holowaychuk
&span class=&variable&&codeClass&/span& = &span class=&variable&&val&/span&;
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
&span class=&variable&&attrs&/span&[&span class=&variable&&key&/span&] = &span class=&variable&&val&/span& === &span class=&variable&&undefined&/span&
? &span class=&variable&&true&/span&
: &span class=&variable&&val&/span&;
&span class=&variable&&attrs&/span&.&span class=&variable&&html5&/span& = &span class=&variable&&html5&/span&;
&span class=&keyword&&continue&/span&;
&span class=&keyword&&default&/span&:
&span class=&keyword&&break&/span& &span class=&variable&&out&/span&;
Tj Holowaychuk
&span class=&comment&&// text?&/span&
&span class=&keyword&&if&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span& === &span class=&string&&'text'&/span&) {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'& + interpolate(this.advance.val.replace(/^ */, '&/span&&span class=&string&&').replace(/'&/span&/&span class=&variable&&g&/span&, &&span class=&variable&&quot&/span&;\\&span class=&string&&'&)) + &'&/span&);&&span class=&variable&&quot&/span&;);
&span class=&comment&&// (code | block)&/span&
Tj Holowaychuk
&span class=&keyword&&switch&/span& (&span class=&this&&this&/span&.&span class=&variable&&peek&/span&.&span class=&variable&&type&/span&) {
Tj Holowaychuk
&span class=&keyword&&case&/span& &span class=&string&&'code'&/span&:
&span class=&keyword&&var&/span& &span class=&variable&&tok&/span& = &span class=&this&&this&/span&.&span class=&variable&&advance&/span&;
&span class=&keyword&&if&/span& (&span class=&variable&&tok&/span&.&span class=&variable&&buffer&/span&) {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'buf.push('&/span& + (&span class=&variable&&tok&/span&.&span class=&variable&&escape&/span&
? &span class=&string&&'escape('&/span& + &span class=&variable&&tok&/span&.&span class=&variable&&val&/span& + &span class=&string&&')'&/span&
: &span class=&variable&&tok&/span&.&span class=&variable&&val&/span&) + &span class=&string&&');'&/span&);
} &span class=&keyword&&else&/span& {
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&variable&&tok&/span&.&span class=&variable&&val&/span& + &span class=&string&&';'&/span&);
&span class=&keyword&&break&/span&;
&span class=&keyword&&case&/span& &span class=&string&&'indent'&/span&:
&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&this&&this&/span&.&span class=&variable&&parseBlock&/span&());
&span class=&keyword&&break&/span&;
&span class=&comment&&// Build attrs&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&hasAttrs&/span&) {
&span class=&comment&&// Classes&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&classes&/span&.&span class=&variable&&length&/span&) {
&span class=&variable&&attrs&/span&[&span class=&string&&'class'&/span&] = &span class=&string&&'&'&/span& + &span class=&variable&&classes&/span&.&span class=&variable&&join&/span&(&span class=&string&&' '&/span&)
+ &span class=&string&&'&'&/span&;
&span class=&keyword&&if&/span& (&span class=&variable&&codeClass&/span&) {
&span class=&keyword&&if&/span& (&span class=&variable&&attrs&/span&[&span class=&string&&'class'&/span&]) {
&span class=&variable&&attrs&/span&[&span class=&string&&'class'&/span&] += &span class=&string&&' + & & + ('&/span& + &span class=&variable&&codeClass&/span& + &span class=&string&&')'&/span&;
} &span class=&keyword&&else&/span& {
&span class=&variable&&attrs&/span&[&span class=&string&&'class'&/span&] = &span class=&variable&&codeClass&/span&;
&span class=&comment&&// Attributes&/span&
&span class=&variable&&attrBuf&/span& += &&span class=&variable&&quot&/span&;' + &span class=&variable&&attrs&/span&({ &&span class=&variable&&quot&/span&;;
&span class=&keyword&&var&/span& &span class=&variable&&keys&/span& = &span class=&class&&Object&/span&.&span class=&variable&&keys&/span&(&span class=&variable&&attrs&/span&);
&span class=&keyword&&for&/span& (&span class=&keyword&&var&/span& &span class=&variable&&i&/span& = &span class=&number integer&&0&/span&, &span class=&variable&&len&/span& = &span class=&variable&&keys&/span&.&span class=&variable&&length&/span&; &span class=&variable&&i&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&len&/span&; ++&span class=&variable&&i&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&key&/span& = &span class=&variable&&keys&/span&[&span class=&variable&&i&/span&],
&span class=&variable&&val&/span& = &span class=&variable&&attrs&/span&[&span class=&variable&&key&/span&];
Tj Holowaychuk
&span class=&variable&&attrBuf&/span& += &&span class=&variable&&quot&/span&;&span class=&string&&'& + key + &'&/span&: &&span class=&variable&&quot&/span&; + &span class=&variable&&val&/span& + (&span class=&variable&&i&/span& === &span class=&variable&&len&/span& - &span class=&number integer&&1&/span& ? &span class=&string&&''&/span& : &span class=&string&&', '&/span&);
Tj Holowaychuk
&span class=&variable&&attrBuf&/span& += &&span class=&variable&&quot&/span&; }) + '&&span class=&variable&&quot&/span&;;
} &span class=&keyword&&else&/span& {
&span class=&variable&&attrBuf&/span& = &&span class=&variable&&quot&/span&;&span class=&string&&' + '&/span&&&span class=&variable&&quot&/span&;;
&span class=&comment&&// Build the tag&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&selfClosing&/span&.&span class=&variable&&indexOf&/span&(&span class=&variable&&name&/span&) &&span class=&variable&&gt&/span&;= &span class=&number integer&&0&/span&) {
&span class=&keyword&&return&/span& [
&&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'&& + name + attrBuf + (html5 ? '&/span&&span class=&string&&' : '&/span& /&span class=&string&&' ) + &&'&/span&);&&span class=&variable&&quot&/span&;,
&span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&'
].&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&);
} &span class=&keyword&&else&/span& {
&span class=&keyword&&return&/span& [
&&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'&& + name + attrBuf + &&'&/span&);&&span class=&variable&&quot&/span&;,
&span class=&variable&&buf&/span&.&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&),
&&span class=&variable&&quot&/span&;&span class=&variable&&buf&/span&.&span class=&variable&&push&/span&(&span class=&string&&'&/& + name + &&'&/span&);&&span class=&variable&&quot&/span&;
].&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&);
};&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Dummy iteration template.
&td class=&code&&
&pre&&code&&span class=&keyword&&var&/span& &span class=&variable&&iterate&/span& = (&span class=&keyword&&function&/span&(){
&span class=&keyword&&var&/span& &span class=&variable&&__vals&/span& = &span class=&variable&&__obj__&/span&;
&span class=&keyword&&if&/span& (&span class=&variable&&__vals&/span& &span class=&variable&&instanceof&/span& &span class=&class&&Array&/span&) {
&span class=&keyword&&for&/span& (&span class=&keyword&&var&/span& &span class=&variable&&i&/span& = &span class=&number integer&&0&/span&, &span class=&variable&&len&/span& = &span class=&variable&&__vals&/span&.&span class=&variable&&length&/span&; &span class=&variable&&i&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&len&/span&; ++&span class=&variable&&i&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&__key__&/span& = &span class=&variable&&i&/span&;
&span class=&keyword&&var&/span& &span class=&variable&&__val__&/span& = &span class=&variable&&__vals&/span&[&span class=&variable&&i&/span&];
&span class=&variable&&__block__&/span&
} &span class=&keyword&&else&/span& &span class=&keyword&&if&/span& (&span class=&keyword&&typeof&/span& &span class=&variable&&__vals&/span& === &span class=&string&&'object'&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&keys&/span& = &span class=&class&&Object&/span&.&span class=&variable&&keys&/span&(&span class=&variable&&__vals&/span&);
&span class=&keyword&&for&/span& (&span class=&keyword&&var&/span& &span class=&variable&&i&/span& = &span class=&number integer&&0&/span&, &span class=&variable&&len&/span& = &span class=&variable&&keys&/span&.&span class=&variable&&length&/span&; &span class=&variable&&i&/span& &&span class=&variable&&lt&/span&; &span class=&variable&&len&/span&; ++&span class=&variable&&i&/span&) {
&span class=&keyword&&var&/span& &span class=&variable&&__key__&/span& = &span class=&variable&&keys&/span&[&span class=&variable&&i&/span&];
&span class=&keyword&&var&/span& &span class=&variable&&__val__&/span& = &span class=&variable&&__vals&/span&[&span class=&variable&&__key__&/span&];
&span class=&variable&&__block__&/span&
} &span class=&keyword&&else&/span& {
&span class=&keyword&&var&/span& &span class=&variable&&__val__&/span& = &span class=&variable&&__vals&/span&;
&span class=&variable&&__block__&/span&
}).&span class=&variable&&toString&/span&();&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
Tj Holowaychuk
&p&Render the given &code&str&/code& of jade.&/p&
&h2&Options&/h2&
Tj Holowaychuk
&ul&&li&&code&scope&/code&
Evaluation scope (&code&this&/code&). Also referred to as &code&context&/code&&/li&&li&&code&locals&/code&
Local variable object&/li&&li&&code&filename&/code&
Used in exceptions, and required by &code&cache&/code&&/li&&li&&code&cache&/code&
Cache intermediate JavaScript in memory keyed by &code&filename&/code&&/li&&/ul&
Tj Holowaychuk
Tj Holowaychuk
&ul&&li&&p&&strong&param&/strong&: &em&String&/em&
str&/p&&/li&&li&&p&&strong&param&/strong&: &em&Object&/em&
options&/p&&/li&&li&&p&&strong&return&/strong&: &em&String&/em& &/p&&/li&&li&&p&&strong&api&/strong&: &em&public&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&exports&/span&.&span class=&variable&&render&/span& = &span class=&keyword&&function&/span&(&span class=&variable&&str&/span&, &span class=&variable&&options&/span&){
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&fn&/span&,
Tj Holowaychuk
&span class=&variable&&options&/span& = &span class=&variable&&options&/span& || {},
&span class=&variable&&filename&/span& = &span class=&variable&&options&/span&.&span class=&variable&&filename&/span&;
&span class=&comment&&// Attempt to parse&/span&
&span class=&keyword&&function&/span& &span class=&variable&&parse&/span&(){
&span class=&keyword&&try&/span& {
&span class=&keyword&&var&/span& &span class=&variable&&parser&/span& = &span class=&keyword&&new&/span& &span class=&class&&Parser&/span&(&span class=&variable&&str&/span&, &span class=&variable&&filename&/span&);
&span class=&keyword&&if&/span& (&span class=&variable&&options&/span&.&span class=&variable&&debug&/span&) {
&span class=&variable&&parser&/span&.&span class=&variable&&debug&/span&();
&span class=&variable&&parser&/span& = &span class=&keyword&&new&/span& &span class=&class&&Parser&/span&(&span class=&variable&&str&/span&, &span class=&variable&&filename&/span&);
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&js&/span& = &span class=&variable&&parser&/span&.&span class=&variable&&parse&/span&();
Tj Holowaychuk
&span class=&keyword&&if&/span& (&span class=&variable&&options&/span&.&span class=&variable&&debug&/span&) &span class=&variable&&sys&/span&.&span class=&variable&&puts&/span&(&span class=&string&&'
function:'&/span&, &span class=&variable&&js&/span&.&span class=&variable&&replace&/span&(&span class=&regexp&&/^/gm&/span&, &span class=&string&&'
'&/span&));
Tj Holowaychuk
&span class=&keyword&&try&/span& {
&span class=&keyword&&return&/span& &span class=&keyword&&new&/span& &span class=&class&&Function&/span&(&span class=&string&&'locals, attrs, escape, _'&/span&, &span class=&string&&'with (locals) {'&/span& + &span class=&variable&&js&/span& + &span class=&string&&'}'&/span&);
} &span class=&keyword&&catch&/span& (&span class=&variable&&err&/span&) {
&span class=&variable&&process&/span&.&span class=&variable&&compile&/span&(&span class=&variable&&js&/span&, &span class=&variable&&filename&/span& || &span class=&string&&'Jade'&/span&);
&span class=&keyword&&return&/span&;
Tj Holowaychuk
} &span class=&keyword&&catch&/span& (&span class=&variable&&err&/span&) {
&span class=&variable&&rethrow&/span&(&span class=&variable&&err&/span&, &span class=&variable&&parser&/span&.&span class=&variable&&lineno&/span&);
&span class=&comment&&// Re-throw the given error&/span&
&span class=&keyword&&function&/span& &span class=&variable&&rethrow&/span&(&span class=&variable&&err&/span&, &span class=&variable&&lineno&/span&){
&span class=&keyword&&var&/span& &span class=&variable&&start&/span& = &span class=&variable&&lineno&/span& - &span class=&number integer&&3&/span& &&span class=&variable&&gt&/span&; &span class=&number integer&&0&/span&
? &span class=&variable&&lineno&/span& - &span class=&number integer&&3&/span&
: &span class=&number integer&&0&/span&;
&span class=&comment&&// Error context&/span&
&span class=&keyword&&var&/span& &span class=&variable&&context&/span& = &span class=&variable&&str&/span&.&span class=&variable&&split&/span&(&span class=&string&&'
'&/span&).&span class=&variable&&slice&/span&(&span class=&variable&&start&/span&, &span class=&variable&&lineno&/span&).&span class=&variable&&map&/span&(&span class=&keyword&&function&/span&(&span class=&variable&&line&/span&, &span class=&variable&&i&/span&){
&span class=&keyword&&return&/span& &span class=&string&&'
'&/span& + (&span class=&variable&&i&/span& + &span class=&variable&&start&/span& + &span class=&number integer&&1&/span&) + &span class=&string&&'. '&/span& + &span class=&variable&&sys&/span&.&span class=&variable&&inspect&/span&(&span class=&variable&&line&/span&);
}).&span class=&variable&&join&/span&(&span class=&string&&'
'&/span&);
&span class=&comment&&// Alter exception message&/span&
&span class=&variable&&err&/span&.&span class=&variable&&path&/span& = &span class=&variable&&filename&/span&;
&span class=&variable&&err&/span&.&span class=&variable&&message&/span& = (&span class=&variable&&filename&/span& || &span class=&string&&'Jade'&/span&) + &span class=&string&&':'&/span& + &span class=&variable&&lineno&/span&
+ &span class=&string&&'
'&/span& + &span class=&variable&&context&/span& + &span class=&string&&'
'&/span& + &span class=&variable&&err&/span&.&span class=&variable&&message&/span&;
&span class=&keyword&&throw&/span& &span class=&variable&&err&/span&;
&span class=&comment&&// Cache templates&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&options&/span&.&span class=&variable&&cache&/span&) {
&span class=&keyword&&if&/span& (&span class=&variable&&filename&/span&) {
&span class=&keyword&&if&/span& (&span class=&variable&&cache&/span&[&span class=&variable&&filename&/span&]) {
Tj Holowaychuk
&span class=&variable&&fn&/span& = &span class=&variable&&cache&/span&[&span class=&variable&&filename&/span&];
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
Tj Holowaychuk
&span class=&variable&&fn&/span& = &span class=&variable&&cache&/span&[&span class=&variable&&filename&/span&] = &span class=&variable&&parse&/span&();
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
&span class=&keyword&&throw&/span& &span class=&keyword&&new&/span& &span class=&class&&Error&/span&(&span class=&string&&'filename is required when using the cache option'&/span&);
} &span class=&keyword&&else&/span& {
Tj Holowaychuk
&span class=&variable&&fn&/span& = &span class=&variable&&parse&/span&();
Tj Holowaychuk
Tj Holowaychuk
&span class=&keyword&&try&/span& {
Tj Holowaychuk
&span class=&variable&&options&/span&.&span class=&variable&&locals&/span& = &span class=&variable&&options&/span&.&span class=&variable&&locals&/span& || {};
&span class=&variable&&options&/span&.&span class=&variable&&locals&/span&.&span class=&variable&&sys&/span& = &span class=&variable&&sys&/span&;
Tj Holowaychuk
&span class=&keyword&&var&/span& &span class=&variable&&_&/span& = { &span class=&variable&&lineno&/span&: &span class=&number integer&&1&/span& };
Tj Holowaychuk
&span class=&keyword&&return&/span& &span class=&variable&&fn&/span&.&span class=&variable&&call&/span&(&span class=&variable&&options&/span&.&span class=&variable&&scope&/span& || &span class=&variable&&options&/span&.&span class=&variable&&context&/span&,
&span class=&variable&&options&/span&.&span class=&variable&&locals&/span&,
Tj Holowaychuk
&span class=&variable&&attrs&/span&,
&span class=&variable&&escape&/span&,
&span class=&variable&&_&/span&);
} &span class=&keyword&&catch&/span& (&span class=&variable&&err&/span&) {
&span class=&variable&&rethrow&/span&(&span class=&variable&&err&/span&, &span class=&variable&&_&/span&.&span class=&variable&&lineno&/span&);
};&/code&&/pre&
&tr class=&code&&
&td class=&docs&&
&p&Render jade template at the given &code&path&/code&.&/p&
Tj Holowaychuk
&ul&&li&&p&&strong&param&/strong&: &em&String&/em&
path&/p&&/li&&li&&p&&strong&param&/strong&: &em&Object&/em&
options&/p&&/li&&li&&p&&strong&param&/strong&: &em&Function&/em&
fn&/p&&/li&&li&&p&&strong&api&/strong&: &em&public&/em&&/p&&/li&&/ul&
Tj Holowaychuk
&td class=&code&&
&pre&&code&&span class=&variable&&exports&/span&.&span class=&variable&&renderFile&/span& = &span class=&keyword&&function&/span&(&span class=&variable&&path&/span&, &span class=&variable&&options&/span&, &span class=&variable&&fn&/span&){
&span class=&keyword&&if&/span& (&span class=&keyword&&typeof&/span& &span class=&variable&&options&/span& === &span class=&string&&'function'&/span&) {
&span class=&variable&&fn&/span& = &span class=&variable&&options&/span&;
&span class=&variable&&options&/span& = {};
&span class=&variable&&options&/span&.&span class=&variable&&filename&/span& = &span class=&variable&&path&/span&;
Tj Holowaychuk
&span class=&comment&&// Primed cache&/span&
&span class=&keyword&&if&/span& (&span class=&variable&&options&/span&.&span class=&variable&&cache&/span& &&span class=&variable&&amp&/span&;&&span class=&variable&&amp&/span&; &span class=&variable&&cache&/span&[&span class=&variable&&path&/span&]) {
&span class=&keyword&&try&/span& {
&span class=&variable&&fn&/span&(&span class=&keyword&&null&/span&, &span class=&variable&&exports&/span&.&span class=&variable&&render&/span&(&span class=&string&&''&/span&, &span class=&variable&&options&/span&));
} &span class=&keyword&&catch&/span& (&span class=&variable&&err&/span&) {
Tj Holowaychuk
&span class=&variable&&fn&/span&(&span class=&variable&&err&/span&);
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
&span class=&variable&&fs&/span&.&span class=&variable&&readFile&/span&(&span class=&variable&&path&/span&, &span class=&string&&'utf8'&/span&, &span class=&keyword&&function&/span&(&span class=&variable&&err&/span&, &span class=&variable&&str&/span&){
&span class=&keyword&&if&/span& (&span class=&variable&&err&/span&) {
Tj Holowaychuk
&span class=&variable&&fn&/span&(&span class=&variable&&err&/span&);
Tj Holowaychuk
} &span class=&keyword&&else&/span& {
&span class=&keyword&&try&/span& {
&span class=&variable&&fn&/span&(&span class=&keyword&&null&/span&, &span class=&variable&&exports&/span&.&span class=&variable&&render&/span&(&span class=&variable&&str&/span&, &span class=&variable&&options&/span&));
} &span class=&keyword&&catch&/span& (&span class=&variable&&err&/span&) {
&span class=&variable&&fn&/span&(&span class=&variable&&err&/span&);
Tj Holowaychuk
Tj Holowaychuk
Tj Holowaychuk
};&/code&&/pre&
&/tr& &/body&
&/html&&/tbody&&/table&

我要回帖

更多关于 doctype作用 的文章

 

随机推荐