handlebars-compiler-parser.js revision e0bd6b490d14919b958622a831bfadbf322397ba
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove/* Jison generated parser */
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovevar handlebars = (function(){
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovesymbols_: {"error":2,"root":3,"program":4,"EOF":5,"statements":6,"simpleInverse":7,"statement":8,"openInverse":9,"closeBlock":10,"openBlock":11,"mustache":12,"partial":13,"CONTENT":14,"COMMENT":15,"OPEN_BLOCK":16,"inMustache":17,"CLOSE":18,"OPEN_INVERSE":19,"OPEN_ENDBLOCK":20,"path":21,"OPEN":22,"OPEN_UNESCAPED":23,"OPEN_PARTIAL":24,"params":25,"hash":26,"param":27,"STRING":28,"INTEGER":29,"BOOLEAN":30,"hashSegments":31,"hashSegment":32,"ID":33,"EQUALS":34,"pathSegments":35,"SEP":36,"$accept":0,"$end":1},
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveterminals_: {2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"OPEN_PARTIAL",28:"STRING",29:"INTEGER",30:"BOOLEAN",33:"ID",34:"EQUALS",36:"SEP"},
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveproductions_: [0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[25,2],[25,1],[27,1],[27,1],[27,1],[27,1],[26,1],[31,2],[31,1],[32,3],[32,3],[32,3],[32,3],[21,1],[35,3],[35,1]],
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan GroveperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 2: this.$ = new yy.ProgramNode($$[$0-2], $$[$0])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 7: this.$ = new yy.InverseNode($$[$0-2], $$[$0-1], $$[$0])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 8: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 13: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 14: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 16: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 17: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true)
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 19: this.$ = new yy.PartialNode($$[$0-2], $$[$0-1])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 21: this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 22: this.$ = [[$$[$0-1]].concat($$[$0]), null]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 25: $$[$0-1].push($$[$0]); this.$ = $$[$0-1];
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 35: this.$ = [$$[$0-2], new yy.StringNode($$[$0])]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 36: this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 37: this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 39: $$[$0-2].push($$[$0]); this.$ = $$[$0-2];
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovetable: [{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,33:[1,25],35:24},{17:26,21:23,33:[1,25],35:24},{17:27,21:23,33:[1,25],35:24},{17:28,21:23,33:[1,25],35:24},{21:29,33:[1,25],35:24},{1:[2,1]},{6:30,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,31],21:23,33:[1,25],35:24},{10:32,20:[1,33]},{10:34,20:[1,33]},{18:[1,35]},{18:[2,24],21:40,25:36,26:37,27:38,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,38],28:[2,38],29:[2,38],30:[2,38],33:[2,38],36:[1,46]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],36:[2,40]},{18:[1,47]},{18:[1,48]},{18:[1,49]},{18:[1,50],21:51,33:[1,25],35:24},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:52,33:[1,25],35:24},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:40,26:53,27:54,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,23]},{18:[2,26],28:[2,26],29:[2,26],30:[2,26],33:[2,26]},{18:[2,31],32:55,33:[1,56]},{18:[2,27],28:[2,27],29:[2,27],30:[2,27],33:[2,27]},{18:[2,28],28:[2,28],29:[2,28],30:[2,28],33:[2,28]},{18:[2,29],28:[2,29],29:[2,29],30:[2,29],33:[2,29]},{18:[2,30],28:[2,30],29:[2,30],30:[2,30],33:[2,30]},{18:[2,33],33:[2,33]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],34:[1,57],36:[2,40]},{33:[1,58]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,59]},{18:[1,60]},{18:[2,21]},{18:[2,25],28:[2,25],29:[2,25],30:[2,25],33:[2,25]},{18:[2,32],33:[2,32]},{34:[1,57]},{21:61,28:[1,62],29:[1,63],30:[1,64],33:[1,25],35:24},{18:[2,39],28:[2,39],29:[2,39],30:[2,39],33:[2,39],36:[2,39]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,34],33:[2,34]},{18:[2,35],33:[2,35]},{18:[2,36],33:[2,36]},{18:[2,37],33:[2,37]}],
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove //this.reductionCount = this.shiftCount = 0;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove function popStack (n) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove function lex() {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // if token isn't its numeric value, convert
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove while (true) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // retreive state number from top of stack
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // use default actions if available
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (symbol == null)
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // read action for current state and first input
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // handle parse error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (typeof action === 'undefined' || !action.length || !action[0]) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // Report error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove for (p in table[state]) if (this.terminals_[p] && p > 2) {
e0bd6b490d14919b958622a831bfadbf322397baRyan Grove errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'";
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // just recovered from another error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // discard current lookahead and grab another
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // try to recover from error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // check for error recovery rule in this state
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove preErrorSymbol = symbol; // save the lookahead token
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove symbol = TERROR; // insert generic error symbol as new lookahead
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // this shouldn't happen, unless resolve defaults are off
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (action[0] instanceof Array && action.length > 1) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove //this.shiftCount++;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (!preErrorSymbol) { // normal execution/no error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove } else { // error just occurred, resume old lookahead f/ before error
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove //this.reductionCount++;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // perform semantic action
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // default location, uses first token for firsts, last for lasts
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove first_line: lstack[lstack.length-(len||1)].first_line,
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove first_column: lstack[lstack.length-(len||1)].first_column,
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (typeof r !== 'undefined') {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // pop off stack
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove // goto new state = table[STATE][NONTERMINAL]
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove newState = table[stack[stack.length-2]][stack[stack.length-1]];
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return true;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return true;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove}};/* Jison generated lexer */
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovevar lexer = (function(){
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveinput:function () {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovemore:function () {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this._more = true;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var past = this.matched.substr(0, this.matched.length - this.match.length);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return pre + this.upcomingInput() + "\n" + c+"^";
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovenext:function () {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this.EOF;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (!this._more) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this.yylloc = {first_line: this.yylloc.last_line,
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length}
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this._more = false;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this._input = this._input.slice(match[0].length);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove token = this.performAction.call(this, this.yy, this, rules[i],this.conditionStack[this.conditionStack.length-1]);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove else return;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this.EOF;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var r = this.next();
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (typeof r !== 'undefined') {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this.lex();
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grove return this.conditionStack[this.conditionStack.length-2];
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovelexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
e0bd6b490d14919b958622a831bfadbf322397baRyan Grove if(yy_.yytext.slice(-1) !== "\\") this.begin("mu");
e0bd6b490d14919b958622a831bfadbf322397baRyan Grove if(yy_.yytext.slice(-1) === "\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin("emu");
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 10: yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 19: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\"/g,'"'); return 28;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovecase 20: return 30;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 21: return 30;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 22: return 29;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 23: return 33;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 24: yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 33;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovecase 26: return 5;
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovelexer.rules = [/^[^\x00]*?(?=(\{\{))/,/^[^\x00]+/,/^[^\x00]{2,}?(?=(\{\{))/,/^\{\{>/,/^\{\{#/,/^\{\{\//,/^\{\{\^/,/^\{\{\s*else\b/,/^\{\{\{/,/^\{\{&/,/^\{\{![\s\S]*?\}\}/,/^\{\{/,/^=/,/^\.(?=[} ])/,/^\.\./,/^[\/.]/,/^\s+/,/^\}\}\}/,/^\}\}/,/^"(\\["]|[^"])*"/,/^true(?=[}\s])/,/^false(?=[}\s])/,/^[0-9]+(?=[}\s])/,/^[a-zA-Z0-9_$-]+(?=[=}\s\/.])/,/^\[[^\]]*\]/,/^./,/^$/];
e0bd6b490d14919b958622a831bfadbf322397baRyan Grovelexer.conditions = {"mu":{"rules":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"inclusive":false},"emu":{"rules":[2],"inclusive":false},"INITIAL":{"rules":[0,1,26],"inclusive":true}};return lexer;})()
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveparser.lexer = lexer;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grovereturn parser;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveif (typeof require !== 'undefined' && typeof exports !== 'undefined') {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveexports.parser = handlebars;
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveexports.parse = function () { return handlebars.parse.apply(handlebars, arguments); }
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveexports.main = function commonjsMain(args) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove if (!args[1])
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8");
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var cwd = require("file").path(require("file").cwd());
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove var source = cwd.join(args[1]).read({charset: "utf-8"});
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove return exports.parser.parse(source);
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Groveif (typeof module !== 'undefined' && require.main === module) {
c5eeeb5cc5fdca25f16cb4f2fd3e59dd0f937debRyan Grove exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);