Sent from my iPhone
> On 14 Sep 2015, at 2:59 PM, Mohsen Azimi <[email protected]> wrote: > > I actually used template strings as templateing in two of my projects. You > can take aa look here: > > https://github.com/mohsen1/json-schema-view-js/blob/master/src/index.js#L59-L175 Will take a look. > > Two main problems I had with this was: > > * There is no `if` condition in template strings. I had to **hack** my way by > yet another template string function that returns empty string if the > condition is falsy: > https://github.com/mohsen1/json-schema-view-js/blob/master/src/helpers.js#L9-L21 Wouldn't you use the ternary operator? E.g. condition ? iftrue : iffalse > * The falsy stuff are not rendered as you expect (empty string): > > ```js > let o = undefined; > console.log(`${o}`); // => 'undefined' > ``` I think that behaviour is what I'd expect (and different toString behaviour in template strings would be confusing). > >> On Sun, Sep 13, 2015 at 6:04 PM <[email protected]> wrote: >> Send es-discuss mailing list submissions to >> [email protected] >> >> To subscribe or unsubscribe via the World Wide Web, visit >> https://mail.mozilla.org/listinfo/es-discuss >> or, via email, send a message with subject or body 'help' to >> [email protected] >> >> You can reach the person managing the list at >> [email protected] >> >> When replying, please edit your Subject line so it is more specific >> than "Re: Contents of es-discuss digest..." >> Today's Topics: >> >> 1. Re: Template strings as a template language. (Thomas) >> 2. Re: Template strings as a template language. (Bob Myers) >> 3. Re: Template strings as a template language. (Mark S. Miller) >> 4. Re: Template strings as a template language. (Isiah Meadows) >> 5. RE: Template strings as a template language. (Ron Buckton) >> >> >> >> ---------- Forwarded message ---------- >> From: Thomas <[email protected]> >> To: Alexander Jones <[email protected]> >> Cc: "Mark S. Miller" <[email protected]>, es-discuss >> <[email protected]> >> Date: Mon, 14 Sep 2015 01:47:37 +1000 >> Subject: Re: Template strings as a template language. >> >> >> > On 14 Sep 2015, at 1:38 AM, Alexander Jones <[email protected]> wrote: >> > >> > Not exactly sure what you mean. But if you are you asking how >> > >> > ```js >> > let template = 'this ${foo} and that ${bar}'; >> > // later... >> > let output = String.evalTemplate(template, {foo: "thing", bar: "other >> > thing"}); >> > ``` >> > is different to >> > >> > ```js >> > let template = ({foo, bar}) => `this ${foo} and that ${bar}`; >> > // later... >> > let output = template({foo: "thing", bar: "other thing"}); >> > ``` >> > >> > then I have a couple of answers off the top of my head: >> > * The value of `template` is a simple string and thus can be trivially >> > loaded from JSON or a file in the former case, but not the latter. Getting >> > the latter involves some kind of eval anyway. >> >> Exactly - being able to not touch modules for something like this is >> important. >> >> > * The number of occurrences of each template parameter (e.g. `"foo"`) is >> > limited to once at the definition site, and once at the invocation site, >> > instead of twice at definition. `with` seems like a non-starter. >> >> Minimising definitions is worth doing. Although, the good thing about >> arguments is that it's possible to specify default values... >> >> >> >> ---------- Forwarded message ---------- >> From: Bob Myers <[email protected]> >> To: [email protected] >> Cc: >> Date: Sun, 13 Sep 2015 21:28:04 +0530 >> Subject: Re: Template strings as a template language. >> Templating languages typically "compile" templates into functions through >> various lexical transformations. >> >> Consider a template file foo.tem: >> >> ``` >> My name is ${this.name}. >> ``` >> >> 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}}`? >> >> Bob >> >> >> >> >> ---------- Forwarded message ---------- >> From: "Mark S. Miller" <[email protected]> >> To: Bob Myers <[email protected]> >> Cc: es-discuss <[email protected]> >> Date: Sun, 13 Sep 2015 16:09:31 -0700 >> Subject: Re: Template strings as a template language. >> >> >>> On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <[email protected]> wrote: >>> Templating languages typically "compile" templates into functions through >>> various lexical transformations. >>> >>> Consider a template file foo.tem: >>> >>> ``` >>> My name is ${this.name}. >>> ``` >>> >>> 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? >> >>> >>> Bob >>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >> >> >> >> -- >> Cheers, >> --MarkM >> >> >> >> ---------- Forwarded message ---------- >> From: Isiah Meadows <[email protected]> >> To: "Mark S. Miller" <[email protected]> >> Cc: Bob Myers <[email protected]>, es-discuss <[email protected]> >> Date: Sun, 13 Sep 2015 19:14:53 -0400 >> Subject: Re: Template strings as a template language. >> On Sun, Sep 13, 2015 at 7:09 PM, Mark S. Miller <[email protected]> wrote: >> > >> > >> > On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <[email protected]> wrote: >> >> >> >> Templating languages typically "compile" templates into functions through >> >> various lexical transformations. >> >> >> >> Consider a template file foo.tem: >> >> >> >> ``` >> >> My name is ${this.name}. >> >> ``` >> >> >> >> 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 >> >> [email protected] >> >> https://mail.mozilla.org/listinfo/es-discuss >> >> >> > >> > >> > >> > -- >> > Cheers, >> > --MarkM >> > >> > _______________________________________________ >> > es-discuss mailing list >> > [email protected] >> > https://mail.mozilla.org/listinfo/es-discuss >> > >> >> >> >> -- >> Isiah Meadows >> >> >> >> >> ---------- Forwarded message ---------- >> From: Ron Buckton <[email protected]> >> To: Isiah Meadows <[email protected]>, "Mark S. Miller" >> <[email protected]> >> Cc: Bob Myers <[email protected]>, es-discuss <[email protected]> >> Date: Mon, 14 Sep 2015 01:04:03 +0000 >> Subject: RE: Template strings as a template language. >> 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 >> Sent: 9/13/2015 4:15 PM >> To: Mark S. Miller >> Cc: Bob Myers; es-discuss >> Subject: Re: Template strings as a template language. >> >> On Sun, Sep 13, 2015 at 7:09 PM, Mark S. Miller <[email protected]> wrote: >> > >> > >> > On Sun, Sep 13, 2015 at 8:58 AM, Bob Myers <[email protected]> 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 >> >> [email protected] >> >> 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 >> > [email protected] >> > 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 >> [email protected] >> 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 >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

