Skip to content

Commit 5fa396e

Browse files
committed
Fill in base details of the classes.
1 parent 177bb45 commit 5fa396e

File tree

1 file changed

+42
-17
lines changed

1 file changed

+42
-17
lines changed

css-parser-api/Overview.bs

+42-17
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ partial interface CSS {
4646
CSSParserRule parseRule(DOMString css, optional CSSParserOptions options);
4747
sequence<(CSSParserDeclaration or CSSParserRule)> parseDeclarationList(DOMString css, optional CSSParserOptions options);
4848
CSSParserDeclaration parseDeclaration(DOMString css, optional CSSParserOptions options);
49-
(CSSParserValue or DOMString) parseValue(DOMString css);
50-
sequence<(CSSParserValue or DOMString)> parseValueList(DOMString css);
51-
sequence<sequence<(CSSParserValue or DOMString)>> parseCommaValueList(DOMString css);
49+
CSSParserValue parseValue(DOMString css);
50+
sequence<CSSParserValue> parseValueList(DOMString css);
51+
sequence<sequence<CSSParserValue>> parseCommaValueList(DOMString css);
5252
};
5353

5454
dictionary CSSParserOptions {
@@ -57,6 +57,23 @@ dictionary CSSParserOptions {
5757
};
5858
</pre>
5959

60+
Issue: {{parseCommaValueList()}} is in Syntax, and thus here,
61+
because it's actually a very common operation.
62+
It's trivial to do yourself
63+
(just call {{parseValueList()}} and then split into an array on top-level commas),
64+
but comma-separated lists are so common
65+
that it was worthwhile to improve spec ergonomics
66+
by providing a shortcut for that functionality.
67+
Is it worth it to provide this to JS as well?
68+
69+
Issue: Do we handle comments?
70+
Currently I don't;
71+
Syntax by default just drops comments,
72+
but allows an impl to preserve information about them if they want.
73+
Maybe add an option to preserve comments?
74+
If so, they can appear *anywhere*,
75+
in any API that returns a sequence.
76+
6077
Parser Values {#parser-values}
6178
==============================
6279

@@ -66,54 +83,62 @@ interface CSSParserRule {
6683
};
6784

6885
interface CSSParserAtRule : CSSParserRule {
69-
86+
attribute DOMString name;
87+
attribute sequence&lt;CSSParserValue> prelude;
88+
attribute sequence&lt;CSSParserRule>? body;
89+
/* nullable to handle at-statements */
7090
};
7191

7292
interface CSSParserQualifiedRule : CSSParserRule {
73-
93+
attribute sequence&lt;CSSParserValue> prelude;
94+
attribute sequence&lt;CSSParserRule> body;
7495
};
7596

76-
interface CSSParserDeclaration {
77-
97+
interface CSSParserDeclaration : CSSParserRule {
98+
attribute DOMString name;
99+
attribute sequence&lt;CSSParserValue> body;
78100
};
79101

80102
interface CSSParserValue {
81-
82103
};
83104

84105
interface CSSParserBlock : CSSParserValue {
85-
106+
attribute DOMString name; /* "[]", "{}", or "()" */
107+
attribute sequence&lt;CSSParserValue> body;
86108
};
87109

88110
interface CSSParserFunction : CSSParserValue {
89-
111+
attribute DOMString name;
112+
attribute sequence&lt;sequence&lt;CSSParserValue>> args;
90113
};
91114

92115
interface CSSParserIdent : CSSParserValue {
93-
116+
attribute DOMString value;
94117
};
95118

96119
interface CSSParserNumber : CSSParserValue {
97-
120+
attribute double value;
98121
};
99122

100123
interface CSSParserPercentage : CSSParserValue {
101-
124+
attribute double value;
102125
};
103126

104127
interface CSSParserDimension : CSSParserValue {
105-
128+
attribute double value;
129+
attribute DOMString type;
106130
};
107131

108132
interface CSSParserAtKeyword : CSSParserValue {
109-
133+
attribute DOMString value;
110134
};
111135

112136
interface CSSParserHash : CSSParserValue {
113-
137+
attribute DOMString value;
138+
/* expose an "is ident" boolean? */
114139
};
115140

116141
interface CSSParserString : CSSParserValue {
117-
142+
attribute DOMString value;
118143
};
119144
</pre>

0 commit comments

Comments
 (0)