- From: Scott Miles <sjmiles@google.com>
- Date: Tue, 14 May 2013 16:45:32 -0700
- To: Robert Ginda <rginda@chromium.org>
- Cc: Elliott Sprehn <esprehn@gmail.com>, Daniel Buchner <daniel@mozilla.com>, Erik Arvidsson <arv@chromium.org>, Dimitri Glazkov <dglazkov@google.com>, public-webapps <public-webapps@w3.org>, Rick Waldron <waldron.rick@gmail.com>, Allen Wirfs-Brock <allen@wirfs-brock.com>
- Message-ID: <CAHbmOLYPv=L=NRuQxtNDsxmRqtUss_CHPos7n4PczqUdHjbPPQ@mail.gmail.com>
That's clever. On Tue, May 14, 2013 at 3:38 PM, Robert Ginda <rginda@chromium.org> wrote: > On Tue, May 14, 2013 at 2:31 PM, Scott Miles <sjmiles@google.com> wrote: > >> And to be clear, we also have to be able to do this (not that anybody >> said anything to the contrary) >> >> <element ...> >> <script src="..."></script> >> </element> >> >> If there is more than once <script>, I assume the last one 'wins'? >> >> > If that's the case then authors could end each component with > <script>MyComponentClass</script>, setting the final completion value > without forcing extra parens or a looks-like-a-noop-but-isn't expression > (a-la Perl) at the end of the component source. > > >> On Tue, May 14, 2013 at 2:30 PM, Scott Miles <sjmiles@google.com> wrote: >> >>> So, I don't love the extra punctuation, but there are other good things >>> here. We do away with duplication of tag name and the magic >>> [something].register call. >>> >>> Presumably I can still set up private members in a closure, like this >>> (?): >>> >>> <script> >>> var privateStack = []; >>> (class XFoo: HTMLElement { readyCallback() { privateStack.push(...); } >>> }); >>> </script> >>> >>> The last critical bit is some way to access our <element>. We could have >>> another callback which is essentially a static, called once per <element> >>> to allow access to the <element> itself, but I don't know where we'd put it >>> other than on the prototype itself. >>> >>> Scott >>> >>> >>> >>> On Tue, May 14, 2013 at 2:09 PM, Elliott Sprehn <esprehn@gmail.com>wrote: >>> >>>> >>>> >>>> >>>> On Tue, May 14, 2013 at 2:04 PM, Daniel Buchner <daniel@mozilla.com>wrote: >>>> >>>>> >>>>> On Tue, May 14, 2013 at 1:58 PM, Erik Arvidsson <arv@chromium.org>wrote: >>>>> >>>>>> >>>>>> <element name="foo-bar"> >>>>>> ... >>>>>> <script> >>>>>> class FooBar { >>>>>> ... >>>>>> }; >>>>>> </script> >>>>>> </element> >>>>> >>>>> >>>>> Is it then possible to explicitly return the class after definition? >>>>> I'm asking because <script> return value is something I was not aware of. >>>>> >>>> >>>> Yes, by wrapping it in parenthesis. The spec >>>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-13.5 seems to >>>> say that (class X { }) returns X but class X { } at the top level returns >>>> undefined. >>>> >>>> Thankfully it's not too gross, you'd just have: >>>> >>>> <script> >>>> (class MyCustomWidget : HTMLElement { >>>> // ... >>>> }) >>>> </script> >>>> >>>> ... ... >>>>> <script> >>>>> class FooBar { >>>>> ... >>>>> }; >>>>> >>>>> return FooBar; >>>>> >>>>> >>>>> >>>> "return" isn't valid in the top level execution block which sucks. It >>>> would nice if we relaxed that restriction and allowed a return up there. >>>> >>>> - E >>>> >>>> >>> >> >
Received on Tuesday, 14 May 2013 23:46:00 UTC