- 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)
- 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)
- 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)
- Clean up path/fs functions in CLI as we no longer support [email protected] (@TimothyGu)
- Update commander (@TimothyGu)
- Document
cache
andparser
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)
- Fix
--watch
sometimes dying when there were file-system errors (@ForbesLindesay) - Fix
--watch
by usingfs.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)
- 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)
- 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)
- 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)
- 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 thewith
module (@sokra) - Lots of new documentation (@ForbesLindesay)
- 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)
- 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)
- Fix a warning that eroniously warned for un-used blocks if they were under a "Code" element (Reported by @narirou)
- Fix an error that sometimes resulted in 'unexpected token "pipless-text"' being erroniously thrown (Reported by @Artazor and @thenitai)
- 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)
- Fix error with tags in xml that are self-closing in html (@ForbesLindesay)
- Fix error message for inline tags with content (@hiddentao)
- 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)
- 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
withoutcase
andelse
withoutif
(@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)
- 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)
- Fix a corner case where a mixin was called with
&attributes
but no other attributes and a block (@ForbesLindesay)
- Fix failure of npm prepublish not running
- Fix same interaction of
&attributes
withfalse
null
orundefined
but combined with dynamic attributes (@ForbesLindesay)
- Fix a bug when
&attributes
is combined with static attributes that evaluate tofalse
ornull
orundefined
(@ForbesLindesay)
- 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)
- Fix a bug when
&attributes
is combined with dynamic attributes (@ForbesLindesay)
- 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)
- No longer support [email protected] (@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 fordoctype
(@ForbesLindesay) - Remove
5
shorcut forhtml
doctype (@ForbesLindesay) - Remove
colons
option from the distant past (@ForbesLindesay) - Add a sepatate
compileClient
andcompileFileClient
to replace theclient
option (@ForbesLindesay) - Remove polyfills for supporting old browsers (@ForbesLindesay)
- Allow interpolation for mixin names (@jeromew
- Use
node.type
instead ofnode.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)
- 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)
- fix render file not working when called with callback (reported by @xieren58)
- 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.
- Hugely more powerful error reporting (especially with
compileDebug
set explicitly totrue
) - 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)
- remove
jade.version
and fixjade --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
- fix overzealous deprecation warnings
- 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)
- deprecate implicit text-only
script
andstyle
tags - make
with
at compile time usinglexical-scope
- add
options.parser
that behaves exactly likeoptions.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
,
(was sometimes incorrect)
- 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
- 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
- wtf coffeescript is not a dep
- add passing of filename to include filters
- fix wrong new lines for include filters
- 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:
- 反馈地址
- 样式
- 联系
- 初稿,翻译完
- 接受大鸟的建议
- 头晕,翻译一点点
- 到过滤器翻译完毕
- 翻译一部分
- 中文翻译单独放
- 特性部分
- 再翻
- 翻译一点点
- fix each/else clause for enumerated objects
- fix #764 (incorrect line number for error messages)
- fix double-escaping of interpolated js slashes. Closes #784
- Included templates can not override blocks of their parent. Closes #699
- fix attr interpolation escaping. Closes #771
- fix include yields. Closes #770
- fix escaping of interpolation. Closes #769
- loosen "mkdirp" version restriction [TooTallNate]
- Revert "fixing string interpolation escaping #731", problems reported
- fix attribute interpolation escaping #731
- fix string interpolation escaping #731
- 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
- Update version of commander that supports node v0.8.
- 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]
- Changed default doctype to html5
- Performance: statically compile attrs when possible [chowey]
- Fixed some class attribute merging cases
- Fixed so
block
doesn't consumeblockquotes
tag [chowey] - Fixed backslashes in text nodes [chowey]
- Fixed / in text. Closes #638
- 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]
- Added preliminary mixin block support. Closes #310
- Fixed whitespace handling in various situations [chowey]
- Fixed indentation in various situations [chowey]
- Fixed unescaped attribute compilation
- Fixed pretty-printing of text-only tags (Warning: this may affect rendering) [chowey]
- Added data-attr json stringification support. Closes #572
- Added unescaped attr support. Closes #198
- Fixed #1070, reverted mixin function statements
- Fixed jade.1 typo
- Fixed source tags. now self-closing. Closes #308
- Fixed: escape backslashes in coffeescript filter
- 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
- 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
- Changed: pass
.filename
to filters only
- Fixed
:stylus
import capabilities, pass .filename
- Fixed Block#includeBlock() with textOnly blocks
- Added a browser example
- Added
yield
for blockinclude
s - Changed: replaced internal
__
var with__jade
[chrisleishman] - Fixed two globals. Closes #433
- Added block
append
/prepend
support. Closes #355 - Added link in readme to jade-mode for Emacs
- Added link to python implementation
- Changed: only ['script', 'style'] are text-only. Closes #398'
- jade.renderFile() is back! (for express 3.x)
- Fixed
Object.keys()
failover bug
- Fixed a test due to reserved keyword
- Fixed: commander 0.1.x dep for 0.5.x
- 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
- Fixed include regression. Closes #354
- Fixed unexpected
else
bug when compileDebug: false - Fixed attr state issue for balancing pairs. Closes #353
- Added
include
block support. Closes #303 - Added template inheritance via
block
andextends
. 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
- Fixed script template html. Closes #316
- Revert "Fixed script() tag with trailing ".". Closes #314"
- Added Makefile example. Closes #312
- Fixed script() tag with trailing ".". Closes #314
- Fixed new conditional boundaries. Closes #307
- Fixed jade(1) support due to
res.render()
removal - Removed --watch support (use a makefile + watch...)
- 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
andelse 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()
andjade.renderFile()
- Fixed runtime.js
escape()
bug causing window.escape to be used - Fixed a bunch of tests
- Added
include
support for non-jade files - Fixed code indentation when followed by newline(s). Closes #295 [reported by masylum]
- Added
colons
option for everyone stuck with ":". Closes #231 - Optimization: consecutive lines are merged in compiled js
- 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)
- Added
mixin
support - Added
include
support - Added array support for the class attribute
- Fixed filter indentation bug. Closes #243
- Fixed empty strings support. Closes #223
- Fixed conditional comments documentation. Closes #245
- Fixed
make test
- Fixed block comments
- Fixed attribute interpolation with double quotes. Fixes #232 [topaxi]
- Added
doctype
as alias of!!!
- Added; doctype value is now case-insensitive
- Added attribute interpolation support
- Fixed; retain original indentation spaces in text blocks
- 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)
- Added
self
object to avoid poorwith(){}
performance [masylum] - Added
doctype
option [Jeremy Larkin]
- expose Parser
- Fixed CS
Object.keys()
[reported by robholland]
- 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
- Added
html
doctype, same as "5" - Fixed
pre
, no longer text-only
- Fixed support for quoted attribute keys ex
rss("xmlns:atom"="atom")
- Fixed pipeless text bug with missing outdent
- Fixed
support/compile.js
to exclude browser js in node - Fixes for IE [Patrick Pfeiffer]
- Added AST-filter support back in the form of
<tag>[attrs]<:><block>
- 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.
- Added jade
--version
- Removed
${}
interpolation support, use#{}
- Fixed invalid
.map()
call due to recent changes
- Added client-side browser support via
make jade.js
andmake jade.min.js
.
- Fixed preservation of newlines in text blocks
- Fixed jade(1) stdio
- 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
- Fixed parenthesized expressions in attrs. Closes #170
- Changed; default interpolation values
== null
to ''. Closes #167
- Added pipe-less text support with immediate ".". Closes #157
- Fixed object support in attrs
- Fixed array support for attrs
- Fixed issue with expressions being evaluated several times. closes #162
- Added markdown, discount, and markdown-js support to
:markdown
. Closes #160 - Removed
:discount
- Added
pre
pipe-less text support (and auto-escaping)
- Added block-expansion support. Closes #74
- Added support for multi-line attrs without commas. Closes #65
- Fixed
script()
etc pipe-less text with attrs
- Removed
:javascript
filter (it doesn't really do anything special, usescript
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
- Added
each
support for Array-like objects [guillermo]
- 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]
- Added unescaped interpolation variant
!{code}
. Closes #124 - Changed; escape interpolated code by default
#{code}
- Fixed; hyphen in get
tag()
- Added
exports.compile(str, options)
- Renamed internal
_
to__
, since_()
is commonly used for translation
-
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.
- 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
- Fixed bug when tags with code also have a block [reported by chrisirhc]
-
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
- 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
- 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
- Added support for arbitrary indentation for single-line comments. Closes #71
- Only strip first space in text (ex '| foo' will buffer ' foo')
- 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
- Added single line comment support. Closes #25
- Removed CDATA from :javascript filter. Closes #47
- Removed sys local
- Fixed code following tag
- Added Buffer support to
render()
- Fixed filter text block exception reporting
- Fixed tag exception reporting
- Fixed newlines before block
- Fixed; tag text allowing arbitrary trailing whitespace
- 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
-
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
- Added
- each
support for readable iteration - Added markdown-js support (no compilation required)
- Removed node-discount support
- 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]
- Added
context
as synonym forscope
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]