steering-source 1.0.beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in steering-source.gemspec
4
+ gemspec
@@ -0,0 +1,3 @@
1
+ # Steering Source
2
+
3
+ JavaScript source code for the Handlebars.js compiler.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ var Handlebars={};Handlebars.VERSION="1.0.beta.6";Handlebars.helpers={};Handlebars.partials={};Handlebars.registerHelper=function(a,b,c){if(c){b.not=c}this.helpers[a]=b};Handlebars.registerPartial=function(a,b){this.partials[a]=b};Handlebars.registerHelper("helperMissing",function(a){if(arguments.length===2){return undefined}else{throw new Error("Could not find property '"+a+"'")}});var toString=Object.prototype.toString,functionType="[object Function]";Handlebars.registerHelper("blockHelperMissing",function(a,b){var c=b.inverse||function(){},d=b.fn;var e="";var f=toString.call(a);if(f===functionType){a=a.call(this)}if(a===true){return d(this)}else if(a===false||a==null){return c(this)}else if(f==="[object Array]"){if(a.length>0){for(var g=0,h=a.length;g<h;g++){e=e+d(a[g])}}else{e=c(this)}return e}else{return d(a)}});Handlebars.registerHelper("each",function(a,b){var c=b.fn,d=b.inverse;var e="";if(a&&a.length>0){for(var f=0,g=a.length;f<g;f++){e=e+c(a[f])}}else{e=d(this)}return e});Handlebars.registerHelper("if",function(a,b){var c=toString.call(a);if(c===functionType){a=a.call(this)}if(!a||Handlebars.Utils.isEmpty(a)){return b.inverse(this)}else{return b.fn(this)}});Handlebars.registerHelper("unless",function(a,b){var c=b.fn,d=b.inverse;b.fn=d;b.inverse=c;return Handlebars.helpers["if"].call(this,a,b)});Handlebars.registerHelper("with",function(a,b){return b.fn(a)});Handlebars.registerHelper("log",function(a){Handlebars.log(a)});var handlebars=function(){var a={trace:function c(){},yy:{},symbols_:{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},terminals_:{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"},productions_:[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]],performAction:function d(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];break;case 2:this.$=new d.ProgramNode(f[h-2],f[h]);break;case 3:this.$=new d.ProgramNode(f[h]);break;case 4:this.$=new d.ProgramNode([]);break;case 5:this.$=[f[h]];break;case 6:f[h-1].push(f[h]);this.$=f[h-1];break;case 7:this.$=new d.InverseNode(f[h-2],f[h-1],f[h]);break;case 8:this.$=new d.BlockNode(f[h-2],f[h-1],f[h]);break;case 9:this.$=f[h];break;case 10:this.$=f[h];break;case 11:this.$=new d.ContentNode(f[h]);break;case 12:this.$=new d.CommentNode(f[h]);break;case 13:this.$=new d.MustacheNode(f[h-1][0],f[h-1][1]);break;case 14:this.$=new d.MustacheNode(f[h-1][0],f[h-1][1]);break;case 15:this.$=f[h-1];break;case 16:this.$=new d.MustacheNode(f[h-1][0],f[h-1][1]);break;case 17:this.$=new d.MustacheNode(f[h-1][0],f[h-1][1],true);break;case 18:this.$=new d.PartialNode(f[h-1]);break;case 19:this.$=new d.PartialNode(f[h-2],f[h-1]);break;case 20:break;case 21:this.$=[[f[h-2]].concat(f[h-1]),f[h]];break;case 22:this.$=[[f[h-1]].concat(f[h]),null];break;case 23:this.$=[[f[h-1]],f[h]];break;case 24:this.$=[[f[h]],null];break;case 25:f[h-1].push(f[h]);this.$=f[h-1];break;case 26:this.$=[f[h]];break;case 27:this.$=f[h];break;case 28:this.$=new d.StringNode(f[h]);break;case 29:this.$=new d.IntegerNode(f[h]);break;case 30:this.$=new d.BooleanNode(f[h]);break;case 31:this.$=new d.HashNode(f[h]);break;case 32:f[h-1].push(f[h]);this.$=f[h-1];break;case 33:this.$=[f[h]];break;case 34:this.$=[f[h-2],f[h]];break;case 35:this.$=[f[h-2],new d.StringNode(f[h])];break;case 36:this.$=[f[h-2],new d.IntegerNode(f[h])];break;case 37:this.$=[f[h-2],new d.BooleanNode(f[h])];break;case 38:this.$=new d.IdNode(f[h]);break;case 39:f[h-2].push(f[h]);this.$=f[h-2];break;case 40:this.$=[f[h]];break}},table:[{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]}],defaultActions:{16:[2,1],37:[2,23],53:[2,21]},parseError:function e(a,b){throw new Error(a)},parse:function f(a){function o(){var a;a=b.lexer.lex()||1;if(typeof a!=="number"){a=b.symbols_[a]||a}return a}function n(a){c.length=c.length-2*a;d.length=d.length-a;e.length=e.length-a}var b=this,c=[0],d=[null],e=[],f=this.table,g="",h=0,i=0,j=0,k=2,l=1;this.lexer.setInput(a);this.lexer.yy=this.yy;this.yy.lexer=this.lexer;if(typeof this.lexer.yylloc=="undefined")this.lexer.yylloc={};var m=this.lexer.yylloc;e.push(m);if(typeof this.yy.parseError==="function")this.parseError=this.yy.parseError;var p,q,r,s,t,u,v={},w,x,y,z;while(true){r=c[c.length-1];if(this.defaultActions[r]){s=this.defaultActions[r]}else{if(p==null)p=o();s=f[r]&&f[r][p]}if(typeof s==="undefined"||!s.length||!s[0]){if(!j){z=[];for(w in f[r])if(this.terminals_[w]&&w>2){z.push("'"+this.terminals_[w]+"'")}var A="";if(this.lexer.showPosition){A="Parse error on line "+(h+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+z.join(", ")+", got '"+this.terminals_[p]+"'"}else{A="Parse error on line "+(h+1)+": Unexpected "+(p==1?"end of input":"'"+(this.terminals_[p]||p)+"'")}this.parseError(A,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:m,expected:z})}}if(s[0]instanceof Array&&s.length>1){throw new Error("Parse Error: multiple actions possible at state: "+r+", token: "+p)}switch(s[0]){case 1:c.push(p);d.push(this.lexer.yytext);e.push(this.lexer.yylloc);c.push(s[1]);p=null;if(!q){i=this.lexer.yyleng;g=this.lexer.yytext;h=this.lexer.yylineno;m=this.lexer.yylloc;if(j>0)j--}else{p=q;q=null}break;case 2:x=this.productions_[s[1]][1];v.$=d[d.length-x];v._$={first_line:e[e.length-(x||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(x||1)].first_column,last_column:e[e.length-1].last_column};u=this.performAction.call(v,g,i,h,this.yy,s[1],d,e);if(typeof u!=="undefined"){return u}if(x){c=c.slice(0,-1*x*2);d=d.slice(0,-1*x);e=e.slice(0,-1*x)}c.push(this.productions_[s[1]][0]);d.push(v.$);e.push(v._$);y=f[c[c.length-2]][c[c.length-1]];c.push(y);break;case 3:return true}}return true}};var b=function(){var a={EOF:1,parseError:function b(a,b){if(this.yy.parseError){this.yy.parseError(a,b)}else{throw new Error(a)}},setInput:function(a){this._input=a;this._more=this._less=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};return this},input:function(){var a=this._input[0];this.yytext+=a;this.yyleng++;this.match+=a;this.matched+=a;var b=a.match(/\n/);if(b)this.yylineno++;this._input=this._input.slice(1);return a},unput:function(a){this._input=a+this._input;return this},more:function(){this._more=true;return this},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;if(a.length<20){a+=this._input.substr(0,20-a.length)}return(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput();var b=(new Array(a.length+1)).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done){return this.EOF}if(!this._input)this.done=true;var a,b,c,d;if(!this._more){this.yytext="";this.match=""}var e=this._currentRules();for(var f=0;f<e.length;f++){b=this._input.match(this.rules[e[f]]);if(b){d=b[0].match(/\n.*/g);if(d)this.yylineno+=d.length;this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-1:this.yylloc.last_column+b[0].length};this.yytext+=b[0];this.match+=b[0];this.matches=b;this.yyleng=this.yytext.length;this._more=false;this._input=this._input.slice(b[0].length);this.matched+=b[0];a=this.performAction.call(this,this.yy,this,e[f],this.conditionStack[this.conditionStack.length-1]);if(a)return a;else return}}if(this._input===""){return this.EOF}else{this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}},lex:function c(){var a=this.next();if(typeof a!=="undefined"){return a}else{return this.lex()}},begin:function d(a){this.conditionStack.push(a)},popState:function e(){return this.conditionStack.pop()},_currentRules:function f(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function g(a){this.begin(a)}};a.performAction=function h(a,b,c,d){var e=d;switch(c){case 0:if(b.yytext.slice(-1)!=="\\")this.begin("mu");if(b.yytext.slice(-1)==="\\")b.yytext=b.yytext.substr(0,b.yyleng-1),this.begin("emu");if(b.yytext)return 14;break;case 1:return 14;break;case 2:this.popState();return 14;break;case 3:return 24;break;case 4:return 16;break;case 5:return 20;break;case 6:return 19;break;case 7:return 19;break;case 8:return 23;break;case 9:return 23;break;case 10:b.yytext=b.yytext.substr(3,b.yyleng-5);this.popState();return 15;break;case 11:return 22;break;case 12:return 34;break;case 13:return 33;break;case 14:return 33;break;case 15:return 36;break;case 16:break;case 17:this.popState();return 18;break;case 18:this.popState();return 18;break;case 19:b.yytext=b.yytext.substr(1,b.yyleng-2).replace(/\\"/g,'"');return 28;break;case 20:return 30;break;case 21:return 30;break;case 22:return 29;break;case 23:return 33;break;case 24:b.yytext=b.yytext.substr(1,b.yyleng-2);return 33;break;case 25:return"INVALID";break;case 26:return 5;break}};a.rules=[/^[^\x00]*?(?=(\{\{))/,/^[^\x00]+/,/^[^\x00]{2,}?(?=(\{\{))/,/^\{\{>/,/^\{\{#/,/^\{\{\//,/^\{\{\^/,/^\{\{\s*else\b/,/^\{\{\{/,/^\{\{&/,/^\{\{![\s\S]*?\}\}/,/^\{\{/,/^=/,/^\.(?=[} ])/,/^\.\./,/^[\/.]/,/^\s+/,/^\}\}\}/,/^\}\}/,/^"(\\["]|[^"])*"/,/^true(?=[}\s])/,/^false(?=[}\s])/,/^[0-9]+(?=[}\s])/,/^[a-zA-Z0-9_$-]+(?=[=}\s\/.])/,/^\[[^\]]*\]/,/^./,/^$/];a.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 a}();a.lexer=b;return a}();if(typeof require!=="undefined"&&typeof exports!=="undefined"){exports.parser=handlebars;exports.parse=function(){return handlebars.parse.apply(handlebars,arguments)};exports.main=function a(a){if(!a[1])throw new Error("Usage: "+a[0]+" FILE");if(typeof process!=="undefined"){var b=require("fs").readFileSync(require("path").join(process.cwd(),a[1]),"utf8")}else{var c=require("file").path(require("file").cwd());var b=c.join(a[1]).read({charset:"utf-8"})}return exports.parser.parse(b)};if(typeof module!=="undefined"&&require.main===module){exports.main(typeof process!=="undefined"?process.argv.slice(1):require("system").args)}}Handlebars.Parser=handlebars;Handlebars.parse=function(a){Handlebars.Parser.yy=Handlebars.AST;return Handlebars.Parser.parse(a)};Handlebars.print=function(a){return(new Handlebars.PrintVisitor).accept(a)};Handlebars.logger={DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){}};Handlebars.log=function(a,b){Handlebars.logger.log(a,b)};(function(){Handlebars.AST={};Handlebars.AST.ProgramNode=function(a,b){this.type="program";this.statements=a;if(b){this.inverse=new Handlebars.AST.ProgramNode(b)}};Handlebars.AST.MustacheNode=function(a,b,c){this.type="mustache";this.id=a[0];this.params=a.slice(1);this.hash=b;this.escaped=!c};Handlebars.AST.PartialNode=function(a,b){this.type="partial";this.id=a;this.context=b};var a=function(a,b){if(a.original!==b.original){throw new Handlebars.Exception(a.original+" doesn't match "+b.original)}};Handlebars.AST.BlockNode=function(b,c,d){a(b.id,d);this.type="block";this.mustache=b;this.program=c};Handlebars.AST.InverseNode=function(b,c,d){a(b.id,d);this.type="inverse";this.mustache=b;this.program=c};Handlebars.AST.ContentNode=function(a){this.type="content";this.string=a};Handlebars.AST.HashNode=function(a){this.type="hash";this.pairs=a};Handlebars.AST.IdNode=function(a){this.type="ID";this.original=a.join(".");var b=[],c=0;for(var d=0,e=a.length;d<e;d++){var f=a[d];if(f===".."){c++}else if(f==="."||f==="this"){this.isScoped=true}else{b.push(f)}}this.parts=b;this.string=b.join(".");this.depth=c;this.isSimple=b.length===1&&c===0};Handlebars.AST.StringNode=function(a){this.type="STRING";this.string=a};Handlebars.AST.IntegerNode=function(a){this.type="INTEGER";this.integer=a};Handlebars.AST.BooleanNode=function(a){this.type="BOOLEAN";this.bool=a};Handlebars.AST.CommentNode=function(a){this.type="comment";this.comment=a}})();Handlebars.Exception=function(a){var b=Error.prototype.constructor.apply(this,arguments);for(var c in b){if(b.hasOwnProperty(c)){this[c]=b[c]}}this.message=b.message};Handlebars.Exception.prototype=new Error;Handlebars.SafeString=function(a){this.string=a};Handlebars.SafeString.prototype.toString=function(){return this.string.toString()};(function(){var a={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};var b=/&(?!\w+;)|[<>"'`]/g;var c=/[&<>"'`]/;var d=function(b){return a[b]||"&amp;"};Handlebars.Utils={escapeExpression:function(a){if(a instanceof Handlebars.SafeString){return a.toString()}else if(a==null||a===false){return""}if(!c.test(a)){return a}return a.replace(b,d)},isEmpty:function(a){if(typeof a==="undefined"){return true}else if(a===null){return true}else if(a===false){return true}else if(Object.prototype.toString.call(a)==="[object Array]"&&a.length===0){return true}else{return false}}}})();Handlebars.Compiler=function(){};Handlebars.JavaScriptCompiler=function(){};(function(a,b){a.OPCODE_MAP={appendContent:1,getContext:2,lookupWithHelpers:3,lookup:4,append:5,invokeMustache:6,appendEscaped:7,pushString:8,truthyOrFallback:9,functionOrFallback:10,invokeProgram:11,invokePartial:12,push:13,assignToHash:15,pushStringParam:16};a.MULTI_PARAM_OPCODES={appendContent:1,getContext:1,lookupWithHelpers:2,lookup:1,invokeMustache:3,pushString:1,truthyOrFallback:1,functionOrFallback:1,invokeProgram:3,invokePartial:1,push:1,assignToHash:1,pushStringParam:1};a.DISASSEMBLE_MAP={};for(var c in a.OPCODE_MAP){var d=a.OPCODE_MAP[c];a.DISASSEMBLE_MAP[d]=c}a.multiParamSize=function(b){return a.MULTI_PARAM_OPCODES[a.DISASSEMBLE_MAP[b]]};a.prototype={compiler:a,disassemble:function(){var b=this.opcodes,c,d;var e=[],f,g,h;for(var i=0,j=b.length;i<j;i++){c=b[i];if(c==="DECLARE"){g=b[++i];h=b[++i];e.push("DECLARE "+g+" = "+h)}else{f=a.DISASSEMBLE_MAP[c];var k=a.multiParamSize(c);var l=[];for(var m=0;m<k;m++){d=b[++i];if(typeof d==="string"){d='"'+d.replace("\n","\\n")+'"'}l.push(d)}f=f+" "+l.join(" ");e.push(f)}}return e.join("\n")},guid:0,compile:function(a,b){this.children=[];this.depths={list:[]};this.options=b;var c=this.options.knownHelpers;this.options.knownHelpers={helperMissing:true,blockHelperMissing:true,each:true,"if":true,unless:true,"with":true,log:true};if(c){for(var d in c){this.options.knownHelpers[d]=c[d]}}return this.program(a)},accept:function(a){return this[a.type](a)},program:function(a){var b=a.statements,c;this.opcodes=[];for(var d=0,e=b.length;d<e;d++){c=b[d];this[c.type](c)}this.isSimple=e===1;this.depths.list=this.depths.list.sort(function(a,b){return a-b});return this},compileProgram:function(a){var b=(new this.compiler).compile(a,this.options);var c=this.guid++;this.usePartial=this.usePartial||b.usePartial;this.children[c]=b;for(var d=0,e=b.depths.list.length;d<e;d++){depth=b.depths.list[d];if(depth<2){continue}else{this.addDepth(depth-1)}}return c},block:function(a){var b=a.mustache;var c,d,e,f;var g=this.setupStackForMustache(b);var h=this.compileProgram(a.program);if(a.program.inverse){f=this.compileProgram(a.program.inverse);this.declare("inverse",f)}this.opcode("invokeProgram",h,g.length,!!b.hash);this.declare("inverse",null);this.opcode("append")},inverse:function(a){var b=this.setupStackForMustache(a.mustache);var c=this.compileProgram(a.program);this.declare("inverse",c);this.opcode("invokeProgram",null,b.length,!!a.mustache.hash);this.declare("inverse",null);this.opcode("append")},hash:function(a){var b=a.pairs,c,d;this.opcode("push","{}");for(var e=0,f=b.length;e<f;e++){c=b[e];d=c[1];this.accept(d);this.opcode("assignToHash",c[0])}},partial:function(a){var b=a.id;this.usePartial=true;if(a.context){this.ID(a.context)}else{this.opcode("push","depth0")}this.opcode("invokePartial",b.original);this.opcode("append")},content:function(a){this.opcode("appendContent",a.string)},mustache:function(a){var b=this.setupStackForMustache(a);this.opcode("invokeMustache",b.length,a.id.original,!!a.hash);if(a.escaped&&!this.options.noEscape){this.opcode("appendEscaped")}else{this.opcode("append")}},ID:function(a){this.addDepth(a.depth);this.opcode("getContext",a.depth);this.opcode("lookupWithHelpers",a.parts[0]||null,a.isScoped||false);for(var b=1,c=a.parts.length;b<c;b++){this.opcode("lookup",a.parts[b])}},STRING:function(a){this.opcode("pushString",a.string)},INTEGER:function(a){this.opcode("push",a.integer)},BOOLEAN:function(a){this.opcode("push",a.bool)},comment:function(){},pushParams:function(a){var b=a.length,c;while(b--){c=a[b];if(this.options.stringParams){if(c.depth){this.addDepth(c.depth)}this.opcode("getContext",c.depth||0);this.opcode("pushStringParam",c.string)}else{this[c.type](c)}}},opcode:function(b,c,d,e){this.opcodes.push(a.OPCODE_MAP[b]);if(c!==undefined){this.opcodes.push(c)}if(d!==undefined){this.opcodes.push(d)}if(e!==undefined){this.opcodes.push(e)}},declare:function(a,b){this.opcodes.push("DECLARE");this.opcodes.push(a);this.opcodes.push(b)},addDepth:function(a){if(a===0){return}if(!this.depths[a]){this.depths[a]=true;this.depths.list.push(a)}},setupStackForMustache:function(a){var b=a.params;this.pushParams(b);if(a.hash){this.hash(a.hash)}this.ID(a.id);return b}};b.prototype={nameLookup:function(a,c,d){if(/^[0-9]+$/.test(c)){return a+"["+c+"]"}else if(b.isValidJavaScriptVariableName(c)){return a+"."+c}else{return a+"['"+c+"']"}},appendToBuffer:function(a){if(this.environment.isSimple){return"return "+a+";"}else{return"buffer += "+a+";"}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(a,b,c,d){this.environment=a;this.options=b||{};this.name=this.environment.name;this.isChild=!!c;this.context=c||{programs:[],aliases:{self:"this"},registers:{list:[]}};this.preamble();this.stackSlot=0;this.stackVars=[];this.compileChildren(a,b);var e=a.opcodes,f;this.i=0;for(h=e.length;this.i<h;this.i++){f=this.nextOpcode(0);if(f[0]==="DECLARE"){this.i=this.i+2;this[f[1]]=f[2]}else{this.i=this.i+f[1].length;this[f[0]].apply(this,f[1])}}return this.createFunctionContext(d)},nextOpcode:function(b){var c=this.environment.opcodes,d=c[this.i+b],e,f;var g,h;if(d==="DECLARE"){e=c[this.i+1];f=c[this.i+2];return["DECLARE",e,f]}else{e=a.DISASSEMBLE_MAP[d];g=a.multiParamSize(d);h=[];for(var i=0;i<g;i++){h.push(c[this.i+i+1+b])}return[e,h]}},eat:function(a){this.i=this.i+a.length},preamble:function(){var a=[];this.useRegister("foundHelper");if(!this.isChild){var b=this.namespace;var c="helpers = helpers || "+b+".helpers;";if(this.environment.usePartial){c=c+" partials = partials || "+b+".partials;"}a.push(c)}else{a.push("")}if(!this.environment.isSimple){a.push(", buffer = "+this.initializeBuffer())}else{a.push("")}this.lastContext=0;this.source=a},createFunctionContext:function(a){var b=this.stackVars;if(!this.isChild){b=b.concat(this.context.registers.list)}if(b.length>0){this.source[1]=this.source[1]+", "+b.join(", ")}if(!this.isChild){var c=[];for(var d in this.context.aliases){this.source[1]=this.source[1]+", "+d+"="+this.context.aliases[d]}}if(this.source[1]){this.source[1]="var "+this.source[1].substring(2)+";"}if(!this.isChild){this.source[1]+="\n"+this.context.programs.join("\n")+"\n"}if(!this.environment.isSimple){this.source.push("return buffer;")}var e=this.isChild?["depth0","data"]:["Handlebars","depth0","helpers","partials","data"];for(var f=0,g=this.environment.depths.list.length;f<g;f++){e.push("depth"+this.environment.depths.list[f])}if(a){e.push(this.source.join("\n "));return Function.apply(this,e)}else{var h="function "+(this.name||"")+"("+e.join(",")+") {\n "+this.source.join("\n ")+"}";Handlebars.log(Handlebars.logger.DEBUG,h+"\n\n");return h}},appendContent:function(a){this.source.push(this.appendToBuffer(this.quotedString(a)))},append:function(){var a=this.popStack();this.source.push("if("+a+" || "+a+" === 0) { "+this.appendToBuffer(a)+" }");if(this.environment.isSimple){this.source.push("else { "+this.appendToBuffer("''")+" }")}},appendEscaped:function(){var a=this.nextOpcode(1),b="";this.context.aliases.escapeExpression="this.escapeExpression";if(a[0]==="appendContent"){b=" + "+this.quotedString(a[1][0]);this.eat(a)}this.source.push(this.appendToBuffer("escapeExpression("+this.popStack()+")"+b))},getContext:function(a){if(this.lastContext!==a){this.lastContext=a}},lookupWithHelpers:function(a,b){if(a){var c=this.nextStack();this.usingKnownHelper=false;var d;if(!b&&this.options.knownHelpers[a]){d=c+" = "+this.nameLookup("helpers",a,"helper");this.usingKnownHelper=true}else if(b||this.options.knownHelpersOnly){d=c+" = "+this.nameLookup("depth"+this.lastContext,a,"context")}else{this.register("foundHelper",this.nameLookup("helpers",a,"helper"));d=c+" = foundHelper || "+this.nameLookup("depth"+this.lastContext,a,"context")}d+=";";this.source.push(d)}else{this.pushStack("depth"+this.lastContext)}},lookup:function(a){var b=this.topStack();this.source.push(b+" = ("+b+" === null || "+b+" === undefined || "+b+" === false ? "+b+" : "+this.nameLookup(b,a,"context")+");")},pushStringParam:function(a){this.pushStack("depth"+this.lastContext);this.pushString(a)},pushString:function(a){this.pushStack(this.quotedString(a))},push:function(a){this.pushStack(a)},invokeMustache:function(a,b,c){this.populateParams(a,this.quotedString(b),"{}",null,c,function(a,b,c){if(!this.usingKnownHelper){this.context.aliases.helperMissing="helpers.helperMissing";this.context.aliases.undef="void 0";this.source.push("else if("+c+"=== undef) { "+a+" = helperMissing.call("+b+"); }");if(a!==c){this.source.push("else { "+a+" = "+c+"; }")}}})},invokeProgram:function(a,b,c){var d=this.programExpression(this.inverse);var e=this.programExpression(a);this.populateParams(b,null,e,d,c,function(a,b,c){if(!this.usingKnownHelper){this.context.aliases.blockHelperMissing="helpers.blockHelperMissing";this.source.push("else { "+a+" = blockHelperMissing.call("+b+"); }")}})},populateParams:function(a,b,c,d,e,f){var g=e||this.options.stringParams||d||this.options.data;var h=this.popStack(),i;var j=[],k,l,m;if(g){this.register("tmp1",c);m="tmp1"}else{m="{ hash: {} }"}if(g){var n=e?this.popStack():"{}";this.source.push("tmp1.hash = "+n+";")}if(this.options.stringParams){this.source.push("tmp1.contexts = [];")}for(var o=0;o<a;o++){k=this.popStack();j.push(k);if(this.options.stringParams){this.source.push("tmp1.contexts.push("+this.popStack()+");")}}if(d){this.source.push("tmp1.fn = tmp1;");this.source.push("tmp1.inverse = "+d+";")}if(this.options.data){this.source.push("tmp1.data = data;")}j.push(m);this.populateCall(j,h,b||h,f,c!=="{}")},populateCall:function(a,b,c,d,e){var f=["depth0"].concat(a).join(", ");var g=["depth0"].concat(c).concat(a).join(", ");var h=this.nextStack();if(this.usingKnownHelper){this.source.push(h+" = "+b+".call("+f+");")}else{this.context.aliases.functionType='"function"';var i=e?"foundHelper && ":"";this.source.push("if("+i+"typeof "+b+" === functionType) { "+h+" = "+b+".call("+f+"); }")}d.call(this,h,g,b);this.usingKnownHelper=false},invokePartial:function(a){params=[this.nameLookup("partials",a,"partial"),"'"+a+"'",this.popStack(),"helpers","partials"];if(this.options.data){params.push("data")}this.pushStack("self.invokePartial("+params.join(", ")+");")},assignToHash:function(a){var b=this.popStack();var c=this.topStack();this.source.push(c+"['"+a+"'] = "+b+";")},compiler:b,compileChildren:function(a,b){var c=a.children,d,e;for(var f=0,g=c.length;f<g;f++){d=c[f];e=new this.compiler;this.context.programs.push("");var h=this.context.programs.length;d.index=h;d.name="program"+h;this.context.programs[h]=e.compile(d,b,this.context)}},programExpression:function(a){if(a==null){return"self.noop"}var b=this.environment.children[a],c=b.depths.list;var d=[b.index,b.name,"data"];for(var e=0,f=c.length;e<f;e++){depth=c[e];if(depth===1){d.push("depth0")}else{d.push("depth"+(depth-1))}}if(c.length===0){return"self.program("+d.join(", ")+")"}else{d.shift();return"self.programWithDepth("+d.join(", ")+")"}},register:function(a,b){this.useRegister(a);this.source.push(a+" = "+b+";")},useRegister:function(a){if(!this.context.registers[a]){this.context.registers[a]=true;this.context.registers.list.push(a)}},pushStack:function(a){this.source.push(this.nextStack()+" = "+a+";");return"stack"+this.stackSlot},nextStack:function(){this.stackSlot++;if(this.stackSlot>this.stackVars.length){this.stackVars.push("stack"+this.stackSlot)}return"stack"+this.stackSlot},popStack:function(){return"stack"+this.stackSlot--},topStack:function(){return"stack"+this.stackSlot},quotedString:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r")+'"'}};var e=("break else new var"+" case finally return void"+" catch for switch while"+" continue function this with"+" default if throw"+" delete in try"+" do instanceof typeof"+" abstract enum int short"+" boolean export interface static"+" byte extends long super"+" char final native synchronized"+" class float package throws"+" const goto private transient"+" debugger implements protected volatile"+" double import public let yield").split(" ");var f=b.RESERVED_WORDS={};for(var g=0,h=e.length;g<h;g++){f[e[g]]=true}b.isValidJavaScriptVariableName=function(a){if(!b.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(a)){return true}return false}})(Handlebars.Compiler,Handlebars.JavaScriptCompiler);Handlebars.precompile=function(a,b){b=b||{};var c=Handlebars.parse(a);var d=(new Handlebars.Compiler).compile(c,b);return(new Handlebars.JavaScriptCompiler).compile(d,b)};Handlebars.compile=function(a,b){function d(){var c=Handlebars.parse(a);var d=(new Handlebars.Compiler).compile(c,b);var e=(new Handlebars.JavaScriptCompiler).compile(d,b,undefined,true);return Handlebars.template(e)}b=b||{};var c;return function(a,b){if(!c){c=d()}return c.call(this,a,b)}};Handlebars.VM={template:function(a){var b={escapeExpression:Handlebars.Utils.escapeExpression,invokePartial:Handlebars.VM.invokePartial,programs:[],program:function(a,b,c){var d=this.programs[a];if(c){return Handlebars.VM.program(b,c)}else if(d){return d}else{d=this.programs[a]=Handlebars.VM.program(b);return d}},programWithDepth:Handlebars.VM.programWithDepth,noop:Handlebars.VM.noop};return function(c,d){d=d||{};return a.call(b,Handlebars,c,d.helpers,d.partials,d.data)}},programWithDepth:function(a,b,c){var d=Array.prototype.slice.call(arguments,2);return function(c,e){e=e||{};return a.apply(this,[c,e.data||b].concat(d))}},program:function(a,b){return function(c,d){d=d||{};return a(c,d.data||b)}},noop:function(){return""},invokePartial:function(a,b,c,d,e,f){options={helpers:d,partials:e,data:f};if(a===undefined){throw new Handlebars.Exception("The partial "+b+" could not be found")}else if(a instanceof Function){return a(c,options)}else if(!Handlebars.compile){throw new Handlebars.Exception("The partial "+b+" could not be compiled when running in runtime-only mode")}else{e[b]=Handlebars.compile(a);return e[b](c,options)}}};Handlebars.template=Handlebars.VM.template;
@@ -0,0 +1 @@
1
+ var Handlebars={};Handlebars.VERSION="1.0.beta.6";Handlebars.helpers={};Handlebars.partials={};Handlebars.registerHelper=function(a,b,c){if(c){b.not=c}this.helpers[a]=b};Handlebars.registerPartial=function(a,b){this.partials[a]=b};Handlebars.registerHelper("helperMissing",function(a){if(arguments.length===2){return undefined}else{throw new Error("Could not find property '"+a+"'")}});var toString=Object.prototype.toString,functionType="[object Function]";Handlebars.registerHelper("blockHelperMissing",function(a,b){var c=b.inverse||function(){},d=b.fn;var e="";var f=toString.call(a);if(f===functionType){a=a.call(this)}if(a===true){return d(this)}else if(a===false||a==null){return c(this)}else if(f==="[object Array]"){if(a.length>0){for(var g=0,h=a.length;g<h;g++){e=e+d(a[g])}}else{e=c(this)}return e}else{return d(a)}});Handlebars.registerHelper("each",function(a,b){var c=b.fn,d=b.inverse;var e="";if(a&&a.length>0){for(var f=0,g=a.length;f<g;f++){e=e+c(a[f])}}else{e=d(this)}return e});Handlebars.registerHelper("if",function(a,b){var c=toString.call(a);if(c===functionType){a=a.call(this)}if(!a||Handlebars.Utils.isEmpty(a)){return b.inverse(this)}else{return b.fn(this)}});Handlebars.registerHelper("unless",function(a,b){var c=b.fn,d=b.inverse;b.fn=d;b.inverse=c;return Handlebars.helpers["if"].call(this,a,b)});Handlebars.registerHelper("with",function(a,b){return b.fn(a)});Handlebars.registerHelper("log",function(a){Handlebars.log(a)});Handlebars.Exception=function(a){var b=Error.prototype.constructor.apply(this,arguments);for(var c in b){if(b.hasOwnProperty(c)){this[c]=b[c]}}this.message=b.message};Handlebars.Exception.prototype=new Error;Handlebars.SafeString=function(a){this.string=a};Handlebars.SafeString.prototype.toString=function(){return this.string.toString()};(function(){var a={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};var b=/&(?!\w+;)|[<>"'`]/g;var c=/[&<>"'`]/;var d=function(b){return a[b]||"&amp;"};Handlebars.Utils={escapeExpression:function(a){if(a instanceof Handlebars.SafeString){return a.toString()}else if(a==null||a===false){return""}if(!c.test(a)){return a}return a.replace(b,d)},isEmpty:function(a){if(typeof a==="undefined"){return true}else if(a===null){return true}else if(a===false){return true}else if(Object.prototype.toString.call(a)==="[object Array]"&&a.length===0){return true}else{return false}}}})();Handlebars.VM={template:function(a){var b={escapeExpression:Handlebars.Utils.escapeExpression,invokePartial:Handlebars.VM.invokePartial,programs:[],program:function(a,b,c){var d=this.programs[a];if(c){return Handlebars.VM.program(b,c)}else if(d){return d}else{d=this.programs[a]=Handlebars.VM.program(b);return d}},programWithDepth:Handlebars.VM.programWithDepth,noop:Handlebars.VM.noop};return function(c,d){d=d||{};return a.call(b,Handlebars,c,d.helpers,d.partials,d.data)}},programWithDepth:function(a,b,c){var d=Array.prototype.slice.call(arguments,2);return function(c,e){e=e||{};return a.apply(this,[c,e.data||b].concat(d))}},program:function(a,b){return function(c,d){d=d||{};return a(c,d.data||b)}},noop:function(){return""},invokePartial:function(a,b,c,d,e,f){options={helpers:d,partials:e,data:f};if(a===undefined){throw new Handlebars.Exception("The partial "+b+" could not be found")}else if(a instanceof Function){return a(c,options)}else if(!Handlebars.compile){throw new Handlebars.Exception("The partial "+b+" could not be compiled when running in runtime-only mode")}else{e[b]=Handlebars.compile(a);return e[b](c,options)}}};Handlebars.template=Handlebars.VM.template;
@@ -0,0 +1,29 @@
1
+ require 'steering/source/version'
2
+
3
+ module Steering
4
+ module Source
5
+ def self.bundled_path
6
+ File.expand_path("../handlebars.js", __FILE__)
7
+ end
8
+
9
+ def self.bundled_runtime_path
10
+ File.expand_path("../handlebars.runtime.js", __FILE__)
11
+ end
12
+
13
+ def self.known_helpers
14
+ @known_helpers ||= {
15
+ :helperMissing => true,
16
+ :blockHelperMissing => true,
17
+ :each => true,
18
+ :if => true,
19
+ :unless => true,
20
+ :with => true,
21
+ :log => true
22
+ }
23
+ end
24
+
25
+ def self.known_helpers=(known_helpers)
26
+ @known_helpers = known_helpers
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ module Steering
2
+ module Source
3
+ VERSION = "1.0.beta.6"
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "steering/source/version"
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "steering-source"
7
+ gem.version = Steering::Source::VERSION
8
+ gem.platform = Gem::Platform::RUBY
9
+ gem.authors = ["Andrew White"]
10
+ gem.email = ["andyw@pixeltrix.co.uk"]
11
+ gem.homepage = "https://github.com/pixeltrix/steering-source"
12
+
13
+ gem.summary = %q{Handlebars.js compiler source}
14
+ gem.description = %q{JavaScript source code for the Handlebars.js compiler.}
15
+
16
+ gem.files = `git ls-files`.split("\n")
17
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ gem.require_paths = ["lib"]
20
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: steering-source
3
+ version: !ruby/object:Gem::Version
4
+ hash: 618873341
5
+ prerelease: 4
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - beta
10
+ - 6
11
+ version: 1.0.beta.6
12
+ platform: ruby
13
+ authors:
14
+ - Andrew White
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2012-03-21 00:00:00 Z
20
+ dependencies: []
21
+
22
+ description: JavaScript source code for the Handlebars.js compiler.
23
+ email:
24
+ - andyw@pixeltrix.co.uk
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - README.md
35
+ - Rakefile
36
+ - lib/steering/handlebars.js
37
+ - lib/steering/handlebars.runtime.js
38
+ - lib/steering/source.rb
39
+ - lib/steering/source/version.rb
40
+ - steering-source.gemspec
41
+ homepage: https://github.com/pixeltrix/steering-source
42
+ licenses: []
43
+
44
+ post_install_message:
45
+ rdoc_options: []
46
+
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">"
62
+ - !ruby/object:Gem::Version
63
+ hash: 25
64
+ segments:
65
+ - 1
66
+ - 3
67
+ - 1
68
+ version: 1.3.1
69
+ requirements: []
70
+
71
+ rubyforge_project:
72
+ rubygems_version: 1.8.14
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: Handlebars.js compiler source
76
+ test_files: []
77
+