Template strings as a template language.

Herby Vojčík herby at mailbox.sk
Mon Sep 14 11:12:27 UTC 2015



Andrea Giammarchi 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

I had the impression the "no-eval" was in fact "no eval or Function", in 
which case this does not count either.

>
> 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 <mailto: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
>     <mailto: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 <mailto: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 <mailto:isiahmeadows at gmail.com>
>>         Sent: ‎9/‎13/‎2015 4:15 PM
>>         To: Mark S. Miller <mailto:erights at google.com>
>>         Cc: Bob Myers <mailto:rtm at gol.com>; es-discuss
>>         <mailto: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 <mailto:erights at google.com>> wrote:
>>         >
>>         >
>>         > On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <rtm at gol.com
>>         <mailto: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
>>         <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 <http://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 <mailto: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
>>         <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 <mailto: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 <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 <mailto: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
>>         <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 <mailto:es-discuss at mozilla.org>
>>         https://mail.mozilla.org/listinfo/es-discuss
>
>         _______________________________________________
>         es-discuss mailing list
>         es-discuss at mozilla.org <mailto: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


More information about the es-discuss mailing list