Template strings as a template language.

Andrea Giammarchi andrea.giammarchi at gmail.com
Mon Sep 14 15:52:06 UTC 2015


again, Function **is** better and different than eval, but I see this
conversation is bringing nothing so I'll just stop explaining.

Regards

On Mon, Sep 14, 2015 at 3:47 PM, Thomas <thomasjamesfoster at bigpond.com>
wrote:

> Doesn't the code in that gist create functions at runtime from strings? If
> so that's not any better than eval.
>
> On 14 Sep 2015, at 8:50 PM, Andrea Giammarchi <andrea.giammarchi at gmail.com>
> wrote:
>
> sorry, early send (I think it was a ctrl+return ? ) ... I was saying ..
>
> without using eval and already discussed months ago:
> https://gist.github.com/WebReflection/8f227532143e63649804
>
> it's based on the glorious `with` statement and it works like a charm
>
> Regards
>
>
>
>
>
>
> On Mon, Sep 14, 2015 at 11:49 AM, Andrea Giammarchi <
> andrea.giammarchi at gmail.com> wrote:
>
>> without using eval, discussed already months ago
>>
>>
>> On Mon, Sep 14, 2015 at 6:03 AM, Thomas <thomasjamesfoster at bigpond.com>
>> wrote:
>>
>>> For those interested, this gist better shows what's being discussed:
>>> https://gist.github.com/thomasfoster96/193e7c08aae499f810a1
>>>
>>> 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).
>>>
>>> Thomas
>>>
>>> On 14 Sep 2015, at 11:04 AM, Ron Buckton <Ron.Buckton at microsoft.com>
>>> wrote:
>>>
>>> This is theoretically possible:
>>>
>>> ```
>>> let t = $template`
>>>   ${$item.permalink}
>>>   ${$each($item.comments)`
>>>     ${$parent.permalink}
>>>     ${$if($item.title)`
>>>       ${$parent.permalink}
>>>     `}
>>>   `}
>>> `;
>>> let s = t(data);
>>> ```
>>>
>>> ...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.
>>>
>>> Ron
>>> ------------------------------
>>> From: Isiah Meadows <isiahmeadows at gmail.com>
>>> Sent: ‎9/‎13/‎2015 4:15 PM
>>> To: Mark S. Miller <erights at google.com>
>>> Cc: Bob Myers <rtm at gol.com>; es-discuss <es-discuss at mozilla.org>
>>> Subject: Re: Template strings as a template language.
>>>
>>> On Sun, Sep 13, 2015 at 7:09 PM, Mark S. Miller <erights at google.com>
>>> wrote:
>>> >
>>> >
>>> > On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <rtm at gol.com> wrote:
>>> >>
>>> >> Templating languages typically "compile" templates into functions
>>> through
>>> >> various lexical transformations.
>>> >>
>>> >> Consider a template file foo.tem:
>>> >>
>>> >> ```
>>> >> 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
>>> }.
>>> >> ```
>>> >>
>>> >> Lexically transform this into
>>> >>
>>> >> ```
>>> >> function foo() {
>>> >>   return `My name is ${this.name|}.`;
>>> >> }
>>> >>
>>> >> Then invoke the template as eg
>>> >>
>>> >> ```
>>> >> foo.call({name: 'Bob'})
>>> >> ```
>>> >>
>>> >> Having said that, I doubt if ES6 template strings serve as a useful
>>> basis
>>> >> for a full-fledged templating system. To take just one basic example,
>>> how
>>> >> would one implement the equivalent of `{{#if}}`?
>>> >
>>> >
>>> > What does `{{#if}}` mean?
>>> >
>>>
>>> An example from Handlebars' website (which is likely where he drew the
>>> syntax from):
>>>
>>> ```
>>> {{permalink}}
>>> {{#each comments}}
>>>   {{../permalink}}
>>>
>>>   {{#if title}}
>>>     {{../permalink}}
>>>   {{/if}}
>>> {{/each}}
>>> ```
>>>
>>>
>>>
>>> >>
>>> >>
>>> >> Bob
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> es-discuss mailing list
>>> >> es-discuss at mozilla.org
>>> >>
>>> 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
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> >     Cheers,
>>> >     --MarkM
>>> >
>>> > _______________________________________________
>>> > es-discuss mailing list
>>> > es-discuss at mozilla.org
>>> >
>>> 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
>>> >
>>>
>>>
>>>
>>> --
>>> Isiah Meadows
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>>
>>> 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
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150914/e060000d/attachment-0001.html>


More information about the es-discuss mailing list