JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://dl.dropboxusercontent.com/s/1iu4c1zmp4mz4md/handlebars.js"></script>
<h2>Subexpressions bug</h2>
<div>
<strong>Version:</strong>
<span id="version"></span>
</div>
<br />
<div><strong>Result:</strong></div>
<div id="result"></div>
<br />
<div><strong>Expected:</strong></div>
<div id="expected"></div>
JavaScript
var string = '{{input aria-label=(t item.field) placeholder=(t item.placeholder)}}';
var context = {
item: {
field: "Name",
placeholder: "Example User"
}
};
var helpers = {
input: function(options) {
var hash = options.hash;
var ariaLabel = Handlebars.Utils.escapeExpression(hash['aria-label']);
var placeholder = Handlebars.Utils.escapeExpression(hash.placeholder);
return new Handlebars.SafeString('<input aria-label="' + ariaLabel + '" placeholder="' + placeholder + '" />');
},
t: function(defaultString) {
return new Handlebars.SafeString(defaultString);
}
};
Handlebars.registerHelper('input', helpers.input);
Handlebars.registerHelper('t', helpers.t);
var template = Handlebars.compile(string);
var expected = '<input aria-label="Name" placeholder="Example User" />';
document.getElementById('version').innerText += Handlebars.VERSION;
document.getElementById('result').innerText += template(context);
document.getElementById('expected').innerText += expected;