5 * Added `mixin` support
6 * Added `include` support
7 * Added array support for the class attribute
12 * Fixed filter indentation bug. Closes #243
17 * Fixed empty strings support. Closes #223
18 * Fixed conditional comments documentation. Closes #245
24 * Fixed block comments
29 * Fixed attribute interpolation with double quotes. Fixes #232 [topaxi]
34 * Added `doctype` as alias of `!!!`
35 * Added; doctype value is now case-insensitive
36 * Added attribute interpolation support
37 * Fixed; retain original indentation spaces in text blocks
42 * Fixed text block indentation [Laszlo Bacsi]
43 * Changed; utilizing devDependencies
44 * Fixed try/catch issue with renderFile(). Closes #227
45 * Removed attribute ":" support, use "=" (option for ':' coming soon)
50 * Added `self` object to avoid poor `with(){}` performance [masylum]
51 * Added `doctype` option [Jeremy Larkin]
61 * Fixed CS `Object.keys()` [reported by robholland]
66 * Added error context after the lineno
67 * Added; indicate failing lineno with ">"
68 * Added `Object.keys()` for the client-side
69 * Fixed attr strings when containing the opposite quote. Closes 207
70 * Fixed attr issue with js expressions within strings
71 * Fixed single-quote filter escape bug. Closes #196
77 * Added `html` doctype, same as "5"
78 * Fixed `pre`, no longer text-only
83 * Fixed support for quoted attribute keys ex `rss("xmlns:atom"="atom")`
88 * Fixed pipeless text bug with missing outdent
93 * Fixed `support/compile.js` to exclude browser js in node
94 * Fixes for IE [Patrick Pfeiffer]
99 * Added AST-filter support back in the form of `<tag>[attrs]<:><block>`
104 * Added `Block#unshift(node)`
105 * Added `jade.js` for the client-side to the repo
106 * Added `jade.min.js` for the client-side to the repo
107 * Removed need for pipes in filters. Closes #185
108 Note that this _will_ break filters used to
109 manipulate the AST, until we have a different
115 * Added jade `--version`
116 * Removed `${}` interpolation support, use `#{}`
121 * Fixed invalid `.map()` call due to recent changes
126 * Added client-side browser support via `make jade.js` and `make jade.min.js`.
131 * Fixed preservation of newlines in text blocks
136 * Fixed jade(1) stdio
141 * Added `mkdirs()` to jade(1)
142 * Added jade(1) stdio support
143 * Added new features to jade(1), `--watch`, recursive compilation etc [khingebjerg]
144 * Fixed pipe-less text newlines
145 * Removed jade(1) `--pipe` flag
150 * Fixed parenthesized expressions in attrs. Closes #170
151 * Changed; default interpolation values `== null` to ''. Closes #167
156 * Added pipe-less text support with immediate ".". Closes #157
157 * Fixed object support in attrs
158 * Fixed array support for attrs
163 * Fixed issue with expressions being evaluated several times. closes #162
168 * Added markdown, discount, and markdown-js support to `:markdown`. Closes #160
169 * Removed `:discount`
174 * Added `pre` pipe-less text support (and auto-escaping)
179 * Added block-expansion support. Closes #74
180 * Added support for multi-line attrs without commas. Closes #65
185 * Fixed `script()` etc pipe-less text with attrs
190 * Removed `:javascript` filter (it doesn't really do anything special, use `script` tags)
191 * Added pipe-less text support. Tags that only accept text nodes (`script`, `textarea`, etc) do not require `|`.
192 * Added `:text` filter for ad-hoc pipe-less
193 * Added flexible indentation. Tabs, arbitrary number of spaces etc
194 * Added conditional-comment support. Closes #146
195 * Added block comment support
197 * Added `:stylus` filter
198 * Added `:discount` filter
199 * Fixed; auto-detect xml and do not self-close tags. Closes #147
200 * Fixed whitespace issue. Closes #118
201 * Fixed attrs. `,`, `=`, and `:` within attr value strings are valid Closes #133
202 * Fixed; only output "" when code == null. Ex: `span.name= user.name` when undefined or null will not output "undefined". Closes #130
203 * Fixed; throw on unexpected token instead of hanging
208 * Added `each` support for Array-like objects [guillermo]
213 * Added CSRF example, showing how you can transparently add inputs to a form
214 * Added link to vim-jade
215 * Fixed self-closing col support [guillermo]
216 * Fixed exception when getAttribute or removeAttribute run into removed attributes [Naitik Shah]
221 * Added unescaped interpolation variant `!{code}`. Closes #124
222 * Changed; escape interpolated code by default `#{code}`
227 * Fixed; hyphen in get `tag()`
232 * Added `exports.compile(str, options)`
233 * Renamed internal `_` to `__`, since `_()` is commonly used for translation
238 * Add _coffeescript_ filter [Michael Hampton]
239 * Added link to _slim_; a ruby implementation
240 * Fixed quoted attributes issue.
242 * Fixed attribute issue with over greedy regexp.
243 Previously "p(foo=(((('bar')))))= ((('baz')))"
244 would __fail__ for example since the regexp
245 would lookahead to far. Now we simply pair
251 * Adding newline when using tag code when preceding text
252 * Assume newline in tag text when preceding text
253 * Changed; retain leading text whitespace
254 * Fixed code block support to prevent multiple buffer openings [Jake Luer]
255 * Fixed nested filter support
260 * Fixed bug when tags with code also have a block [reported by chrisirhc]
265 * Added; Text introduces newlines to mimic the grammar.
266 Whitespace handling is a little tricky with this sort of grammar.
267 Jade will now mimic the written grammar, meaning that text blocks
268 using the "|" margin character will introduce a literal newline,
269 where as immediate tag text (ex "a(href='#') Link") will not.
271 This may not be ideal, but it makes more sense than what Jade was
274 * Added `Tag#text` to disambiguate between immediate / block text
275 * Removed _pretty_ option (was kinda useless in the state it was in)
276 * Reverted ignoring of newlines. Closes #92.
277 * Fixed; `Parser#parse()` ignoring newlines
282 * Added many examples
283 * Added; compiler api is now public
284 * Added; filters can accept / manipulate the parse tree
285 * Added filter attribute support. Closes #79
286 * Added LL(*) capabilities
287 * Performance; wrapping code blocks in {} instead of `(function(){}).call(this)`
288 * Performance; Optimized attribute buffering
289 * Fixed trailing newlines in blocks
294 * __Major__ refactor. Logic now separated into lexer/parser/compiler for future extensibility.
295 * Added _pretty_ option
296 * Added parse tree output for _debug_ option
298 * Removed _context_ option, use _scope_
303 * Added support for arbitrary indentation for single-line comments. Closes #71
304 * Only strip first space in text (ex '| foo' will buffer ' foo')
309 * Added tab naive support (tabs are converted to a single indent, aka two spaces). Closes #24
310 * Added unbuffered comment support. Closes #62
311 * Added hyphen support for tag names, ex: "fb:foo-bar"
312 * Fixed bug with single quotes in comments. Closes #61
313 * Fixed comment whitespace issue, previously padding. Closes #55
318 * Added single line comment support. Closes #25
319 * Removed CDATA from _:javascript_ filter. Closes #47
320 * Removed _sys_ local
321 * Fixed code following tag
326 * Added Buffer support to `render()`
327 * Fixed filter text block exception reporting
328 * Fixed tag exception reporting
333 * Fixed newlines before block
334 * Fixed; tag text allowing arbitrary trailing whitespace
339 * Added support for `jade.renderFile()` to utilize primed cache
340 * Added link to [textmate bundle](http://github.com/miksago/jade-tmbundle)
341 * Fixed filter issue with single quotes
342 * Fixed hyphenated attr bug
343 * Fixed interpolation single quotes. Closes #28
344 * Fixed issue with comma in attrs
349 * Added support for node-discount and markdown-js
350 depending on which is available.
352 * Added support for tags to have blocks _and_ text.
353 this kinda fucks with arbitrary whitespace unfortunately,
354 but also fixes trailing spaces after tags _with_ blocks.
356 * Caching generated functions. Closes #46
361 * Added `- each` support for readable iteration
362 * Added [markdown-js](http://github.com/evilstreak/markdown-js) support (no compilation required)
363 * Removed node-discount support
368 * Added `${}` support for interpolation. Closes #45
369 * Added support for quoted attr keys: `label("for": 'something')` is allowed (_although not required_) [Guillermo]
370 * Added `:less` filter [jakeluer]
375 * Added `context` as synonym for `scope` option [Guillermo]
376 * Fixed attr splitting: `div(style:"color: red")` is now allowed
377 * Fixed issue with `(` and `)` within attrs: `a(class: (a ? 'a' : 'b'))` is now allowed
378 * Fixed issue with leading / trailing spaces in attrs: `a( href="#" )` is now allowed [Guillermo]