react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / handlebars / dist / amd / handlebars / compiler / printer.js
80738 viewsdefine(1["./visitor","exports"],2function(__dependency1__, __exports__) {3"use strict";4var Visitor = __dependency1__["default"];56function print(ast) {7return new PrintVisitor().accept(ast);8}910__exports__.print = print;function PrintVisitor() {11this.padding = 0;12}1314__exports__.PrintVisitor = PrintVisitor;PrintVisitor.prototype = new Visitor();1516PrintVisitor.prototype.pad = function(string) {17var out = "";1819for(var i=0,l=this.padding; i<l; i++) {20out = out + " ";21}2223out = out + string + "\n";24return out;25};2627PrintVisitor.prototype.Program = function(program) {28var out = '',29body = program.body,30i, l;3132if (program.blockParams) {33var blockParams = 'BLOCK PARAMS: [';34for(i=0, l=program.blockParams.length; i<l; i++) {35blockParams += ' ' + program.blockParams[i];36}37blockParams += ' ]';38out += this.pad(blockParams);39}4041for(i=0, l=body.length; i<l; i++) {42out = out + this.accept(body[i]);43}4445this.padding--;4647return out;48};4950PrintVisitor.prototype.MustacheStatement = function(mustache) {51return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');52};5354PrintVisitor.prototype.BlockStatement = function(block) {55var out = "";5657out = out + this.pad('BLOCK:');58this.padding++;59out = out + this.pad(this.SubExpression(block));60if (block.program) {61out = out + this.pad('PROGRAM:');62this.padding++;63out = out + this.accept(block.program);64this.padding--;65}66if (block.inverse) {67if (block.program) { this.padding++; }68out = out + this.pad('{{^}}');69this.padding++;70out = out + this.accept(block.inverse);71this.padding--;72if (block.program) { this.padding--; }73}74this.padding--;7576return out;77};7879PrintVisitor.prototype.PartialStatement = function(partial) {80var content = 'PARTIAL:' + partial.name.original;81if(partial.params[0]) {82content += ' ' + this.accept(partial.params[0]);83}84if (partial.hash) {85content += ' ' + this.accept(partial.hash);86}87return this.pad('{{> ' + content + ' }}');88};8990PrintVisitor.prototype.ContentStatement = function(content) {91return this.pad("CONTENT[ '" + content.value + "' ]");92};9394PrintVisitor.prototype.CommentStatement = function(comment) {95return this.pad("{{! '" + comment.value + "' }}");96};9798PrintVisitor.prototype.SubExpression = function(sexpr) {99var params = sexpr.params, paramStrings = [], hash;100101for(var i=0, l=params.length; i<l; i++) {102paramStrings.push(this.accept(params[i]));103}104105params = "[" + paramStrings.join(", ") + "]";106107hash = sexpr.hash ? " " + this.accept(sexpr.hash) : "";108109return this.accept(sexpr.path) + " " + params + hash;110};111112PrintVisitor.prototype.PathExpression = function(id) {113var path = id.parts.join('/');114return (id.data ? '@' : '') + 'PATH:' + path;115};116117118PrintVisitor.prototype.StringLiteral = function(string) {119return '"' + string.value + '"';120};121122PrintVisitor.prototype.NumberLiteral = function(number) {123return "NUMBER{" + number.value + "}";124};125126PrintVisitor.prototype.BooleanLiteral = function(bool) {127return "BOOLEAN{" + bool.value + "}";128};129130PrintVisitor.prototype.Hash = function(hash) {131var pairs = hash.pairs;132var joinedPairs = [];133134for (var i=0, l=pairs.length; i<l; i++) {135joinedPairs.push(this.accept(pairs[i]));136}137138return 'HASH{' + joinedPairs.join(', ') + '}';139};140PrintVisitor.prototype.HashPair = function(pair) {141return pair.key + '=' + this.accept(pair.value);142};143});144145