Skip to content

Commit 618f94c

Browse files
committed
re: #377 instead of filtering null entries, avoid adding them, or clear them as needed during parsing time
1 parent d755ce2 commit 618f94c

File tree

3 files changed

+92
-73
lines changed

3 files changed

+92
-73
lines changed

org/w3c/css/atrules/css/AtRuleMedia.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,18 @@ public abstract AtRuleMedia addMedia(String restrictor, String medium,
3131
* Adds a media
3232
*/
3333
public AtRuleMedia addMedia(Media m) {
34-
allMedia.add(m);
34+
if (m != null) {
35+
allMedia.add(m);
36+
}
3537
return this;
3638
}
3739

40+
public void removeLastMedia() {
41+
if (!allMedia.isEmpty()) {
42+
allMedia.remove(allMedia.size() - 1);
43+
}
44+
}
45+
3846
/**
3947
* Add a media feature to the current media, like (color:1)
4048
*
@@ -62,7 +70,7 @@ public ArrayList<Media> getMediaList() {
6270

6371
public String getCurrentMedia() {
6472
if (!allMedia.isEmpty()) {
65-
return allMedia.get(allMedia.size()-1).getMedia();
73+
return allMedia.get(allMedia.size() - 1).getMedia();
6674
}
6775
return null;
6876
}
@@ -85,6 +93,7 @@ public String lookupPrefix() {
8593
return "";
8694

8795
}
96+
8897
/**
8998
* Use to display the value part of the @media rule
9099
* used where the value is used, like as an option in @import

org/w3c/css/parser/analyzer/CssParser.java

Lines changed: 77 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373
import org.w3c.css.values.CssVariable;
7474
import org.w3c.css.values.CssVolume;
7575

76+
import static org.w3c.css.util.StringUtils.convertIdent;
77+
7678
import java.io.InputStream;
7779
import java.io.InputStreamReader;
7880
import java.io.UnsupportedEncodingException;
@@ -1764,6 +1766,10 @@ final public void mediaquerylist(AtRuleMedia mediaRule) throws ParseException {
17641766
mediaRule.addMediaFeature(mf, ac);
17651767
mf.setCombinator(comb);
17661768
// mf.setParens();
1769+
} else {
1770+
if (defaultMedia) {
1771+
mediaRule.removeLastMedia();
1772+
}
17671773
}
17681774
}
17691775

@@ -9080,19 +9086,6 @@ private boolean jj_2_32(int xla)
90809086
finally { jj_save(31, xla); }
90819087
}
90829088

9083-
private boolean jj_3R_429()
9084-
{
9085-
if (jj_3R_230()) return true;
9086-
return false;
9087-
}
9088-
9089-
private boolean jj_3_22()
9090-
{
9091-
if (jj_3R_238()) return true;
9092-
if (jj_3R_239()) return true;
9093-
return false;
9094-
}
9095-
90969089
private boolean jj_3R_260()
90979090
{
90989091
if (jj_3R_233()) return true;
@@ -9609,12 +9602,6 @@ private boolean jj_3R_423()
96099602
return false;
96109603
}
96119604

9612-
private boolean jj_3_3()
9613-
{
9614-
if (jj_3R_223()) return true;
9615-
return false;
9616-
}
9617-
96189605
private boolean jj_3R_277()
96199606
{
96209607
if (jj_scan_token(S)) return true;
@@ -9641,6 +9628,12 @@ private boolean jj_3R_296()
96419628
return false;
96429629
}
96439630

9631+
private boolean jj_3_3()
9632+
{
9633+
if (jj_3R_223()) return true;
9634+
return false;
9635+
}
9636+
96449637
private boolean jj_3R_245()
96459638
{
96469639
Token xsp;
@@ -10150,12 +10143,6 @@ private boolean jj_3R_244()
1015010143
return false;
1015110144
}
1015210145

10153-
private boolean jj_3R_404()
10154-
{
10155-
if (jj_scan_token(COLON)) return true;
10156-
return false;
10157-
}
10158-
1015910146
private boolean jj_3R_243()
1016010147
{
1016110148
if (jj_scan_token(ANY)) return true;
@@ -10189,6 +10176,12 @@ private boolean jj_3_8()
1018910176
return false;
1019010177
}
1019110178

10179+
private boolean jj_3R_404()
10180+
{
10181+
if (jj_scan_token(COLON)) return true;
10182+
return false;
10183+
}
10184+
1019210185
private boolean jj_3_29()
1019310186
{
1019410187
Token xsp;
@@ -10210,25 +10203,6 @@ private boolean jj_3R_273()
1021010203
return false;
1021110204
}
1021210205

10213-
private boolean jj_3R_393()
10214-
{
10215-
if (jj_scan_token(LPAREN)) return true;
10216-
Token xsp;
10217-
while (true) {
10218-
xsp = jj_scanpos;
10219-
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10220-
}
10221-
if (jj_scan_token(IDENT)) return true;
10222-
while (true) {
10223-
xsp = jj_scanpos;
10224-
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10225-
}
10226-
xsp = jj_scanpos;
10227-
if (jj_3R_404()) jj_scanpos = xsp;
10228-
if (jj_scan_token(RPAREN)) return true;
10229-
return false;
10230-
}
10231-
1023210206
private boolean jj_3R_434()
1023310207
{
1023410208
if (jj_3R_237()) return true;
@@ -10263,6 +10237,25 @@ private boolean jj_3R_242()
1026310237
return false;
1026410238
}
1026510239

10240+
private boolean jj_3R_393()
10241+
{
10242+
if (jj_scan_token(LPAREN)) return true;
10243+
Token xsp;
10244+
while (true) {
10245+
xsp = jj_scanpos;
10246+
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10247+
}
10248+
if (jj_scan_token(IDENT)) return true;
10249+
while (true) {
10250+
xsp = jj_scanpos;
10251+
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10252+
}
10253+
xsp = jj_scanpos;
10254+
if (jj_3R_404()) jj_scanpos = xsp;
10255+
if (jj_scan_token(RPAREN)) return true;
10256+
return false;
10257+
}
10258+
1026610259
private boolean jj_3R_412()
1026710260
{
1026810261
if (jj_3R_274()) return true;
@@ -10329,12 +10322,6 @@ private boolean jj_3R_261()
1032910322
return false;
1033010323
}
1033110324

10332-
private boolean jj_3R_249()
10333-
{
10334-
if (jj_3R_280()) return true;
10335-
return false;
10336-
}
10337-
1033810325
private boolean jj_3R_262()
1033910326
{
1034010327
if (jj_scan_token(FUNCTIONSLOTTED)) return true;
@@ -10363,32 +10350,15 @@ private boolean jj_3R_366()
1036310350
return false;
1036410351
}
1036510352

10366-
private boolean jj_3R_365()
10367-
{
10368-
if (jj_scan_token(TILDE)) return true;
10369-
return false;
10370-
}
10371-
10372-
private boolean jj_3R_222()
10353+
private boolean jj_3R_249()
1037310354
{
10374-
Token xsp;
10375-
xsp = jj_scanpos;
10376-
if (jj_3R_248()) {
10377-
jj_scanpos = xsp;
10378-
if (jj_3R_249()) return true;
10379-
}
10355+
if (jj_3R_280()) return true;
1038010356
return false;
1038110357
}
1038210358

10383-
private boolean jj_3R_248()
10359+
private boolean jj_3R_365()
1038410360
{
10385-
if (jj_scan_token(NOT)) return true;
10386-
Token xsp;
10387-
while (true) {
10388-
xsp = jj_scanpos;
10389-
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10390-
}
10391-
if (jj_3R_280()) return true;
10361+
if (jj_scan_token(TILDE)) return true;
1039210362
return false;
1039310363
}
1039410364

@@ -10415,6 +10385,29 @@ private boolean jj_3R_363()
1041510385
return false;
1041610386
}
1041710387

10388+
private boolean jj_3R_222()
10389+
{
10390+
Token xsp;
10391+
xsp = jj_scanpos;
10392+
if (jj_3R_248()) {
10393+
jj_scanpos = xsp;
10394+
if (jj_3R_249()) return true;
10395+
}
10396+
return false;
10397+
}
10398+
10399+
private boolean jj_3R_248()
10400+
{
10401+
if (jj_scan_token(NOT)) return true;
10402+
Token xsp;
10403+
while (true) {
10404+
xsp = jj_scanpos;
10405+
if (jj_scan_token(21)) { jj_scanpos = xsp; break; }
10406+
}
10407+
if (jj_3R_280()) return true;
10408+
return false;
10409+
}
10410+
1041810411
private boolean jj_3R_285()
1041910412
{
1042010413
Token xsp;
@@ -11792,6 +11785,19 @@ private boolean jj_3R_223()
1179211785
return false;
1179311786
}
1179411787

11788+
private boolean jj_3R_429()
11789+
{
11790+
if (jj_3R_230()) return true;
11791+
return false;
11792+
}
11793+
11794+
private boolean jj_3_22()
11795+
{
11796+
if (jj_3R_238()) return true;
11797+
if (jj_3R_239()) return true;
11798+
return false;
11799+
}
11800+
1179511801
/** Generated Token Manager. */
1179611802
public CssParserTokenManager token_source;
1179711803
SimpleCharStream jj_input_stream;

org/w3c/css/parser/analyzer/CssParser.jj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,10 @@ void mediaexpression(AtRuleMedia mediaRule, boolean defaultMedia, String comb) :
11931193
mediaRule.addMediaFeature(mf, ac);
11941194
mf.setCombinator(comb);
11951195
// mf.setParens();
1196+
} else {
1197+
if (defaultMedia) {
1198+
mediaRule.removeLastMedia();
1199+
}
11961200
}
11971201
}
11981202
}

0 commit comments

Comments
 (0)