<html>
<head>
<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>
</head>
<body>
<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 <erights@google.com> wrote:<br>
><br>
><br>
> On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <rtm@gol.com> 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 ${https://na01.safelinks.protection.outlook.com/?url=this.name&data=01%7c01%7cron.buckton%40microsoft.com%7ce705066eae3849ee21f008d2bc913033%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=CY6YpX1n5jLScYGX2W1tIi2ndGlA7WI8ZTJUZjDL2Gw%3d}.<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>
>> es-discuss@mozilla.org<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>
> es-discuss@mozilla.org<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>
es-discuss@mozilla.org<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>
</body>
</html>