Skip to content

Commit

Permalink
Merge branch 'iife'
Browse files Browse the repository at this point in the history
  • Loading branch information
kpdecker committed Feb 16, 2013
2 parents 30623ce + 10453d1 commit fa400d9
Show file tree
Hide file tree
Showing 11 changed files with 1,198 additions and 1,216 deletions.
4 changes: 2 additions & 2 deletions Rakefile
Expand Up @@ -45,11 +45,11 @@ def remove_exports(string)
match ? match[1] : string
end

minimal_deps = %w(base compiler/parser compiler/base compiler/ast utils compiler/compiler runtime).map do |file|
minimal_deps = %w(browser-prefix base compiler/parser compiler/base compiler/ast utils compiler/compiler runtime browser-suffix).map do |file|
"lib/handlebars/#{file}.js"
end

runtime_deps = %w(base utils runtime).map do |file|
runtime_deps = %w(browser-prefix base utils runtime browser-suffix).map do |file|
"lib/handlebars/#{file}.js"
end

Expand Down
6 changes: 1 addition & 5 deletions lib/handlebars/base.js
Expand Up @@ -2,11 +2,9 @@

module.exports.create = function() {

// BEGIN(BROWSER)

var Handlebars = {};

(function(Handlebars) {
// BEGIN(BROWSER)

Handlebars.VERSION = "1.0.0-rc.3";
Handlebars.COMPILER_REVISION = 2;
Expand Down Expand Up @@ -147,8 +145,6 @@ Handlebars.registerHelper('log', function(context, options) {
Handlebars.log(level, context);
});

}(Handlebars));

// END(BROWSER)

return Handlebars;
Expand Down
3 changes: 3 additions & 0 deletions lib/handlebars/browser-prefix.js
@@ -0,0 +1,3 @@
var Handlebars = {};

(function(Handlebars, undefined) {
1 change: 1 addition & 0 deletions lib/handlebars/browser-suffix.js
@@ -0,0 +1 @@
})(Handlebars);
199 changes: 98 additions & 101 deletions lib/handlebars/compiler/ast.js
@@ -1,134 +1,131 @@
exports.attach = function(Handlebars) {

// BEGIN(BROWSER)
(function() {
Handlebars.AST = {};

Handlebars.AST = {};

Handlebars.AST.ProgramNode = function(statements, inverse) {
this.type = "program";
this.statements = statements;
if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
};
Handlebars.AST.ProgramNode = function(statements, inverse) {
this.type = "program";
this.statements = statements;
if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
};

Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
this.type = "mustache";
this.escaped = !unescaped;
this.hash = hash;
Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
this.type = "mustache";
this.escaped = !unescaped;
this.hash = hash;

var id = this.id = rawParams[0];
var params = this.params = rawParams.slice(1);
var id = this.id = rawParams[0];
var params = this.params = rawParams.slice(1);

// a mustache is an eligible helper if:
// * its id is simple (a single part, not `this` or `..`)
var eligibleHelper = this.eligibleHelper = id.isSimple;
// a mustache is an eligible helper if:
// * its id is simple (a single part, not `this` or `..`)
var eligibleHelper = this.eligibleHelper = id.isSimple;

// a mustache is definitely a helper if:
// * it is an eligible helper, and
// * it has at least one parameter or hash segment
this.isHelper = eligibleHelper && (params.length || hash);
// a mustache is definitely a helper if:
// * it is an eligible helper, and
// * it has at least one parameter or hash segment
this.isHelper = eligibleHelper && (params.length || hash);

// if a mustache is an eligible helper but not a definite
// helper, it is ambiguous, and will be resolved in a later
// pass or at runtime.
};
// if a mustache is an eligible helper but not a definite
// helper, it is ambiguous, and will be resolved in a later
// pass or at runtime.
};

Handlebars.AST.PartialNode = function(partialName, context) {
this.type = "partial";
this.partialName = partialName;
this.context = context;
};
Handlebars.AST.PartialNode = function(partialName, context) {
this.type = "partial";
this.partialName = partialName;
this.context = context;
};

Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
var verifyMatch = function(open, close) {
if(open.original !== close.original) {
throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
}
};

verifyMatch(mustache.id, close);
this.type = "block";
this.mustache = mustache;
this.program = program;
this.inverse = inverse;

if (this.inverse && !this.program) {
this.isInverse = true;
Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
var verifyMatch = function(open, close) {
if(open.original !== close.original) {
throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
}
};

Handlebars.AST.ContentNode = function(string) {
this.type = "content";
this.string = string;
};
verifyMatch(mustache.id, close);
this.type = "block";
this.mustache = mustache;
this.program = program;
this.inverse = inverse;

Handlebars.AST.HashNode = function(pairs) {
this.type = "hash";
this.pairs = pairs;
};
if (this.inverse && !this.program) {
this.isInverse = true;
}
};

Handlebars.AST.ContentNode = function(string) {
this.type = "content";
this.string = string;
};

Handlebars.AST.HashNode = function(pairs) {
this.type = "hash";
this.pairs = pairs;
};

Handlebars.AST.IdNode = function(parts) {
this.type = "ID";
this.original = parts.join(".");
Handlebars.AST.IdNode = function(parts) {
this.type = "ID";
this.original = parts.join(".");

var dig = [], depth = 0;
var dig = [], depth = 0;

for(var i=0,l=parts.length; i<l; i++) {
var part = parts[i];
for(var i=0,l=parts.length; i<l; i++) {
var part = parts[i];

if (part === ".." || part === "." || part === "this") {
if (dig.length > 0) { throw new Handlebars.Exception("Invalid path: " + this.original); }
else if (part === "..") { depth++; }
else { this.isScoped = true; }
}
else { dig.push(part); }
if (part === ".." || part === "." || part === "this") {
if (dig.length > 0) { throw new Handlebars.Exception("Invalid path: " + this.original); }
else if (part === "..") { depth++; }
else { this.isScoped = true; }
}
else { dig.push(part); }
}

this.parts = dig;
this.string = dig.join('.');
this.depth = depth;
this.parts = dig;
this.string = dig.join('.');
this.depth = depth;

// an ID is simple if it only has one part, and that part is not
// `..` or `this`.
this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
// an ID is simple if it only has one part, and that part is not
// `..` or `this`.
this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;

this.stringModeValue = this.string;
};
this.stringModeValue = this.string;
};

Handlebars.AST.PartialNameNode = function(name) {
this.type = "PARTIAL_NAME";
this.name = name;
};
Handlebars.AST.PartialNameNode = function(name) {
this.type = "PARTIAL_NAME";
this.name = name;
};

Handlebars.AST.DataNode = function(id) {
this.type = "DATA";
this.id = id;
};
Handlebars.AST.DataNode = function(id) {
this.type = "DATA";
this.id = id;
};

Handlebars.AST.StringNode = function(string) {
this.type = "STRING";
this.string = string;
this.stringModeValue = string;
};
Handlebars.AST.StringNode = function(string) {
this.type = "STRING";
this.string = string;
this.stringModeValue = string;
};

Handlebars.AST.IntegerNode = function(integer) {
this.type = "INTEGER";
this.integer = integer;
this.stringModeValue = Number(integer);
};
Handlebars.AST.IntegerNode = function(integer) {
this.type = "INTEGER";
this.integer = integer;
this.stringModeValue = Number(integer);
};

Handlebars.AST.BooleanNode = function(bool) {
this.type = "BOOLEAN";
this.bool = bool;
this.stringModeValue = bool === "true";
};
Handlebars.AST.BooleanNode = function(bool) {
this.type = "BOOLEAN";
this.bool = bool;
this.stringModeValue = bool === "true";
};

Handlebars.AST.CommentNode = function(comment) {
this.type = "comment";
this.comment = comment;
};
Handlebars.AST.CommentNode = function(comment) {
this.type = "comment";
this.comment = comment;
};

})();
// END(BROWSER)

return Handlebars;
Expand Down
3 changes: 0 additions & 3 deletions lib/handlebars/compiler/base.js
Expand Up @@ -15,9 +15,6 @@ Handlebars.parse = function(input) {
return Handlebars.Parser.parse(input);
};

Handlebars.print = function(ast) {
return new Handlebars.PrintVisitor().accept(ast);
};
// END(BROWSER)

return Handlebars;
Expand Down

0 comments on commit fa400d9

Please sign in to comment.