11.11.0 / 2015-06-12
2==================
3
4  * Added block code support ([@alephyud](https://github.com/alephyud))
5  * Improved runtime performance of mixins significantly ([Andreas Lubbe](https://github.com/alubbe))
6  * Improved runtime performance of pug's string escaping ([Andreas Lubbe](https://github.com/alubbe)) and ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
7  * Better line number counting for pipeless text ([@alephyud](https://github.com/alephyud))
8
9
101.10.0 / 2015-05-25
11==================
12
13  * 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](http://www.forbeslindesay.co.uk/))
14  * CLI: added a flag to keep directory hierarchy when a directory is specified - this behavior will be the default in 2.0.0 ([@TimothyGu](https://github.com/TimothyGu))
15  * disabled 'compileDebug' flag by default when used with express in production mode ([Andreas Lubbe](https://github.com/alubbe))
16  * Fixed a memory leak on modern versions of Chrome as well as node 0.12 and iojs ([Andreas Lubbe](https://github.com/alubbe))
17  * update website ([@GarthDB](https://github.com/GarthDB))
18
191.9.2 / 2015-01-18
20==================
21
22  * Do not ignore some parser errors for mismatched parenthesis ([@TimothyGu](https://github.com/TimothyGu))
23  * Warn for `:` that is not followed by a space ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
24  * Fix #1794 (a bizzare bug with a certain combination of inheritance, mixins and &attributes) ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
25  * Add `compileClientWithDependenciesTracked` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
26  * Support comments in `case` blocks ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
27  * Fix blocks in nested mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
28  * Lots more documentation ([@enlore](https://github.com/enlore))
29  * Fix watching in CLI ([@pavel](https://github.com/pavel))
30
311.9.1 / 2015-01-17
32==================
33
34  * Clean up path/fs functions in CLI as we no longer support node@0.6 ([@TimothyGu](https://github.com/TimothyGu))
35  * Update commander ([@TimothyGu](https://github.com/TimothyGu))
36  * Document `cache` and `parser` options ([@TimothyGu](https://github.com/TimothyGu))
37  * Fix bug in 1.9.0 where we read the file if cache was enabled, even if a string was provided ([@TimothyGu](https://github.com/TimothyGu))
38  * Fix year in changelog ([@tomByrer](https://github.com/tomByrer))
39
401.9.0 / 2015-01-13
41==================
42
43  * Fix `--watch` sometimes dying when there were file-system errors ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
44  * Fix `--watch` by using `fs.watchFile` correctly ([@TimothyGu](https://github.com/TimothyGu))
45  * Fix errors with using the CLI to compile from stdin
46  * Better looking badges ([@TimothyGu](https://github.com/TimothyGu))
47  * Added `--extension` to CLI([@nicocedron](https://github.com/nicocedron) and [@TimothyGu](https://github.com/TimothyGu))
48  * Refactor and improve internal cache handling ([@TimothyGu](https://github.com/TimothyGu))
49  * Loads more tests ([@TimothyGu](https://github.com/TimothyGu))
50
511.8.2 / 2014-12-16
52==================
53
54  * Use `-` as the default filename when using stdin on CLI ([@TimothyGu](https://github.com/TimothyGu))
55  * Prevent some compiler errors being silenced ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
56  * Remove use of non-standard `string.trimLeft()` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
57  * Fix bug in CLI when no name was provided for child template ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
58  * Remove dependency on monocle (hopefully fixing installation on 0.8) ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
59  * Add gitter chat room ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
60
611.8.1 / 2014-11-30
62==================
63
64  * Fix corner case when the pretty option was passed a non-string truthy value ([@TimothyGu](https://github.com/TimothyGu))
65  * Warn when `lexer` is given as an option ([@TimothyGu](https://github.com/TimothyGu))
66  * Update dependencies ([@TimothyGu](https://github.com/TimothyGu))
67
681.8.0 / 2014-11-28
69==================
70
71  * Fix empty text-only block ([@rlidwka](https://github.com/rlidwka))
72  * Warn about future change to ISO 8601 style dates ([@TimothyGu](https://github.com/TimothyGu) and [@ForbesLindesay](http://www.forbeslindesay.co.uk/))
73  * Add warnings when data-attributes contain ampersands ([@TimothyGu](https://github.com/TimothyGu))
74  * Allow custom pretty indentation ([@bfred-it](https://github.com/bfred-it))
75  * Add support for an object in the style attribute ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
76  * Add support for an object in the class attribute ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
77  * Ignore fs module in browser builds ([@sokra](https://github.com/sokra))
78  * Update dependencies ([@hildjj](https://github.com/hildjj))
79  * Check mixin arguments are valid JavaScript expressions ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
80  * Remove symlink ([@slang800](https://github.com/slang800))
81
821.7.0 / 2014-09-17
83==================
84
85  * Add Doctype option on command line ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
86  * Support ES6 style rest args in mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
87  * Fix support for unicode newlines (\u2028, \u2029) ([@rlidwka](https://github.com/rlidwka))
88  * Expose `globals` option from the `with` module ([@sokra](https://github.com/sokra))
89  * Lots of new documentation ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
90
911.6.0 / 2014-08-31
92==================
93
94  * Allow optional white space after `+` when calling a mixin ([@char101](https://github.com/char101))
95  * Use void-elements module to replace internal self-closing list ([@hemanth](https://github.com/hemanth))
96  * Fix a warning that eroniously warned for un-used blocks if in an extending template from an include (Reported by [@Dissimulazione](https://github.com/Dissimulazione))
97  * Fix mixins not working at end of file ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
98  * Fix error reporting when mixin block was followed by blank lines ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
99
100
1011.5.0 / 2014-07-23
102==================
103
104  * Added compileFile API ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
105  * Fix line number in un-used blocks warning ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
106  * Fix a warning that eroniously warned for un-used blocks if they were under another block (Reported by [@pesho](https://github.com/pesho))
107
1081.4.2 / 2014-07-16
109==================
110
111  * Fix a warning that eroniously warned for un-used blocks if they were under a "Code" element (Reported by [@narirou](https://github.com/narirou))
112
1131.4.1 / 2014-07-16
114==================
115
116  * Fix an error that sometimes resulted in 'unexpected token "pipless-text"' being erroniously thrown (Reported by [@Artazor](https://github.com/Artazor) and [@thenitai](https://github.com/thenitai))
117
1181.4.0 / 2014-07-15
119==================
120
121  * Fix CLI so it keeps watching when errors occur ([@AndrewTsao](https://github.com/AndrewTsao))
122  * Support custom names for client side templates ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@dscape](https://github.com/dscape))
123  * 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](https://github.com/regular))
124  * Track dependencies so file watchers can be more clever ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@sdether](https://github.com/sdether))
125  * Allow passing options to filtered includes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
126  * Fix bugs with indentation in filters ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@lackac](https://github.com/lackac))
127  * Warn on block names that are never used ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
128
1291.3.1 / 2014-04-04
130==================
131
132  * Fix error with tags in xml that are self-closing in html ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
133  * Fix error message for inline tags with content ([@hiddentao](https://github.com/hiddentao))
134
1351.3.0 / 2014-03-02
136==================
137
138  * Fix a bug where sometimes mixins were removed by an optimisation even though they were being called ([@ForbesLindesay](http://www.forbeslindesay.co.uk/), reported by [@leider](https://github.com/leider))
139  * Updated with to support automatically detecting when a value is "global" and removed redundant `options.globals` option ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
140  * Improve warnings for tags with multiple attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
141  * Deprecate (with a warning) `node.clone`, `block.replace`, `attrs.removeAttribute`, `attrs.getAttribute` - these are all internal APIs for the AST ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
142
1431.2.0 / 2014-02-26
144==================
145
146  * Use variables instead of properties of pug, improving performance and reliability with nested templates ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
147  * Support compiling templates from stdin via a user typing ([@yorkie](https://github.com/yorkie))
148  * Lazily add mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
149  * Fix case fall-through ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
150  * Earlier errors for `when` without `case` and `else` without `if` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
151  * Allow `if`/`else` etc. to not have a block.
152  * Remove lib-cov legacy to make browserify work better ([@silver83](https://github.com/silver83))
153  * Add and improve test coverage using istanbul ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
154
1551.1.5 / 2014-01-19
156==================
157
158  * Add filename to and fix line numbers for missing space before text warning (@ijin82)
159  * Fix filenames for some error reporting in extends/includes (@doublerebel)
160  * 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](http://www.forbeslindesay.co.uk/))
161
1621.1.4 / 2014-01-09
163==================
164
165  * Fix a corner case where a mixin was called with `&attributes` but no other attributes and a block ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
166
1671.1.3 / 2014-01-09
168==================
169
170  * Fix failure of npm prepublish not running
171
1721.1.2 / 2014-01-09
173==================
174
175  * Fix same interaction of `&attributes` with `false` `null` or `undefined` but combined with dynamic attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
176
1771.1.1 / 2014-01-09
178==================
179
180  * Fix a bug when `&attributes` is combined with static attributes that evaluate to `false` or `null` or `undefined` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
181
1821.1.0 / 2014-01-07
183==================
184
185  * Fix class merging to work as documented ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
186  * Throw an error when the same attribute is duplicated multiple times ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
187  * Move more errors into the parser/lexer so they have more info about line numbers ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
188  * Support mixin blocks at the end of files ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
189
1901.0.2 / 2013-12-31
191==================
192
193  * Fix a bug when `&attributes` is combined with dynamic attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
194
1951.0.1 / 2013-12-29
196==================
197
198  * Allow self closing tags to contian whitespace ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
199  * Allow tags to have a single white space after them ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
200  * Support text bodies of tags that begin with `//` rather than treating them as comments ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
201
2021.0.0 / 2013-12-22
203==================
204
205  * No longer support node@0.8 ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
206  * Fix error reporting in layouts & includes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
207  * Allow a list of 'globals' to be passed as an array at compile time & don't automatically expose all globals ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
208  * Escape apostrophes in data attributes (@qualiabyte)
209  * Fix mixin/block interaction ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) & [@paulyoung](https://github.com/paulyoung))
210  * Ignore trailing space after mixin declaration ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
211  * Make literal `.` work as expected ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
212  * Remove implicit text only for script/style ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
213  * Stop parsing comments and remove support for conditional comments ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
214  * Make filtering includes explicit ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
215  * Remove special assignment syntax ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
216  * Remove `!!!` shortcut for `doctype` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
217  * Remove `5` shorcut for `html` doctype ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
218  * Remove `colons` option from the distant past ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
219  * Add a sepatate `compileClient` and `compileFileClient` to replace the `client` option ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
220  * Remove polyfills for supporting old browsers ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
221  * Allow interpolation for mixin names ([@jeromew](https://github.com/jeromew)
222  * Use `node.type` instead of `node.constructor.name` so it can be minified ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
223  * Allow hyphens in filter names ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
224  * Throw an error if a self closing tag has content ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
225  * Support inline tags ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
226  * Replace `attributes` magic attribute with `&attributes(attributes)` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
227  * Remove automatic tag wrapping for filters, you can just put the tags in yourself now ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))
228  * Remove whitespace from tags nested inside pre tags ([@markdalgleish](http://markdalgleish.com))
229
2300.35.0 / 2013-08-21
231===================
232
233  * Add support for space separated attributes (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))
234  * Add earlier errors for invalid JavaScript expressions (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))
235  * Fix parsing files with UTF8 BOMs when they are includes or parent/layout templates (thanks to [@kiinoo](https://github.com/kiinoo))
236
2370.34.1 / 2013-07-26
238===================
239
240  * fix render file not working when called with callback (reported by [@xieren58](https://github.com/xieren58))
241
2420.34.0 / 2013-07-26
243===================
244
245  * callbacks only called once for async methods even if they throw (reported by [@davidcornu](https://github.com/davidcornu))
246  * HTML comments are pretty printed better (thanks to [@eddiemonge](https://github.com/eddiemonge))
247  * callbacks are optional and leaving them out results in synchronous operation (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))
248  * empty filter nodes are now permitted (thanks to [@coderanger](https://github.com/coderanger))
249  * overhaul website and documentation (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/)), much more of this to come.
250
2510.33.0 / 2013-07-12
252===================
253
254  * Hugely more powerful error reporting (especially with `compileDebug` set explicitly to `true`)
255  * Add a warning for tags with multiple attributes
256  * be strict about requiring newlines after tags to fix some odd corner cases
257  * fix escaping of class to allow it to be unescaped (thanks to [@christiangenco](https://github.com/christiangenco))
258
2590.32.0 / 2013-06-28
260===================
261
262  * remove `pug.version` and fix `pug --version`
263  * add file name and line number to deprecation warnings
264  * use constantinople for better constant detection
265  * update `with` for a massive performance upgrade at compile time
266
2670.31.2 / 2013-06-07
268===================
269
270  * fix overzealous deprecation warnings
271
2720.31.1 / 2013-05-31
273===================
274
275  * fix line endings for executable command
276  * fix `locals` variable being undefined
277  * fix an obscure bug that could occur if multiple mixins interact badly (see [substack/lexical-scope#13](https://github.com/substack/lexical-scope/issues/13))
278
2790.31.0 / 2013-05-30
280==================
281
282  * deprecate implicit text-only `script` and `style` tags
283  * make `with` at compile time using `lexical-scope`
284  * add `options.parser` that behaves exactly like `options.compiler`
285  * add "component.json" for component (runtime) support
286  * removed `hasOwnProperty` check in each loops
287  * removed .min files from the repository (people can just generate these themselves)
288  * use browserify to compile client side libraries
289  * fix buggy block extending should now be fixed
290  * fix preserve case of custom doctypes
291  * fix regexps in attributes sometimes not being accepted
292  * fix allow `$` sign in each loop variable names
293  * fix mixins with buffered code on the same line
294  * fix separate class names by ` ` rather than `,` (was sometimes incorrect)
295
2960.30.0 / 2013-04-25
297==================
298
299  * add support for 'include' and 'extends' to use paths relative to basedir
300  * fix accidental calling of functions in iteration block. Closes #986
301  * fix: skip rethrow on client
302  * fix each/else prefixed with `-`
303  * fix multi-block prepend/append
304  * swap -o and -O, set -o to --out
305
3060.29.0 / 2013-04-16
307==================
308
309  * add "monocle" for watcher that actually works...
310  * fix interpolation in blocks of text
311  * fix attribute interpolation
312  * move filters to an external library
313  * fix JavaScript escaping corner cases
314
3150.28.2 / 2013-03-04
316==================
317
318  * wtf coffeescript is not a dep
319
3200.28.1 / 2013-01-10
321==================
322
323  * add passing of filename to include filters
324  * fix wrong new lines for include filters
325
3260.28.0 / 2013-01-08
327==================
328
329  * add .css and .js "filters". re #438
330  * add include filters. Closes #283
331  * fix "class:" within attribute escaping
332  * removing ast filters
333  * things I can't read:
334  * 反馈地址
335  * 样式
336  * 联系
337  * 初稿,翻译完
338  * 接受大鸟的建议
339  * 头晕,翻译一点点
340  * 到过滤器翻译完毕
341  * 翻译一部分
342  * 中文翻译单独放
343  * 特性部分
344  * 再翻
345  * 翻译一点点
346
3470.27.7 / 2012-11-05
348==================
349
350  * fix each/else clause for enumerated objects
351  * fix #764 (incorrect line number for error messages)
352  * fix double-escaping of interpolated js slashes. Closes #784
353
3540.27.6 / 2012-10-05
355==================
356
357  * Included templates can not override blocks of their parent. Closes #699
358
3590.27.5 / 2012-09-24
360==================
361
362  * fix attr interpolation escaping. Closes #771
363
3640.27.4 / 2012-09-18
365==================
366
367  * fix include yields. Closes #770
368
3690.27.3 / 2012-09-18
370==================
371
372  * fix escaping of interpolation. Closes #769
373  * loosen "mkdirp" version restriction [TooTallNate]
374
3750.27.2 / 2012-08-07
376==================
377
378  * Revert "fixing string interpolation escaping #731", problems reported
379
3800.27.1 / 2012-08-06
381==================
382
383  * fix attribute interpolation escaping #731
384  * fix string interpolation escaping #731
385
3860.27.0 / 2012-07-26
387==================
388
389  * added ability to pass in json file to `--obj`
390  * add preliminary `each` `else` support. Closes #716
391  * fix doctype bug overlooked in #712
392  * fix stripping of utf-8 BOMs
393
3940.26.3 / 2012-06-25
395==================
396
397  * Update version of commander that supports node v0.8.
398
3990.26.2 / 2012-06-22
400==================
401
402  * Added --options alias of --obj
403  * Added reserved word conflict prevention in Google's Closure Compiler
404  * Added tag interpolation. Closes #657
405  * Allow the compiled client to use it's own pug util functions [3rd-Eden]
406  * Fixed `attrs()` escape bug [caseywebdev]
407
4080.26.1 / 2012-05-27
409==================
410
411  * Changed default doctype to __html5__
412  * Performance: statically compile attrs when possible [chowey]
413  * Fixed some class attribute merging cases
414  * Fixed so `block` doesn't consume `blockquotes` tag [chowey]
415  * Fixed backslashes in text nodes [chowey]
416  * Fixed / in text. Closes #638
417
4180.26.0 / 2012-05-04
419==================
420
421  * Added package.json __component__ support
422  * Added explicit self-closing tag support. Closes #605
423  * Added `block` statement
424  * Added mixin tag-like behaviour [chowey]
425  * Fixed mixins with extends [chowey]
426
4270.25.0 / 2012-04-18
428==================
429
430  * Added preliminary mixin block support. Closes #310
431  * Fixed whitespace handling in various situations [chowey]
432  * Fixed indentation in various situations [chowey]
433
4340.24.0 / 2012-04-12
435==================
436
437  * Fixed unescaped attribute compilation
438  * Fixed pretty-printing of text-only tags (__Warning__: this may affect rendering) [chowey]
439
4400.23.0 / 2012-04-11
441==================
442
443  * Added data-attr json stringification support. Closes #572
444  * Added unescaped attr support. Closes #198
445  * Fixed #1070, reverted mixin function statements
446  * Fixed pug.1 typo
447
4480.22.1 / 2012-04-04
449==================
450
451  * Fixed source tags. now self-closing. Closes #308
452  * Fixed: escape backslashes in coffeescript filter
453
4540.22.0 / 2012-03-22
455==================
456
457  * Added pug manpage (`man pug` after installation for docs)
458  * Added `-D, --no-debug` to pug(1)
459  * Added `-p, --pretty` to pug(1)
460  * Added `-c, --client` option to pug(1)
461  * Fixed `-o { client: true }` with stdin
462  * Fixed: skip blank lines in lexer (unless within pipeless text). Closes #399
463
4640.21.0 / 2012-03-10
465==================
466
467  * Added new input/output test suite using Mocha's string diffing
468  * Added alias `extend` -> `extends`. Closes #527 [guillermo]
469  * Fixed include escapes. Closes #513
470  * Fixed block-expansion with .foo and #foo short-hands. Closes #498
471
4720.20.3 / 2012-02-16
473==================
474
475  * Changed: pass `.filename` to filters only
476
4770.20.2 / 2012-02-16
478==================
479
480  * Fixed `:stylus` import capabilities, pass .filename
481
4820.20.1 / 2012-02-02
483==================
484
485  * Fixed Block#includeBlock() with textOnly blocks
486
4870.20.0 / 2011-12-28
488==================
489
490  * Added a browser example
491  * Added `yield` for block `include`s
492  * Changed: replaced internal `__` var with `__pug` [chrisleishman]
493  * Fixed two globals. Closes #433
494
4950.19.0 / 2011-12-02
496==================
497
498  * Added block `append` / `prepend` support. Closes #355
499  * Added link in readme to pug-mode for Emacs
500  * Added link to python implementation
501
5020.18.0 / 2011-11-21
503==================
504
505  * Changed: only ['script', 'style'] are text-only. Closes #398'
506
5070.17.0 / 2011-11-10
508==================
509
510  * pug.renderFile() is back! (for express 3.x)
511  * Fixed `Object.keys()` failover bug
512
5130.16.4 / 2011-10-24
514==================
515
516  * Fixed a test due to reserved keyword
517  * Fixed: commander 0.1.x dep for 0.5.x
518
5190.16.3 / 2011-10-24
520==================
521
522  * Added: allow leading space for conditional comments
523  * Added quick implementation of a switch statement
524  * Fixed parens in mixin args. Closes #380
525  * Fixed: include files with a .pug extension as pug files
526
5270.16.2 / 2011-09-30
528==================
529
530  * Fixed include regression. Closes #354
531
5320.16.1 / 2011-09-29
533==================
534
535  * Fixed unexpected `else` bug when compileDebug: false
536  * Fixed attr state issue for balancing pairs. Closes #353
537
5380.16.0 / 2011-09-26
539==================
540
541  * Added `include` block support. Closes #303
542  * Added template inheritance via `block` and `extends`. Closes #242
543  * Added 'type="text/css"' to the style tags generated by filters.
544  * Added 'uglifyjs' as an explicit devDependency.
545  * Added  -p, --path <path> flag to pug(1)
546  * Added support for any arbitrary doctype
547  * Added `pug.render(str[,options], fn)` back
548  * Added first-class `while` support
549  * Added first-class assignment support
550  * Fixed runtime.js `Array.isArray()` polyfill. Closes #345
551  * Fixed: set .filename option in pug(1) when passing filenames
552  * Fixed `Object.keys()` polyfill typo. Closes #331
553  * Fixed `include` error context
554  * Renamed magic "index" to "$index". Closes #350
555
5560.15.4 / 2011-09-05
557==================
558
559  * Fixed script template html. Closes #316
560  * Revert "Fixed script() tag with trailing ".". Closes #314"
561
5620.15.3 / 2011-08-30
563==================
564
565  * Added Makefile example. Closes #312
566  * Fixed script() tag with trailing ".". Closes #314
567
5680.15.2 / 2011-08-26
569==================
570
571  * Fixed new conditional boundaries. Closes #307
572
5730.15.1 / 2011-08-26
574==================
575
576  * Fixed pug(1) support due to `res.render()` removal
577  * Removed --watch support (use a makefile + watch...)
578
5790.15.0 / 2011-08-26
580==================
581
582  * Added `client` option to reference runtime helpers
583  * Added `Array.isArray()` for runtime.js as well
584  * Added `Object.keys()` for the client-side runtime
585  * Added first-class `if`, `unless`, `else` and `else if` support
586  * Added first-class `each` / `for` support
587  * Added `make benchmark` for continuous-bench
588  * Removed `inline` option, SS helpers are no longer inlined either
589  * Removed `Parser#debug()`
590  * Removed `pug.render()` and `pug.renderFile()`
591  * Fixed runtime.js `escape()` bug causing window.escape to be used
592  * Fixed a bunch of tests
593
5940.14.2 / 2011-08-16
595==================
596
597  * Added `include` support for non-pug files
598  * Fixed code indentation when followed by newline(s). Closes #295 [reported by masylum]
599
6000.14.1 / 2011-08-14
601==================
602
603  * Added `colons` option for everyone stuck with ":". Closes #231
604  * Optimization: consecutive lines are merged in compiled js
605
6060.14.0 / 2011-08-08
607==================
608
609  * Added array iteration with index example. Closes #276
610  * Added _runtime.js_
611  * Added `compileDebug` option to enable lineno instrumentation
612  * Added `inline` option to disable inlining of helpers (for client-side)
613
6140.13.0 / 2011-07-13
615==================
616
617  * Added `mixin` support
618  * Added `include` support
619  * Added array support for the class attribute
620
6210.12.4 / 2011-06-23
622==================
623
624  * Fixed filter indentation bug. Closes #243
625
6260.12.3 / 2011-06-21
627==================
628
629  * Fixed empty strings support. Closes #223
630  * Fixed conditional comments documentation. Closes #245
631
6320.12.2 / 2011-06-16
633==================
634
635  * Fixed `make test`
636  * Fixed block comments
637
6380.12.1 / 2011-06-04
639==================
640
641  * Fixed attribute interpolation with double quotes. Fixes #232 [topaxi]
642
6430.12.0 / 2011-06-03
644==================
645
646  * Added `doctype` as alias of `!!!`
647  * Added; doctype value is now case-insensitive
648  * Added attribute interpolation support
649  * Fixed; retain original indentation spaces in text blocks
650
6510.11.1 / 2011-06-01
652==================
653
654  * Fixed text block indentation [Laszlo Bacsi]
655  * Changed; utilizing devDependencies
656  * Fixed try/catch issue with renderFile(). Closes #227
657  * Removed attribute ":" support, use "=" (option for ':' coming soon)
658
6590.11.0 / 2011-05-14
660==================
661
662  * Added `self` object to avoid poor `with(){}` performance [masylum]
663  * Added `doctype` option [Jeremy Larkin]
664
6650.10.7 / 2011-05-04
666==================
667
668  * expose Parser
669
6700.10.6 / 2011-04-29
671==================
672
673  * Fixed CS `Object.keys()` [reported by robholland]
674
6750.10.5 / 2011-04-26
676==================
677
678  * Added error context after the lineno
679  * Added; indicate failing lineno with ">"
680  * Added `Object.keys()` for the client-side
681  * Fixed attr strings when containing the opposite quote. Closes 207
682  * Fixed attr issue with js expressions within strings
683  * Fixed single-quote filter escape bug. Closes #196
684
685
6860.10.4 / 2011-04-05
687==================
688
689  * Added `html` doctype, same as "5"
690  * Fixed `pre`, no longer text-only
691
6920.10.3 / 2011-03-30
693==================
694
695  * Fixed support for quoted attribute keys ex `rss("xmlns:atom"="atom")`
696
6970.10.2 / 2011-03-30
698==================
699
700  * Fixed pipeless text bug with missing outdent
701
7020.10.1 / 2011-03-28
703==================
704
705  * Fixed `support/compile.js` to exclude browser js in node
706  * Fixes for IE [Patrick Pfeiffer]
707
7080.10.0 / 2011-03-25
709==================
710
711  * Added AST-filter support back in the form of `<tag>[attrs]<:><block>`
712
7130.9.3 / 2011-03-24
714==================
715
716  * Added `Block#unshift(node)`
717  * Added `pug.js` for the client-side to the repo
718  * Added `pug.min.js` for the client-side to the repo
719  * Removed need for pipes in filters. Closes #185
720    Note that this _will_ break filters used to
721    manipulate the AST, until we have a different
722    syntax for doing so.
723
7240.9.2 / 2011-03-23
725==================
726
727  * Added pug `--version`
728  * Removed `${}` interpolation support, use `#{}`
729
7300.9.1 / 2011-03-16
731==================
732
733  * Fixed invalid `.map()` call due to recent changes
734
7350.9.0 / 2011-03-16
736==================
737
738  * Added client-side browser support via `make pug.js` and `make pug.min.js`.
739
7400.8.9 / 2011-03-15
741==================
742
743  * Fixed preservation of newlines in text blocks
744
7450.8.8 / 2011-03-14
746==================
747
748  * Fixed pug(1) stdio
749
7500.8.7  / 2011-03-14
751==================
752
753  * Added `mkdirs()` to pug(1)
754  * Added pug(1) stdio support
755  * Added new features to pug(1), `--watch`, recursive compilation etc [khingebjerg]
756  * Fixed pipe-less text newlines
757  * Removed pug(1) `--pipe` flag
758
7590.8.6 / 2011-03-11
760==================
761
762  * Fixed parenthesized expressions in attrs. Closes #170
763  * Changed; default interpolation values `== null` to ''. Closes #167
764
7650.8.5 / 2011-03-09
766==================
767
768  * Added pipe-less text support with immediate ".". Closes #157
769  * Fixed object support in attrs
770  * Fixed array support for attrs
771
7720.8.4 / 2011-03-08
773==================
774
775  * Fixed issue with expressions being evaluated several times. closes #162
776
7770.8.2 / 2011-03-07
778==================
779
780  * Added markdown, discount, and markdown-js support to `:markdown`. Closes #160
781  * Removed `:discount`
782
7830.8.1 / 2011-03-04
784==================
785
786  * Added `pre` pipe-less text support (and auto-escaping)
787
7880.8.0 / 2011-03-04
789==================
790
791  * Added block-expansion support. Closes #74
792  * Added support for multi-line attrs without commas. Closes #65
793
7940.7.1 / 2011-03-04
795==================
796
797  * Fixed `script()` etc pipe-less text with attrs
798
7990.7.0 / 2011-03-04
800==================
801
802  * Removed `:javascript` filter (it doesn't really do anything special, use `script` tags)
803  * Added pipe-less text support. Tags that only accept text nodes (`script`, `textarea`, etc) do not require `|`.
804  * Added `:text` filter for ad-hoc pipe-less
805  * Added flexible indentation. Tabs, arbitrary number of spaces etc
806  * Added conditional-comment support. Closes #146
807  * Added block comment support
808  * Added rss example
809  * Added `:stylus` filter
810  * Added `:discount` filter
811  * Fixed; auto-detect xml and do not self-close tags. Closes #147
812  * Fixed whitespace issue. Closes #118
813  * Fixed attrs. `,`, `=`, and `:` within attr value strings are valid  Closes #133
814  * Fixed; only output "" when code == null. Ex: `span.name= user.name` when undefined or null will not output "undefined". Closes #130
815  * Fixed; throw on unexpected token instead of hanging
816
8170.6.3 / 2011-02-02
818==================
819
820  * Added `each` support for Array-like objects [guillermo]
821
8220.6.2 / 2011-02-02
823==================
824
825  * Added CSRF example, showing how you can transparently add inputs to a form
826  * Added link to vim-pug
827  * Fixed self-closing col support [guillermo]
828  * Fixed exception when getAttribute or removeAttribute run into removed attributes [Naitik Shah]
829
8300.6.0 / 2010-12-19
831==================
832
833  * Added unescaped interpolation variant `!{code}`. Closes #124
834  * Changed; escape interpolated code by default `#{code}`
835
8360.5.7 / 2010-12-08
837==================
838
839  * Fixed; hyphen in get `tag()`
840
8410.5.6 / 2010-11-24
842==================
843
844  * Added `exports.compile(str, options)`
845  * Renamed internal `_` to `__`, since `_()` is commonly used for translation
846
8470.5.5 / 2010-10-30
848==================
849
850  * Add _coffeescript_ filter [Michael Hampton]
851  * Added link to _slim_; a ruby implementation
852  * Fixed quoted attributes issue.
853
854  * Fixed attribute issue with over greedy regexp.
855    Previously "p(foo=(((('bar')))))= ((('baz')))"
856    would __fail__ for example since the regexp
857    would lookahead to far. Now we simply pair
858    the delimiters.
859
8600.5.4 / 2010-10-18
861==================
862
863  * Adding newline when using tag code when preceding text
864  * Assume newline in tag text when preceding text
865  * Changed; retain leading text whitespace
866  * Fixed code block support to prevent multiple buffer openings [Jake Luer]
867  * Fixed nested filter support
868
8690.5.3 / 2010-10-06
870==================
871
872  * Fixed bug when tags with code also have a block [reported by chrisirhc]
873
8740.5.2 / 2010-10-05
875==================
876
877  * Added; Text introduces newlines to mimic the grammar.
878    Whitespace handling is a little tricky with this sort of grammar.
879    Pug will now mimic the written grammar, meaning that text blocks
880    using the "|" margin character will introduce a literal newline,
881    where as immediate tag text (ex "a(href='#') Link") will not.
882
883    This may not be ideal, but it makes more sense than what Pug was
884    previously doing.
885
886  * Added `Tag#text` to disambiguate between immediate / block text
887  * Removed _pretty_ option (was kinda useless in the state it was in)
888  * Reverted ignoring of newlines. Closes #92.
889  * Fixed; `Parser#parse()` ignoring newlines
890
8910.5.1 / 2010-10-04
892==================
893
894  * Added many examples
895  * Added; compiler api is now public
896  * Added; filters can accept / manipulate the parse tree
897  * Added filter attribute support. Closes #79
898  * Added LL(*) capabilities
899  * Performance; wrapping code blocks in {} instead of `(function(){}).call(this)`
900  * Performance; Optimized attribute buffering
901  * Fixed trailing newlines in blocks
902
9030.5.0 / 2010-09-11
904==================
905
906  * __Major__ refactor. Logic now separated into lexer/parser/compiler for future extensibility.
907  * Added _pretty_ option
908  * Added parse tree output for _debug_ option
909  * Added new examples
910  * Removed _context_ option, use _scope_
911
9120.4.1 / 2010-09-09
913==================
914
915  * Added support for arbitrary indentation for single-line comments. Closes #71
916  * Only strip first space in text (ex '|  foo' will buffer ' foo')
917
9180.4.0 / 2010-08-30
919==================
920
921  * Added tab naive support (tabs are converted to a single indent, aka two spaces). Closes #24
922  * Added unbuffered comment support. Closes #62
923  * Added hyphen support for tag names, ex: "fb:foo-bar"
924  * Fixed bug with single quotes in comments. Closes #61
925  * Fixed comment whitespace issue, previously padding. Closes #55
926
9270.3.0 / 2010-08-04
928==================
929
930  * Added single line comment support. Closes #25
931  * Removed CDATA from _:javascript_ filter. Closes #47
932  * Removed _sys_ local
933  * Fixed code following tag
934
9350.2.4 / 2010-08-02
936==================
937
938  * Added Buffer support to `render()`
939  * Fixed filter text block exception reporting
940  * Fixed tag exception reporting
941
9420.2.3 / 2010-07-27
943==================
944
945  * Fixed newlines before block
946  * Fixed; tag text allowing arbitrary trailing whitespace
947
9480.2.2 / 2010-07-16
949==================
950
951  * Added support for `pug.renderFile()` to utilize primed cache
952  * Added link to [textmate bundle](http://github.com/miksago/pug-tmbundle)
953  * Fixed filter issue with single quotes
954  * Fixed hyphenated attr bug
955  * Fixed interpolation single quotes. Closes #28
956  * Fixed issue with comma in attrs
957
9580.2.1 / 2010-07-09
959==================
960
961  * Added support for node-discount and markdown-js
962    depending on which is available.
963
964  * Added support for tags to have blocks _and_ text.
965    this kinda fucks with arbitrary whitespace unfortunately,
966    but also fixes trailing spaces after tags _with_ blocks.
967
968  * Caching generated functions. Closes #46
969
9700.2.0 / 2010-07-08
971==================
972
973  * Added `- each` support for readable iteration
974  * Added [markdown-js](http://github.com/evilstreak/markdown-js) support (no compilation required)
975  * Removed node-discount support
976
9770.1.0 / 2010-07-05
978==================
979
980  * Added `${}` support for interpolation. Closes #45
981  * Added support for quoted attr keys: `label("for": 'something')` is allowed (_although not required_) [Guillermo]
982  * Added `:less` filter [jakeluer]
983
9840.0.2 / 2010-07-03
985==================
986
987  * Added `context` as synonym for `scope` option [Guillermo]
988  * Fixed attr splitting: `div(style:"color: red")` is now allowed
989  * Fixed issue with `(` and `)` within attrs: `a(class: (a ? 'a' : 'b'))` is now allowed
990  * Fixed issue with leading / trailing spaces in attrs: `a( href="#" )` is now allowed [Guillermo]
991
992