Based on the excellent DoT.js website

Template

Sqrl.Compile()

function anonymous(options,Sqrl ) { var tR='';tR+='Hi\n';console.log("Hope you like Squirrelly!");tR+=Sqrl.F.e(options.htmlstuff);for(var key in options.obj){if(!options.obj.hasOwnProperty(key)) continue;tR+=(function(hvals){var tR='';var hvals0=hvals;tR+='\nReversed value: ';tR+=Sqrl.F.reverse(Sqrl.F.e(hvals.this));tR+=', Key: ';tR+=Sqrl.F.e(hvals.key);if(hvals.key==="thirdchild"){for(var i=0;i<options.obj[hvals.key].length; i++){tR+=(function(hvals){var tR='';var hvals2=hvals;tR+='\nSalutations! Index: ';tR+=Sqrl.F.e(hvals.index);tR+=', old key: ';tR+=Sqrl.F.e(hvals0.key);return tR})({this:options.obj[hvals.key][i],index:i})};}return tR})({this:options.obj[key], key: key})};tR+='\n';tR+=Sqrl.H.customhelper([],function(hvals){var hvals3=hvals;var tR='';return tR},{cabbage:function(hvals){var hvals3=hvals;var tR='';tR+='Cabbages taste good\n';return tR},pineapple:function(hvals){var hvals3=hvals;var tR='';tR+='As do pineapples\n';return tR}});tR+='\nThis is a partial: ';tR+='Partial content: the value of arr is ';tR+=Sqrl.F.e(options.arr);tR+='\nCustom delimeters!\n';tR+=Sqrl.F.e(options.arr);return tR }

Data

Result

Hi &lt;script>alert(&#39;hey&#39;)&lt;/script>&lt;p>alert(&#39;hey&#39;)&lt;/p>&lt;p>alert(&#39;hey&#39;)&lt;/p>&lt;p>alert(&#39;hey&#39;)&lt;/p> Reversed value: IH, Key: firstchild Reversed value: YEH, Key: secondchild Reversed value: 4,5,2,3,6,3, Key: thirdchild Salutations! Index: 0, old key: thirdchild Salutations! Index: 1, old key: thirdchild Salutations! Index: 2, old key: thirdchild Salutations! Index: 3, old key: thirdchild Salutations! Index: 4, old key: thirdchild Salutations! Index: 5, old key: thirdchild Custom Helper speaking! Block found named cabbage, with value: Cabbages taste good Block found named pineapple, with value: As do pineapples This is a partial: Partial content: the value of arr is Hey,&lt;p>Malicious XSS&lt;/p>,Hey,3,12 Custom delimeters! Hey,&lt;p>Malicious XSS&lt;/p>,Hey,3,12