:
that is not followed by a space (@ForbesLindesay)compileClientWithDependenciesTracked
(@ForbesLindesay)case
blocks (@ForbesLindesay)cache
and parser
options (@TimothyGu)--watch
sometimes dying when there were file-system errors (@ForbesLindesay)--watch
by using fs.watchFile
correctly (@TimothyGu)--extension
to CLI(@nicocedron and @TimothyGu)-
as the default filename when using stdin on CLI (@TimothyGu)string.trimLeft()
(@ForbesLindesay)lexer
is given as an option (@TimothyGu)globals
option from the with
module (@sokra)+
when calling a mixin (@char101)options.globals
option (@ForbesLindesay)node.clone
, block.replace
, attrs.removeAttribute
, attrs.getAttribute
- these are all internal APIs for the AST (@ForbesLindesay)when
without case
and else
without if
(@ForbesLindesay)if
/else
etc. to not have a block.&attributes
but no other attributes and a block that was supposed to be fixed in 1.1.4 (@ForbesLindesay)&attributes
but no other attributes and a block (@ForbesLindesay)&attributes
with false
null
or undefined
but combined with dynamic attributes (@ForbesLindesay)&attributes
is combined with static attributes that evaluate to false
or null
or undefined
(@ForbesLindesay)&attributes
is combined with dynamic attributes (@ForbesLindesay)//
rather than treating them as comments (@ForbesLindesay).
work as expected (@ForbesLindesay)!!!
shortcut for doctype
(@ForbesLindesay)5
shorcut for html
doctype (@ForbesLindesay)colons
option from the distant past (@ForbesLindesay)compileClient
and compileFileClient
to replace the client
option (@ForbesLindesay)node.type
instead of node.constructor.name
so it can be minified (@ForbesLindesay)attributes
magic attribute with &attributes(attributes)
(@ForbesLindesay)compileDebug
set explicitly to true
)pug.version
and fix pug --version
with
for a massive performance upgrade at compile timelocals
variable being undefinedscript
and style
tagswith
at compile time using lexical-scope
options.parser
that behaves exactly like options.compiler
hasOwnProperty
check in each loops$
sign in each loop variable names,
(was sometimes incorrect)-
--obj
each
else
support. Closes #716attrs()
escape bug [caseywebdev]block
doesn't consume blockquotes
tag [chowey]block
statementman pug
after installation for docs)-D, --no-debug
to pug(1)-p, --pretty
to pug(1)-c, --client
option to pug(1)-o { client: true }
with stdinextend
-> extends
. Closes #527 [guillermo].filename
to filters only:stylus
import capabilities, pass .filenameyield
for block include
s__
var with __pug
[chrisleishman]append
/ prepend
support. Closes #355Object.keys()
failover bugelse
bug when compileDebug: falseinclude
block support. Closes #303block
and extends
. Closes #242pug.render(str[,options], fn)
backwhile
supportArray.isArray()
polyfill. Closes #345Object.keys()
polyfill typo. Closes #331include
error contextres.render()
removalclient
option to reference runtime helpersArray.isArray()
for runtime.js as wellObject.keys()
for the client-side runtimeif
, unless
, else
and else if
supporteach
/ for
supportmake benchmark
for continuous-benchinline
option, SS helpers are no longer inlined eitherParser#debug()
pug.render()
and pug.renderFile()
escape()
bug causing window.escape to be usedinclude
support for non-pug filescolons
option for everyone stuck with ":". Closes #231compileDebug
option to enable lineno instrumentationinline
option to disable inlining of helpers (for client-side)mixin
supportinclude
supportmake test
doctype
as alias of !!!
self
object to avoid poor with(){}
performance [masylum]doctype
option [Jeremy Larkin]Object.keys()
[reported by robholland]Object.keys()
for the client-sidehtml
doctype, same as "5"pre
, no longer text-onlyrss("xmlns:atom"="atom")
support/compile.js
to exclude browser js in node<tag>[attrs]<:><block>
Block#unshift(node)
pug.js
for the client-side to the repopug.min.js
for the client-side to the repo--version
${}
interpolation support, use #{}
.map()
call due to recent changesmake pug.js
and make pug.min.js
.mkdirs()
to pug(1)--watch
, recursive compilation etc [khingebjerg]--pipe
flag== null
to ''. Closes #167:markdown
. Closes #160:discount
pre
pipe-less text support (and auto-escaping)script()
etc pipe-less text with attrs:javascript
filter (it doesn't really do anything special, use script
tags)script
, textarea
, etc) do not require |
.:text
filter for ad-hoc pipe-less:stylus
filter:discount
filter,
, =
, and :
within attr value strings are valid Closes #133span.name= user.name
when undefined or null will not output "undefined". Closes #130each
support for Array-like objects [guillermo]!{code}
. Closes #124#{code}
tag()
exports.compile(str, options)
_
to __
, since _()
is commonly used for translationFixed 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.
Added; Text introduces newlines to mimic the grammar. Whitespace handling is a little tricky with this sort of grammar. Pug 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 Pug 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
(function(){}).call(this)
render()
pug.renderFile()
to utilize primed cacheAdded 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
- each
support for readable iteration${}
support for interpolation. Closes #45label("for": 'something')
is allowed (although not required) [Guillermo]:less
filter [jakeluer]context
as synonym for scope
option [Guillermo]div(style:"color: red")
is now allowed(
and )
within attrs: a(class: (a ? 'a' : 'b'))
is now alloweda( href="#" )
is now allowed [Guillermo]