Re: [css-variables] CSSVariablesMap enumeration

On Thu, Jun 20, 2013 at 2:24 AM, Alan Cutter <alancutter@chromium.org> wrote:
> Hello,
>
> I've taken over the CSS Variables implementation in Blink. I have some
> concerns/questions regarding iterating over a CSSVariablesMap object.
>
> At the moment enumeration over a CSSVariablesMap is only indicated in an
> example.
>
> var customProps = el.style.var;
> for(customPropName in customProps) {
>   if( knownCustomPropName(customPropName) ) {
>     var customPropValue = customProps[customPropName];
>     /* Processing code here. */
>   }
> }
>
> It is hard to find a concrete specification that it has this behaviour.
> Previously enumeration was implied by the presence of a getter interface
> method. Is enumeration inherited as part of the MapClass interface?

Apologies, the example is out of date.  I'm using some experimental
WebIDL (hasn't made it into the spec quite yet - Cameron should have
it in there this week or the next), so it should be a straight JS Map
object, and have the iteration behavior described in JS.  (That is, it
should have .keys(), .values(), and .items(), which return Arrays with
the corresponding data.  When we get for-of loops, it'll automatically
iterate with whichever one is default for Maps, which I think is
.keys().)

Because of this, there is no longer a getter/setter interface at all.
That kind of generic "every property is valid" interface is
discouraged by TC39, because it produces weird situations (setting a
property on the prototype makes it look like it's a variable, but it's
not).

I'll fix the examples to work with my current WebIDL.

~TJ

Received on Thursday, 20 June 2013 17:42:43 UTC