<div dir="ltr">Hi Mark, thanks for pointing that out but if I understand the problem correctly then the snippet I've suggested concatenates strings and will never produce those problematic syntax errors. Can I say it's still safe? Or do you think it might have some problem in Safari?<div><br></div><div>Cheers</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 22, 2015 at 11:28 AM, Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com" target="_blank">erights@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sun, Mar 22, 2015 at 6:46 AM, Andrea Giammarchi <span dir="ltr"><<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>There's no such functionality indeed but you might want to have a look at this gist: <a href="https://gist.github.com/WebReflection/8f227532143e63649804" target="_blank">https://gist.github.com/WebReflection/8f227532143e63649804</a></div><div><br></div><div>It gives you the ability to write `<span style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:11.8999996185303px;line-height:1.45;color:rgb(223,80,0)"><span>'</span>test1 ${1 + 2} test2 ${3 + 4}<span>'</span></span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:11.8999996185303px;line-height:1.45;background-color:rgb(247,247,247)">.template();</span>` and read `test1 3 test2 7` or to pass an object similar to .Net String.format so that your Stack overflow code would be like the following:</div><div><br></div><div>```js</div><div><br></div><div>let a = "b:${b}";</div><div>let b = 10;</div><div><br>console.log(a.template({b:b}));<br></div><div><br></div>// or<div><br>console.log(a.template({b:27}));<div><br></div><div>```</div><div><br></div><div>You pass named properties and it works with nested properties too (i.e. ${down.the.road})</div><div><br></div><div>It does use Function which is safe,</div></div></div></blockquote><div><br></div><div><br></div></span><div>Function is safe almost everywhere, but it is worth pointing out</div><div><br></div><div><a href="https://bugs.webkit.org/show_bug.cgi?id=106160" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=106160</a><br></div><div><a href="https://bugs.webkit.org/show_bug.cgi?id=131137" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=131137</a><br></div><div>test_CANT_SAFELY_VERIFY_SYNTAX at <a href="https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/repairES5.js#3198" target="_blank">https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/repairES5.js#3198</a></div><div>repair_CANT_SAFELY_VERIFY_SYNTAX at <a href="https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/repairES5.js#4170" target="_blank">https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses/repairES5.js#4170</a></div><div><br></div><div>After the repair, the Function constructor is safe again on Safari, but at considerable expense.</div><span class=""><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div> compared to eval, and needed to eventually de-opt from 'use strict' but of course you could write your own parser avoiding Function completely.</div><div><br></div><div>Finally, I agree it would be nice to be able to have a standard way to template strings in JS, the templating as it is plays very poorly with runtime generated strings, using eval for that looks the dirtiest thing on earth.</div><div><br></div><div>Regards</div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Sun, Mar 22, 2015 at 10:05 AM, KOLANICH <span dir="ltr"><<a href="mailto:kolan_n@mail.ru" target="_blank">kolan_n@mail.ru</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>
<div>I needed a functionality but haven't found it.<br>See <a href="https://stackoverflow.com/questions/29182244/convert-a-string-to-a-template-string" target="_blank">https://stackoverflow.com/questions/29182244/convert-a-string-to-a-template-string</a> for more details.<br>I think that this should be included into standard;<br><br><br>Also we need a standard format string functionality like <a href="https://msdn.microsoft.com/en-us/library/system.string.format.aspx" target="_blank">https://msdn.microsoft.com/en-us/library/system.string.format.aspx</a> and <a href="https://docs.python.org/2/library/string.html#string-formatting" target="_blank"></a><a href="https://docs.python.org/2/library/string.html#string-formatting" target="_blank">https://docs.python.org/2/library/string.html#string-formatting</a><br></div>
<br></div></div>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></span></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>    Cheers,<br>    --MarkM</div>
</font></span></div></div>
</blockquote></div><br></div>