!!! 5
html(lang="en")
  head
    title= pageTitle(car insurance montana)
    :javascript
      | if (foo) {
      |    bar()
      | }
  body
    h1 Jade - node template engine 
    #container
      - if (youAreUsingJade)
         You are amazing
      - else
         Get on it!
         Get on it!
         Get on it!
         Get on it!
					

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Jade</title>
    <script type="text/javascript">
      //<![CDATA[
      if (foo) {
      	bar()
      }
      //]]>
    </script>
  </head>
  <body>
    <h1>Jade - node template engine</h1>
    <div id="container">
      <p>car insurance maine</p>
    </div>
  </body>
</html>	

Change Log
1.11.0 / 2015-06-12
Documentation

Added block code support (@alephyud)
Improved runtime performance of mixins significantly (Andreas Lubbe)
Improved runtime performance of jade’s string escaping (Andreas Lubbe) and (@ForbesLindesay)
Better line number counting for pipeless text (@alephyud)
1.10.0 / 2015-05-25
Documentation

Now supports jstransformers, which allows improved handling of embedded languages such as Coffee-Script, and deprecated Transformers support in filters – to be removed in 2.0.0 (@ForbesLindesay)
CLI: added a flag to keep directory hierarchy when a directory is specified – this behavior will be the default in 2.0.0 (@TimothyGu)
disabled ‘compileDebug’ flag by default when used with express in production mode (Andreas Lubbe)
Fixed a memory leak on modern versions of Chrome as well as node 0.12 and iojs (Andreas Lubbe)
update website (@GarthDB)
1.9.2 / 2015-01-18
Documentation

Do not ignore some parser errors for mismatched parenthesis (@TimothyGu)
Warn for : that is not followed by a space (@ForbesLindesay)
Fix #1794 (a bizzare bug with a certain combination of inheritance, mixins and &attributes) (@ForbesLindesay)
Add compileClientWithDependenciesTracked (@ForbesLindesay)
Support comments in case blocks (@ForbesLindesay)
Fix blocks in nested mixins (@ForbesLindesay)
Lots more documentation (@enlore)
Fix watching in CLI (@pavel)
1.9.1 / 2015-01-17
Documentation

Clean up path/fs functions in CLI as we no longer support node@0.6 (@TimothyGu)
Update commander (@TimothyGu)
Document cache and parser options (@TimothyGu)
Fix bug in 1.9.0 where we read the file if cache was enabled, even if a string was provided (@TimothyGu)
Fix year in changelog (@tomByrer)
1.9.0 / 2015-01-13
Documentation

Fix –watch sometimes dying when there were file-system errors (@ForbesLindesay)
Fix –watch by using fs.watchFile correctly (@TimothyGu)
Fix errors with using the CLI to compile from stdin
Better looking badges (@TimothyGu)
Added –extension to CLI(@nicocedron and @TimothyGu)
Refactor and improve internal cache handling (@TimothyGu)
Loads more tests (@TimothyGu)
1.8.2 / 2014-12-16
Documentation

Use – as the default filename when using stdin on CLI (@TimothyGu)
Prevent some compiler errors being silenced (@ForbesLindesay)
Remove use of non-standard string.trimLeft() (@ForbesLindesay)
Fix bug in CLI when no name was provided for child template (@ForbesLindesay)
Remove dependency on monocle (hopefully fixing installation on 0.8) (@ForbesLindesay)
Add gitter chat room (@ForbesLindesay)
1.8.1 / 2014-11-30
Documentation

Fix corner case when the pretty option was passed a non-string truthy value (@TimothyGu)
Warn when lexer is given as an option (@TimothyGu)
Update dependencies (@TimothyGu)
1.8.0 / 2014-11-28
Documentation

Fix empty text-only block (@rlidwka)
Warn about future change to ISO 8601 style dates (@TimothyGu and @ForbesLindesay)
Add warnings when data-attributes contain ampersands (@TimothyGu)
Allow custom pretty indentation (@bfred-it)
Add support for an object in the style attribute (@ForbesLindesay)
Add support for an object in the class attribute (@ForbesLindesay)
Ignore fs module in browser builds (@sokra)
Update dependencies (@hildjj)
Check mixin arguments are valid JavaScript expressions (@ForbesLindesay)
Remove symlink (@slang800)
1.7.0 / 2014-09-17
Documentation

Add Doctype option on command line (@ForbesLindesay)
Support ES6 style rest args in mixins (@ForbesLindesay)
Fix support for unicode newlines (\u2028, \u2029) (@rlidwka)
Expose globals option from the with module (@sokra)
Lots of new documentation (@ForbesLindesay)
1.6.0 / 2014-08-31
Documentation

Allow optional white space after + when calling a mixin (@char101)
Use void-elements module to replace internal self-closing list (@hemanth)
Fix a warning that eroniously warned for un-used blocks if in an extending template from an include (Reported by @Dissimulazione)
Fix mixins not working at end of file (@ForbesLindesay)
Fix error reporting when mixin block was followed by blank lines (@ForbesLindesay)
1.5.0 / 2014-07-23
Documentation

Added compileFile API (@ForbesLindesay)
Fix line number in un-used blocks warning (@ForbesLindesay)
Fix a warning that eroniously warned for un-used blocks if they were under another block (Reported by @pesho)
1.4.2 / 2014-07-16
Documentation

Fix a warning that eroniously warned for un-used blocks if they were under a “Code” element (Reported by @narirou)
1.4.1 / 2014-07-16
Documentation

Fix an error that sometimes resulted in ‘unexpected token “pipless-text”‘ being erroniously thrown (Reported by @Artazor and @thenitai)
1.4.0 / 2014-07-15
Documentation

Fix CLI so it keeps watching when errors occur (@AndrewTsao)
Support custom names for client side templates (@ForbesLindesay and @dscape)
Allow whitepsace other than “space” before attributes passed to mixins (N.B. there is a small chance this could be a breaking change for you) (@regular)
Track dependencies so file watchers can be more clever (@ForbesLindesay and @sdether)
Allow passing options to filtered includes (@ForbesLindesay)
Fix bugs with indentation in filters (@ForbesLindesay and @lackac)
Warn on block names that are never used (@ForbesLindesay)
1.3.1 / 2014-04-04
Documentation

Fix error with tags in xml that are self-closing in html (@ForbesLindesay)
Fix error message for inline tags with content (@hiddentao)
1.3.0 / 2014-03-02
Fix a bug where sometimes mixins were removed by an optimisation even though they were being called (@ForbesLindesay, reported by @leider)
Updated with to support automatically detecting when a value is “global” and removed redundant options.globals option (@ForbesLindesay)
Improve warnings for tags with multiple attributes (@ForbesLindesay)
Deprecate (with a warning) node.clone, block.replace, attrs.removeAttribute, attrs.getAttribute – these are all internal APIs for the AST (@ForbesLindesay)
1.2.0 / 2014-02-26
Use variables instead of properties of jade, improving performance and reliability with nested templates (@ForbesLindesay)
Support compiling templates from stdin via a user typing (@yorkie)
Lazily add mixins (@ForbesLindesay)
Fix case fall-through (@ForbesLindesay)
Earlier errors for when without case and else without if (@ForbesLindesay)
Allow if/else etc. to not have a block.
Remove lib-cov legacy to make browserify work better (@silver83)
Add and improve test coverage using istanbul (@ForbesLindesay)
1.1.5 / 2014-01-19
Add filename to and fix line numbers for missing space before text warning (@ijin82)
Fix filenames for some error reporting in extends/includes (@doublerebel)
Fix a corner case where a mixin was called with &attributes but no other attributes and a block that was supposed to be fixed in 1.1.4 (@ForbesLindesay)
1.1.4 / 2014-01-09
Fix a corner case where a mixin was called with &attributes but no other attributes and a block (@ForbesLindesay)
1.1.3 / 2014-01-09
Fix failure of npm prepublish not running
1.1.2 / 2014-01-09
Fix same interaction of &attributes with false null or undefined but combined with dynamic attributes (@ForbesLindesay)
1.1.1 / 2014-01-09
Fix a bug when &attributes is combined with static attributes that evaluate to false or null or undefined (@ForbesLindesay)
1.1.0 / 2014-01-07
Fix class merging to work as documented (@ForbesLindesay)
Throw an error when the same attribute is duplicated multiple times (@ForbesLindesay)
Move more errors into the parser/lexer so they have more info about line numbers (@ForbesLindesay)
Support mixin blocks at the end of files (@ForbesLindesay)
1.0.2 / 2013-12-31
Fix a bug when &attributes is combined with dynamic attributes (@ForbesLindesay)
1.0.1 / 2013-12-29
Allow self closing tags to contian whitespace (@ForbesLindesay)
Allow tags to have a single white space after them (@ForbesLindesay)
Support text bodies of tags that begin with // rather than treating them as comments (@ForbesLindesay)
1.0.0 / 2013-12-22
No longer support node@0.8 (@ForbesLindesay)
Fix error reporting in layouts & includes (@ForbesLindesay)
Allow a list of ‘globals’ to be passed as an array at compile time & don’t automatically expose all globals (@ForbesLindesay)
Escape apostrophes in data attributes (@qualiabyte)
Fix mixin/block interaction (@ForbesLindesay & @paulyoung)
Ignore trailing space after mixin declaration (@ForbesLindesay)
Make literal . work as expected (@ForbesLindesay)
Remove implicit text only for script/style (@ForbesLindesay)
Stop parsing comments and remove support for conditional comments (@ForbesLindesay)
Make filtering includes explicit (@ForbesLindesay)
Remove special assignment syntax (@ForbesLindesay)
Remove !!! shortcut for doctype (@ForbesLindesay)
Remove 5 shorcut for html doctype (@ForbesLindesay)
Remove colons option from the distant past (@ForbesLindesay)
Add a sepatate compileClient and compileFileClient to replace the client option (@ForbesLindesay)
Remove polyfills for supporting old browsers (@ForbesLindesay)
Allow interpolation for mixin names (@jeromew
Use node.type instead of node.constructor.name so it can be minified (@ForbesLindesay)
Allow hyphens in filter names (@ForbesLindesay)
Throw an error if a self closing tag has content (@ForbesLindesay)
Support inline tags (@ForbesLindesay)
Replace attributes magic attribute with &attributes(attributes) (@ForbesLindesay)
Remove automatic tag wrapping for filters, you can just put the tags in yourself now (@ForbesLindesay)
Remove whitespace from tags nested inside pre tags (@markdalgleish)
0.35.0 / 2013-08-21
Add support for space separated attributes (thanks to @ForbesLindesay)
Add earlier errors for invalid JavaScript expressions (thanks to @ForbesLindesay)
Fix parsing files with UTF8 BOMs when they are includes or parent/layout templates (thanks to @kiinoo)
0.34.1 / 2013-07-26
fix render file not working when called with callback (reported by @xieren58)
0.34.0 / 2013-07-26
callbacks only called once for async methods even if they throw (reported by @davidcornu)
HTML comments are pretty printed better (thanks to @eddiemonge)
callbacks are optional and leaving them out results in synchronous operation (thanks to @ForbesLindesay)
empty filter nodes are now permitted (thanks to @coderanger)
overhaul website and documentation (thanks to @ForbesLindesay), much more of this to come.
0.33.0 / 2013-07-12
Hugely more powerful error reporting (especially with compileDebug set explicitly to true)
Add a warning for tags with multiple attributes
be strict about requiring newlines after tags to fix some odd corner cases
fix escaping of class to allow it to be unescaped (thanks to @christiangenco)
0.32.0 / 2013-06-28
remove jade.version and fix jade –version
add file name and line number to deprecation warnings
use constantinople for better constant detection
update with for a massive performance upgrade at compile time
0.31.2 / 2013-06-07
fix overzealous deprecation warnings
0.31.1 / 2013-05-31
fix line endings for executable command
fix locals variable being undefined
fix an obscure bug that could occur if multiple mixins interact badly (see substack/lexical-scope#13)
0.31.0 / 2013-05-30
deprecate implicit text-only script and style tags
make with at compile time using lexical-scope
add options.parser that behaves exactly like options.compiler
add “component.json” for component (runtime) support
removed hasOwnProperty check in each loops
removed .min files from the repository (people can just generate these themselves)
use browserify to compile client side libraries
fix buggy block extending should now be fixed
fix preserve case of custom doctypes
fix regexps in attributes sometimes not being accepted
fix allow $ sign in each loop variable names
fix mixins with buffered code on the same line
fix separate class names by rather than, (was sometimes incorrect)
0.30.0 / 2013-04-25
add support for ‘include’ and ‘extends’ to use paths relative to basedir
fix accidental calling of functions in iteration block. Closes #986
fix: skip rethrow on client
fix each/else prefixed with –
fix multi-block prepend/append
swap -o and -O, set -o to –out
0.29.0 / 2013-04-16
add “monocle” for watcher that actually works…
fix interpolation in blocks of text
fix attribute interpolation
move filters to an external library
fix JavaScript escaping corner cases
0.28.2 / 2013-03-04
wtf coffeescript is not a dep
0.28.1 / 2013-01-10
add passing of filename to include filters
fix wrong new lines for include filters
0.28.0 / 2013-01-08
add .css and .js “filters”. re #438
add include filters. Closes #283
fix “class:” within attribute escaping
removing ast filters
things I can’t read:
反馈地址
样式
联系
初稿,翻译完
接受大鸟的建议
头晕,翻译一点点
到过滤器翻译完毕
翻译一部分
中文翻译单独放
特性部分
再翻
翻译一点点
0.27.7 / 2012-11-05
fix each/else clause for enumerated objects
fix #764 (incorrect line number for error messages)
fix double-escaping of interpolated js slashes. Closes #784
0.27.6 / 2012-10-05
Included templates can not override blocks of their parent. Closes #699
0.27.5 / 2012-09-24
fix attr interpolation escaping. Closes #771
0.27.4 / 2012-09-18
fix include yields. Closes #770
0.27.3 / 2012-09-18
fix escaping of interpolation. Closes #769
loosen “mkdirp” version restriction [TooTallNate]
0.27.2 / 2012-08-07
Revert “fixing string interpolation escaping #731”, problems reported
0.27.1 / 2012-08-06
fix attribute interpolation escaping #731
fix string interpolation escaping #731
0.27.0 / 2012-07-26
added ability to pass in json file to –obj
add preliminary each else support. Closes #716
fix doctype bug overlooked in #712
fix stripping of utf-8 BOMs
0.26.3 / 2012-06-25
Update version of commander that supports node v0.8.
0.26.2 / 2012-06-22
Added –options alias of –obj
Added reserved word conflict prevention in Google’s Closure Compiler
Added tag interpolation. Closes #657
Allow the compiled client to use it’s own jade util functions [3rd-Eden]
Fixed attrs() escape bug [caseywebdev]
0.26.1 / 2012-05-27
Changed default doctype to html5
Performance: statically compile attrs when possible [chowey]
Fixed some class attribute merging cases
Fixed so block doesn’t consume blockquotes tag [chowey]
Fixed backslashes in text nodes [chowey]
Fixed / in text. Closes #638
0.26.0 / 2012-05-04
Added package.json component support
Added explicit self-closing tag support. Closes #605
Added block statement
Added mixin tag-like behaviour [chowey]
Fixed mixins with extends [chowey]
0.25.0 / 2012-04-18
Added preliminary mixin block support. Closes #310
Fixed whitespace handling in various situations [chowey]
Fixed indentation in various situations [chowey]
0.24.0 / 2012-04-12
Fixed unescaped attribute compilation
Fixed pretty-printing of text-only tags (Warning: this may affect rendering) [chowey]
0.23.0 / 2012-04-11
Added data-attr json stringification support. Closes #572
Added unescaped attr support. Closes #198
Fixed #1070, reverted mixin function statements
Fixed jade.1 typo
0.22.1 / 2012-04-04
Fixed source tags. now self-closing. Closes #308
Fixed: escape backslashes in coffeescript filter
0.22.0 / 2012-03-22
Added jade manpage (man jade after installation for docs)
Added -D, –no-debug to jade(1)
Added -p, –pretty to jade(1)
Added -c, –client option to jade(1)
Fixed -o { client: true } with stdin
Fixed: skip blank lines in lexer (unless within pipeless text). Closes #399
0.21.0 / 2012-03-10
Added new input/output test suite using Mocha’s string diffing
Added alias extend -> extends. Closes #527 [guillermo]
Fixed include escapes. Closes #513
Fixed block-expansion with .foo and #foo short-hands. Closes #498
0.20.3 / 2012-02-16
Changed: pass .filename to filters only
0.20.2 / 2012-02-16
Fixed :stylus import capabilities, pass .filename
0.20.1 / 2012-02-02
Fixed Block#includeBlock() with textOnly blocks
0.20.0 / 2011-12-28
Added a browser example
Added yield for block includes
Changed: replaced internal _ var with jade [chrisleishman] Fixed two globals. Closes #433 0.19.0 / 2011-12-02 Added block append / prepend support. Closes #355 Added link in readme to jade-mode for Emacs Added link to python implementation 0.18.0 / 2011-11-21 Changed: only [‘script’, ‘style’] are text-only. Closes #398′ 0.17.0 / 2011-11-10 jade.renderFile() is back! (for express 3.x) Fixed Object.keys() failover bug 0.16.4 / 2011-10-24 Fixed a test due to reserved keyword Fixed: commander 0.1.x dep for 0.5.x 0.16.3 / 2011-10-24 Added: allow leading space for conditional comments Added quick implementation of a switch statement Fixed parens in mixin args. Closes #380 Fixed: include files with a .jade extension as jade files 0.16.2 / 2011-09-30 Fixed include regression. Closes #354 0.16.1 / 2011-09-29 Fixed unexpected else bug when compileDebug: false Fixed attr state issue for balancing pairs. Closes #353 0.16.0 / 2011-09-26 Added include block support. Closes #303 Added template inheritance via block and extends. Closes #242 Added ‘type=”text/css”‘ to the style tags generated by filters. Added ‘uglifyjs’ as an explicit devDependency. Added -p, –path flag to jade(1) Added support for any arbitrary doctype Added jade.render(str[,options], fn) back Added first-class while support Added first-class assignment support Fixed runtime.js Array.isArray() polyfill. Closes #345 Fixed: set .filename option in jade(1) when passing filenames Fixed Object.keys() polyfill typo. Closes #331 Fixed include error context Renamed magic “index” to “$index”. Closes #350 0.15.4 / 2011-09-05 Fixed script template html. Closes #316 Revert “Fixed script() tag with trailing “.”. Closes #314″ 0.15.3 / 2011-08-30 Added Makefile example. Closes #312 Fixed script() tag with trailing “.”. Closes #314 0.15.2 / 2011-08-26 Fixed new conditional boundaries. Closes #307 0.15.1 / 2011-08-26 Fixed jade(1) support due to res.render() removal Removed –watch support (use a makefile + watch…) 0.15.0 / 2011-08-26 Added client option to reference runtime helpers Added Array.isArray() for runtime.js as well Added Object.keys() for the client-side runtime Added first-class if, unless, else and else if support Added first-class each / for support Added make benchmark for continuous-bench Removed inline option, SS helpers are no longer inlined either Removed Parser#debug() Removed jade.render() and jade.renderFile() Fixed runtime.js escape() bug causing window.escape to be used Fixed a bunch of tests 0.14.2 / 2011-08-16 Added include support for non-jade files Fixed code indentation when followed by newline(s). Closes #295 [reported by masylum] 0.14.1 / 2011-08-14 Added colons option for everyone stuck with “:”. Closes #231 Optimization: consecutive lines are merged in compiled js 0.14.0 / 2011-08-08 Added array iteration with index example. Closes #276 Added runtime.js Added compileDebug option to enable lineno instrumentation Added inline option to disable inlining of helpers (for client-side) 0.13.0 / 2011-07-13 Added mixin support Added include support Added array support for the class attribute 0.12.4 / 2011-06-23 Fixed filter indentation bug. Closes #243 0.12.3 / 2011-06-21 Fixed empty strings support. Closes #223 Fixed conditional comments documentation. Closes #245 0.12.2 / 2011-06-16 Fixed make test Fixed block comments 0.12.1 / 2011-06-04 Fixed attribute interpolation with double quotes. Fixes #232 [topaxi] 0.12.0 / 2011-06-03 Added doctype as alias of !!! Added; doctype value is now case-insensitive Added attribute interpolation support Fixed; retain original indentation spaces in text blocks 0.11.1 / 2011-06-01 Fixed text block indentation [Laszlo Bacsi] Changed; utilizing devDependencies Fixed try/catch issue with renderFile(). Closes #227 Removed attribute “:” support, use “=” (option for ‘:’ coming soon) 0.11.0 / 2011-05-14 Added self object to avoid poor with(){} performance [masylum] Added doctype option [Jeremy Larkin] 0.10.7 / 2011-05-04 expose Parser 0.10.6 / 2011-04-29 Fixed CS Object.keys() [reported by robholland] 0.10.5 / 2011-04-26 Added error context after the lineno Added; indicate failing lineno with “>” Added Object.keys() for the client-side Fixed attr strings when containing the opposite quote. Closes 207 Fixed attr issue with js expressions within strings Fixed single-quote filter escape bug. Closes #196 0.10.4 / 2011-04-05 Added html doctype, same as “5” Fixed pre, no longer text-only 0.10.3 / 2011-03-30 Fixed support for quoted attribute keys ex rss(“xmlns:atom”=”atom”) 0.10.2 / 2011-03-30 Fixed pipeless text bug with missing outdent 0.10.1 / 2011-03-28 Fixed support/compile.js to exclude browser js in node Fixes for IE [Patrick Pfeiffer] 0.10.0 / 2011-03-25 Added AST-filter support back in the form of [attrs]<:> 0.9.3 / 2011-03-24 Added Block#unshift(node) Added jade.js for the client-side to the repo Added jade.min.js for the client-side to the repo Removed need for pipes in filters. Closes #185 Note that this will break filters used to manipulate the AST, until we have a different syntax for doing so. 0.9.2 / 2011-03-23 Added jade –version Removed ${} interpolation support, use #{} 0.9.1 / 2011-03-16 Fixed invalid .map() call due to recent changes 0.9.0 / 2011-03-16 Added client-side browser support via make jade.js and make jade.min.js. 0.8.9 / 2011-03-15 Fixed preservation of newlines in text blocks 0.8.8 / 2011-03-14 Fixed jade(1) stdio 0.8.7 / 2011-03-14 Added mkdirs() to jade(1) Added jade(1) stdio support Added new features to jade(1), –watch, recursive compilation etc [khingebjerg] Fixed pipe-less text newlines Removed jade(1) –pipe flag 0.8.6 / 2011-03-11 Fixed parenthesized expressions in attrs. Closes #170 Changed; default interpolation values == null to ”. Closes #167 0.8.5 / 2011-03-09 Added pipe-less text support with immediate “.”. Closes #157 Fixed object support in attrs Fixed array support for attrs 0.8.4 / 2011-03-08 Fixed issue with expressions being evaluated several times. closes #162 0.8.2 / 2011-03-07 Added markdown, discount, and markdown-js support to :markdown. Closes #160 Removed :discount 0.8.1 / 2011-03-04 Added pre pipe-less text support (and auto-escaping) 0.8.0 / 2011-03-04 Added block-expansion support. Closes #74 Added support for multi-line attrs without commas. Closes #65 0.7.1 / 2011-03-04 Fixed script() etc pipe-less text with attrs 0.7.0 / 2011-03-04 Removed :javascript filter (it doesn’t really do anything special, use script tags) Added pipe-less text support. Tags that only accept text nodes (script, textarea, etc) do not require |. Added :text filter for ad-hoc pipe-less Added flexible indentation. Tabs, arbitrary number of spaces etc Added conditional-comment support. Closes #146 Added block comment support Added rss example Added :stylus filter Added :discount filter Fixed; auto-detect xml and do not self-close tags. Closes #147 Fixed whitespace issue. Closes #118 Fixed attrs. ,, =, and : within attr value strings are valid Closes #133 Fixed; only output “” when code == null. Ex: span.name= user.name when undefined or null will not output “undefined”. Closes #130 Fixed; throw on unexpected token instead of hanging 0.6.3 / 2011-02-02 Added each support for Array-like objects [guillermo] 0.6.2 / 2011-02-02 Added CSRF example, showing how you can transparently add inputs to a form Added link to vim-jade Fixed self-closing col support [guillermo] Fixed exception when getAttribute or removeAttribute run into removed attributes [Naitik Shah] 0.6.0 / 2010-12-19 Added unescaped interpolation variant !{code}. Closes #124 Changed; escape interpolated code by default #{code} 0.5.7 / 2010-12-08 Fixed; hyphen in get tag() 0.5.6 / 2010-11-24 Added exports.compile(str, options) Renamed internal to , since _() is commonly used for translation
0.5.5 / 2010-10-30
Add coffeescript filter [Michael Hampton]
Added link to slim; a ruby implementation
Fixed quoted attributes issue.

Fixed attribute issue with over greedy regexp. Previously “p(foo=((((‘bar’)))))= (((‘baz’)))” would fail for example since the regexp would lookahead to far. Now we simply pair the delimiters.

0.5.4 / 2010-10-18
Adding newline when using tag code when preceding text
Assume newline in tag text when preceding text
Changed; retain leading text whitespace
Fixed code block support to prevent multiple buffer openings [Jake Luer]
Fixed nested filter support
0.5.3 / 2010-10-06
Fixed bug when tags with code also have a block [reported by chrisirhc]
0.5.2 / 2010-10-05
Added; Text introduces newlines to mimic the grammar. Whitespace handling is a little tricky with this sort of grammar. Jade will now mimic the written grammar, meaning that text blocks using the “|” margin character will introduce a literal newline, where as immediate tag text (ex “a(href=’#’) Link”) will not.

This may not be ideal, but it makes more sense than what Jade was previously doing.

Added Tag#text to disambiguate between immediate / block text

Removed pretty option (was kinda useless in the state it was in)
Reverted ignoring of newlines. Closes #92.
Fixed; Parser#parse() ignoring newlines
0.5.1 / 2010-10-04
Added many examples
Added; compiler api is now public
Added; filters can accept / manipulate the parse tree
Added filter attribute support. Closes #79
Added LL(*) capabilities
Performance; wrapping code blocks in {} instead of (function(){}).call(this)
Performance; Optimized attribute buffering
Fixed trailing newlines in blocks
0.5.0 / 2010-09-11
Major refactor. Logic now separated into lexer/parser/compiler for future extensibility.
Added pretty option
Added parse tree output for debug option
Added new examples
Removed context option, use scope
0.4.1 / 2010-09-09
Added support for arbitrary indentation for single-line comments. Closes #71
Only strip first space in text (ex ‘| foo’ will buffer ‘ foo’)
0.4.0 / 2010-08-30
Added tab naive support (tabs are converted to a single indent, aka two spaces). Closes #24
Added unbuffered comment support. Closes #62
Added hyphen support for tag names, ex: “fb:foo-bar”
Fixed bug with single quotes in comments. Closes #61
Fixed comment whitespace issue, previously padding. Closes #55
0.3.0 / 2010-08-04
Added single line comment support. Closes #25
Removed CDATA from :javascript filter. Closes #47
Removed sys local
Fixed code following tag
0.2.4 / 2010-08-02
Added Buffer support to render()
Fixed filter text block exception reporting
Fixed tag exception reporting
0.2.3 / 2010-07-27
Fixed newlines before block
Fixed; tag text allowing arbitrary trailing whitespace
0.2.2 / 2010-07-16
Added support for jade.renderFile() to utilize primed cache
Added link to textmate bundle
Fixed filter issue with single quotes
Fixed hyphenated attr bug
Fixed interpolation single quotes. Closes #28
Fixed issue with comma in attrs
0.2.1 / 2010-07-09
Added support for node-discount and markdown-js depending on which is available.

Added support for tags to have blocks and text. this kinda fucks with arbitrary whitespace unfortunately, but also fixes trailing spaces after tags with blocks.

Caching generated functions. Closes #46

0.2.0 / 2010-07-08
Added – each support for readable iteration
Added markdown-js support (no compilation required)
Removed node-discount support
0.1.0 / 2010-07-05
Added ${} support for interpolation. Closes #45
Added support for quoted attr keys: label(“for”: ‘something’) is allowed (although not required) [Guillermo]
Added :less filter [jakeluer]
0.0.2 / 2010-07-03
Added context as synonym for scope option [Guillermo]
Fixed attr splitting: div(style:”color: red”) is now allowed
Fixed issue with ( and ) within attrs: a(class: (a ? ‘a’ : ‘b’)) is now allowed
Fixed issue with leading / trailing spaces in attrs: a( href=”#” ) is now allowed [Guillermo]