Escape double braces {{ ... }} in Mustache template. (templating a template in NodeJS)


I'm trying to template a template, like below:

  "name" : "{{name}}",
  "description" : "{{description}}"

{{{debug this}}}


Where I want to triple brackets to stay, but double brackets to be replaced with the JSON passed in. Anyone know the best way to do this without writing post-process JS code, and if not, is there a good nodeJS template engine for this type of scenario?

12/13/2013 5:38:41 PM

Accepted Answer

You can switch delimiters to something that won't conflict with the triple mustaches, like erb-style tags:

{{=<% %>=}}
  "name": "<% name %>",
  "description": "<% description %>"
{{{debug this}}}
<%={{ }}=%>

Note that you can do this as many times as you like throughout your template. Any time you run into something that conflicts, pick a new set of delimiters :)

12/19/2012 8:33:53 AM

As described in this Question handlebars doesn't support changing the delimiters. But you can escape the double braces with a backslash like this:


... \{{ myHandlbarsVar }} ...

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow