<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>For those interested, this gist better shows what's being discussed: <a href="https://gist.github.com/thomasfoster96/193e7c08aae499f810a1">https://gist.github.com/thomasfoster96/193e7c08aae499f810a1</a></div><div><br></div><div>Ron: Yes, that's already possible - but tagged template strings don't really offer much of an advantage over a function as far as templating goes (IMHO).</div><div><br><div>Thomas</div><div id="AppleMailSignature"><br></div>On 14 Sep 2015, at 11:04 AM, Ron Buckton <<a href="mailto:Ron.Buckton@microsoft.com">Ron.Buckton@microsoft.com</a>> wrote:<br><br></div><blockquote type="cite"><div>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>


<div>
<div>
<div style="font-family:Calibri,sans-serif; font-size:11pt">This is theoretically possible:<br>
<br>
```<br>
let t = $template`<br>
  ${$item.permalink}<br>
  ${$each($item.comments)`<br>
    ${$parent.permalink}<br>
    ${$if($item.title)`<br>
      ${$parent.permalink}<br>
    `}<br>
  `}<br>
`;<br>
let s = t(data);<br>
```<br>
<br>
...given an adequate implementation using proxies (to create bindings for e.g. `$item.permalink` for later evaluation) and tagged template functions. Whether or not this would make for a reasonable implementation is left to the reader.<br>
<br>
Ron</div>
</div>
<div dir="ltr">
<hr>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">From:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt"><a href="mailto:isiahmeadows@gmail.com">Isiah Meadows</a></span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">Sent:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt">‎9/‎13/‎2015 4:15 PM</span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">To:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt"><a href="mailto:erights@google.com">Mark S. Miller</a></span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">Cc:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt"><a href="mailto:rtm@gol.com">Bob Myers</a>;
<a href="mailto:es-discuss@mozilla.org">es-discuss</a></span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">Subject:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt">Re: Template strings as a template language.</span><br>
<br>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On Sun, Sep 13, 2015 at 7:09 PM, Mark S. Miller <<a href="mailto:erights@google.com">erights@google.com</a>> wrote:<br>
><br>
><br>
> On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <<a href="mailto:rtm@gol.com">rtm@gol.com</a>> wrote:<br>
>><br>
>> Templating languages typically "compile" templates into functions through<br>
>> various lexical transformations.<br>
>><br>
>> Consider a template file foo.tem:<br>
>><br>
>> ```<br>
>> My name is ${<a href="https://na01.safelinks.protection.outlook.com/?url=this.name&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=CY6YpX1n5jLScYGX2W1tIi2ndGlA7WI8ZTJUZjDL2Gw%3d">https://na01.safelinks.protection.outlook.com/?url=this.name&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=CY6YpX1n5jLScYGX2W1tIi2ndGlA7WI8ZTJUZjDL2Gw%3d</a>}.<br>
>> ```<br>
>><br>
>> Lexically transform this into<br>
>><br>
>> ```<br>
>> function foo() {<br>
>>   return `My name is ${this.name|}.`;<br>
>> }<br>
>><br>
>> Then invoke the template as eg<br>
>><br>
>> ```<br>
>> foo.call({name: 'Bob'})<br>
>> ```<br>
>><br>
>> Having said that, I doubt if ES6 template strings serve as a useful basis<br>
>> for a full-fledged templating system. To take just one basic example, how<br>
>> would one implement the equivalent of `{{#if}}`?<br>
><br>
><br>
> What does `{{#if}}` mean?<br>
><br>
<br>
An example from Handlebars' website (which is likely where he drew the<br>
syntax from):<br>
<br>
```<br>
{{permalink}}<br>
{{#each comments}}<br>
  {{../permalink}}<br>
<br>
  {{#if title}}<br>
    {{../permalink}}<br>
  {{/if}}<br>
{{/each}}<br>
```<br>
<br>
<br>
<br>
>><br>
>><br>
>> Bob<br>
>><br>
>><br>
>> _______________________________________________<br>
>> es-discuss mailing list<br>
>> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
>> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d">
https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d</a><br>
>><br>
><br>
><br>
><br>
> --<br>
>     Cheers,<br>
>     --MarkM<br>
><br>
> _______________________________________________<br>
> es-discuss mailing list<br>
> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d">
https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d</a><br>
><br>
<br>
<br>
<br>
-- <br>
Isiah Meadows<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d">https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Vk9C%2fonHktgLCsW%2f395PrpBWefRcs6XFqJk7HTVbunE%3d</a><br>
</div>
</span></font>


</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>es-discuss mailing list</span><br><span><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a></span><br><span><a href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a></span><br></div></blockquote></body></html>