Re: [heycam/webidl] Replace serializers by toJSON and [Default] extended attribute (#323)

tobie commented on this pull request.



> +
+    To invoke the <dfn>collect attribute values</dfn> abstract operation
+    with [=stack=] |stack| and [=ordered map=] |map| as arguments,
+    run the the following steps:
+
+    1.  Let |I| be the result of invoking [=stack/pop=] from |stack|.
+    1.  [=list|For each=] [=implements statements=] where the left-hand side [=identifier=] references |I|:
+        1.  Let |rhs| be the [=interface=] represented by the right-hand side [=identifier=].
+        1.  Let |interfaces| be the result of [=create an inheritance stack|creating an inheritance stack=]
+            for [=interface=] |rhs|.
+        1.  invoke [=collect attribute values=], passing it |interfaces| and |map|.
+    1.  If a “toJSON” operation with a [{{Default}}] [=extended attribute=] is declared on |I|, then
+        [=list|for each=] [=exposed=] [=regular attribute=] |attr|
+        that is an [=interface member=] of |I|, in order:
+        1.  Let |id| be the [=identifier=] of |attr|.
+        1.  Let |value| be the underlying value of |attr|.

A preference (wrapping the whole thing in div.algorithm vs. marking variables as ignorable in Bikeshed): 

```
<div algorithm>
    To <dfn export>get the underlying value</dfn> of an attribute |attr| given a value |target|,
    return the result of performing the actions listed in the description of |attr| that occur on getting,
    or those listed in the description of the inherited attribute,
    if |attr| is declared to inherit its getter, on |target| if |target| is not null.
</div>
```

or:

```
To <dfn export>get the underlying value</dfn> of an attribute <var ignore>attr</var>given a value <var ignore>target</var>,
return the result of performing the actions listed in the description of <var ignore>attr</var> that occur on getting,
or those listed in the description of the inherited attribute,
if <var ignore>attr</var> is declared to inherit its getter,
on <var ignore>target</var> if <var ignore>target</var> is not null.
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/heycam/webidl/pull/323#discussion_r116627589

Received on Monday, 15 May 2017 23:53:46 UTC