Skip to content

Commit

Permalink
changed helpers to default to inline instead of global
Browse files Browse the repository at this point in the history
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
  • Loading branch information
conancat authored and tj committed Jul 15, 2011
1 parent 92ac584 commit 9a7343a
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 32 deletions.
68 changes: 50 additions & 18 deletions jade.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,9 @@ Compiler.prototype = {
*/

visit: function(node){
this.line(node);
if (this.options.compileDebug !== false) {
this.line(node);
}
return this.visitNode(node);
},

Expand Down Expand Up @@ -795,7 +797,19 @@ function rethrow(err, str, filename, lineno){
*/

function parse(str, options){
var filename = options.filename;
var filename = options.filename
, helpers = ''

if (options.helpers !== 'inline') {
jadeHelpers = {
attrs: attrs,
escape: escape
}
helpers = 'var attrs = jadeHelpers.attrs, escape = jadeHelpers.escape;\n';
} else {
helpers = attrs.toString() + '\n' + escape.toString() + '\n';
}

try {
// Parse
var parser = new Parser(str, filename);
Expand All @@ -812,13 +826,13 @@ function parse(str, options){

try {
return ''
+ attrs.toString() + '\n\n'
+ escape.toString() + '\n\n'
+ helpers
+ 'var buf = [];\n'
+ (options.self
? 'var self = locals || {}, __ = __ || locals.__;\n' + js
: 'with (locals || {}) {' + js + '}')
+ 'return buf.join("");';

} catch (err) {
process.compile(js, filename || 'Jade');
return;
Expand All @@ -831,6 +845,10 @@ function parse(str, options){
/**
* Compile a `Function` representation of the given jade `str`.
*
* Options:
* - `compileDebug` Include/exclude debug helpers such as attrs, escape and rethrow, defaults to true
* - `helpers` Include helpers as `inline` or get from temporary `global` variables, defaults to `global`
*
* @param {String} str
* @param {Options} options
* @return {Function}
Expand All @@ -842,19 +860,34 @@ exports.compile = function(str, options){
, input = JSON.stringify(str)
, filename = options.filename
? JSON.stringify(options.filename)
: 'undefined';

// Reduce closure madness by injecting some locals
var fn = [
'var __ = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };'
, rethrow.toString()
, 'try {'
, parse(String(str), options || {})
, '} catch (err) {'
, ' rethrow(err, __.input, __.filename, __.lineno);'
, '}'
].join('\n');
: 'undefined'
, fn = []
, helpers = '';

if (options.helpers !== 'inline') {
jadeHelpers = {
rethrow: rethrow
};
helpers = 'var rethrow = jadeHelpers.rethrow;';
} else {
helpers = rethrow.toString();
}

if (options.compileDebug !== false) {
// Reduce closure madness by injecting some locals
fn = [
'var __ = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };'
, helpers
, 'try {'
, parse(String(str), options || {})
, '} catch (err) {'
, ' rethrow(err, __.input, __.filename, __.lineno);'
, '}'
].join('\n');
} else {
fn = parse(String(str), options || {});
}

return new Function('locals', fn);
};

Expand Down Expand Up @@ -898,7 +931,7 @@ exports.render = function(str, options){
} else {
fn = new Function('locals', parse(str, options));
}

// Render the template
try {
var locals = options.locals || {}
Expand Down Expand Up @@ -948,7 +981,6 @@ exports.renderFile = function(path, options, fn){
});
}
};

}); // module: jade.js

require.register("lexer.js", function(module, exports, require){
Expand Down
Loading

0 comments on commit 9a7343a

Please sign in to comment.