@@ -57,8 +57,6 @@ JavaScriptCompiler.prototype = {
compile : function ( environment , options , context , asObject ) {
this . environment = environment ;
this . options = options ;
this . stringParams = this . options . stringParams ;
this . trackIds = this . options . trackIds ;
this . precompile = !asObject ;
this . name = this . environment . name ;
@@ -498,37 +496,7 @@ JavaScriptCompiler.prototype = {
this . push ( [ this . aliasable ( 'container.lambda' ) , '(' , this . popStack ( ) , ', ' , this . contextName ( 0 ) , ')' ] ) ;
} ,
// [pushStringParam]
//
// On stack, before: ...
// On stack, after: string, currentContext, ...
//
// This opcode is designed for use in string mode, which
// provides the string value of a parameter along with its
// depth rather than resolving it immediately.
pushStringParam : function ( string , type ) {
this . pushContext ( ) ;
this . pushString ( type ) ;
// If it's a subexpression, the string result
// will be pushed after this opcode.
if ( type !== 'SubExpression' ) {
if ( typeof string === 'string' ) {
this . pushString ( string ) ;
} else {
this . pushStackLiteral ( string ) ;
}
}
} ,
emptyHash : function ( omitEmpty ) {
if ( this . trackIds ) {
this . push ( '{}' ) ; // hashIds
}
if ( this . stringParams ) {
this . push ( '{}' ) ; // hashContexts
this . push ( '{}' ) ; // hashTypes
}
this . pushStackLiteral ( omitEmpty ? 'undefined' : '{}' ) ;
} ,
pushHash : function ( ) {
@@ -541,14 +509,6 @@ JavaScriptCompiler.prototype = {
let hash = this . hash ;
this . hash = this . hashes . pop ( ) ;
if ( this . trackIds ) {
this . push ( this . objectLiteral ( hash . ids ) ) ;
}
if ( this . stringParams ) {
this . push ( this . objectLiteral ( hash . contexts ) ) ;
this . push ( this . objectLiteral ( hash . types ) ) ;
}
this . push ( this . objectLiteral ( hash . values ) ) ;
} ,
@@ -727,44 +687,7 @@ JavaScriptCompiler.prototype = {
//
// Pops a value off the stack and assigns it to the current hash
assignToHash : function ( key ) {
let value = this . popStack ( ) ,
context ,
type ,
id ;
if ( this . trackIds ) {
id = this . popStack ( ) ;
}
if ( this . stringParams ) {
type = this . popStack ( ) ;
context = this . popStack ( ) ;
}
let hash = this . hash ;
if ( context ) {
hash . contexts [ key ] = context ;
}
if ( type ) {
hash . types [ key ] = type ;
}
if ( id ) {
hash . ids [ key ] = id ;
}
hash . values [ key ] = value ;
} ,
pushId : function ( type , name , child ) {
if ( type === 'BlockParam' ) {
this . pushStackLiteral (
'blockParams[' + name [ 0 ] + '].path[' + name [ 1 ] + ']'
+ ( child ? ' + ' + JSON . stringify ( '.' + child ) : '' ) ) ;
} else if ( type === 'PathExpression' ) {
this . pushString ( name ) ;
} else if ( type === 'SubExpression' ) {
this . pushStackLiteral ( 'true' ) ;
} else {
this . pushStackLiteral ( 'null' ) ;
}
this . hash . values [ key ] = this . popStack ( ) ;
} ,
// HELPERS
@@ -997,9 +920,6 @@ JavaScriptCompiler.prototype = {
setupParams : function ( helper , paramSize , params ) {
let options = { } ,
contexts = [ ] ,
types = [ ] ,
ids = [ ] ,
objectArgs = !params ,
param ;
@@ -1010,14 +930,6 @@ JavaScriptCompiler.prototype = {
options . name = this . quotedString ( helper ) ;
options . hash = this . popStack ( ) ;
if ( this . trackIds ) {
options . hashIds = this . popStack ( ) ;
}
if ( this . stringParams ) {
options . hashTypes = this . popStack ( ) ;
options . hashContexts = this . popStack ( ) ;
}
let inverse = this . popStack ( ) ,
program = this . popStack ( ) ;
@@ -1034,28 +946,12 @@ JavaScriptCompiler.prototype = {
while ( i -- ) {
param = this . popStack ( ) ;
params [ i ] = param ;
if ( this . trackIds ) {
ids [ i ] = this . popStack ( ) ;
}
if ( this . stringParams ) {
types [ i ] = this . popStack ( ) ;
contexts [ i ] = this . popStack ( ) ;
}
}
if ( objectArgs ) {
options . args = this . source . generateArray ( params ) ;
}
if ( this . trackIds ) {
options . ids = this . source . generateArray ( ids ) ;
}
if ( this . stringParams ) {
options . types = this . source . generateArray ( types ) ;
options . contexts = this . source . generateArray ( contexts ) ;
}
if ( this . options . data ) {
options . data = 'data' ;
}