Skip to content

Commit 1b945e4

Browse files
authored
Merge pull request #497 from w3c/layer
@​layer support
2 parents 6e45dfe + 0156040 commit 1b945e4

File tree

7 files changed

+2616
-2046
lines changed

7 files changed

+2616
-2046
lines changed

org/w3c/css/atrules/css/AtRuleImport.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class AtRuleImport extends AtRule {
2121

2222
boolean is_url = false;
2323
String linkname = null;
24+
AtRuleLayer layer = null;
2425
AtRuleMedia media = null;
2526

2627
public String keyword() {
@@ -64,6 +65,10 @@ public String toString() {
6465
ret.append(linkname);
6566
ret.append('\"');
6667
}
68+
if (layer != null) {
69+
ret.append(' ');
70+
ret.append(layer.getNameString());
71+
}
6772
if (media != null && !media.isEmpty()) {
6873
ret.append(' ');
6974
ret.append(media.getValueString());
@@ -72,10 +77,12 @@ public String toString() {
7277
return ret.toString();
7378
}
7479

75-
public AtRuleImport(String linkname, boolean is_url, AtRuleMedia media) {
76-
this.media = media;
80+
public AtRuleImport(String linkname, boolean is_url,
81+
AtRuleLayer layer, AtRuleMedia media) {
7782
this.linkname = linkname;
7883
this.is_url = is_url;
84+
this.layer = layer;
85+
this.media = media;
7986
}
8087

8188
public String getLinkname() {
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
//
2+
// Author: Yves Lafon <ylafon@w3.org>
3+
//
4+
// (c) COPYRIGHT W3C, 2025.
5+
// Please first read the full copyright statement in file COPYRIGHT.html
6+
package org.w3c.css.atrules.css;
7+
8+
import org.w3c.css.parser.AtRule;
9+
10+
import java.util.ArrayList;
11+
12+
public class AtRuleLayer extends AtRule {
13+
14+
String name = null;
15+
ArrayList<String> layernames = null;
16+
17+
public String keyword() {
18+
return "layer";
19+
}
20+
21+
public boolean isEmpty() {
22+
return false;
23+
}
24+
25+
/**
26+
* The second must be exactly the same of this one
27+
*/
28+
public boolean canApply(AtRule atRule) {
29+
return false;
30+
}
31+
32+
/**
33+
* The second must only match this one
34+
*/
35+
public boolean canMatch(AtRule atRule) {
36+
return false;
37+
}
38+
39+
public void setName(String name) {
40+
this.name = name;
41+
}
42+
43+
public void addLayerName(String name) {
44+
if (layernames == null) {
45+
layernames = new ArrayList<>();
46+
}
47+
layernames.add(name);
48+
}
49+
50+
/**
51+
* Returns a string representation of the object.
52+
*/
53+
public String toString() {
54+
StringBuilder ret = new StringBuilder();
55+
56+
ret.append('@');
57+
ret.append(keyword());
58+
ret.append(' ');
59+
if (name != null) {
60+
ret.append(name);
61+
} else if (layernames != null) {
62+
boolean first = true;
63+
for (String layer_name : layernames) {
64+
if (!first) {
65+
ret.append(", ");
66+
} else {
67+
first = false;
68+
}
69+
ret.append(layer_name);
70+
}
71+
}
72+
return ret.toString();
73+
}
74+
75+
public String getNameString() {
76+
StringBuilder ret = new StringBuilder();
77+
if (name != null) {
78+
return "layer";
79+
} else {
80+
ret.append("layer(").append(name).append(")");
81+
return ret.toString();
82+
}
83+
}
84+
85+
public String lookupPrefix() {
86+
return "";
87+
}
88+
89+
public AtRuleLayer(String name) {
90+
this.name = name;
91+
}
92+
93+
public AtRuleLayer() {
94+
}
95+
}
96+

org/w3c/css/parser/CssFouffa.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package org.w3c.css.parser;
1212

1313
import org.w3c.css.atrules.css.AtRuleImport;
14+
import org.w3c.css.atrules.css.AtRuleLayer;
1415
import org.w3c.css.atrules.css.AtRuleMedia;
1516
import org.w3c.css.atrules.css.AtRuleNamespace;
1617
import org.w3c.css.atrules.css.media.MediaFeature;
@@ -422,9 +423,9 @@ public void handleNamespaceDeclaration(URL url, String prefix,
422423
* @param file the file name in the import statement
423424
*/
424425
public void handleImport(URL url, String file, boolean is_url,
425-
AtRuleMedia media) {
426+
AtRuleLayer layer, AtRuleMedia media) {
426427
// CssError cssError = null;
427-
AtRuleImport importrule = new AtRuleImport(file, is_url, media);
428+
AtRuleImport importrule = new AtRuleImport(file, is_url, layer, media);
428429
newAtRule(importrule);
429430
endOfAtRule();
430431

0 commit comments

Comments
 (0)