Template strings as a template language.

Andrea Giammarchi andrea.giammarchi at gmail.com
Mon Sep 14 10:50:30 UTC 2015


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/8a5be33b/attachment-0001.html>


More information about the es-discuss mailing list