/** * Checks if this media specification matches a given media query. * @param q The media query * @return {@code true} when this media specification matches the given media query. */ public boolean matches(MediaQuery q) { //match the media type if (q.getType() != null) { if (q.getType().equals("all")) { if (q.isNegative()) return false; //"NOT all" doesn't match to anything } else if (q.getType().equals(this.getType()) == q.isNegative()) //other than all return false; } //match the eventual expressions for (MediaExpression e : q) { if (!this.matches(e)) return false; } //everything matched return true; }
@Override /** * media_query : (media_term S*)+ */ public MediaQuery visitMedia_query(CSSParser.Media_queryContext ctx) { logEnter("mediaquery: ", ctx); mq = new mediaquery_scope(); mq.q = rf.createMediaQuery(); mq.q.unlock(); mq.state = MediaQueryState.START; mq.invalid = false; logLeave("mediaquery"); for (CSSParser.Media_termContext mtc : ctx.media_term()) { visitMedia_term(mtc); } if (mq.invalid) { log.trace("Skipping invalid rule {}", mq.q); mq.q.setType("all"); //change the malformed media queries to "not all" mq.q.setNegative(true); } logLeave("mediaquery"); return mq.q; }
mq.state = MediaQueryState.TYPEOREXPR; } else if (m.equalsIgnoreCase("NOT") && state == MediaQueryState.START) { mq.q.setNegative(true); mq.state = MediaQueryState.TYPEOREXPR; } else if (m.equalsIgnoreCase("AND") && state == MediaQueryState.AND) { || state == MediaQueryState.TYPE || state == MediaQueryState.TYPEOREXPR) { mq.q.setType(m); mq.state = MediaQueryState.AND; } else { if (e != null && e.getFeature() != null) //the expression is valid mq.q.add(e); mq.state = MediaQueryState.AND; } else {
@Override /** * media_query : (media_term S*)+ */ public MediaQuery visitMedia_query(CSSParser.Media_queryContext ctx) { logEnter("mediaquery: ", ctx); mq = new mediaquery_scope(); mq.q = rf.createMediaQuery(); mq.q.unlock(); mq.state = MediaQueryState.START; mq.invalid = false; logLeave("mediaquery"); for (CSSParser.Media_termContext mtc : ctx.media_term()) { visitMedia_term(mtc); } if (mq.invalid) { log.trace("Skipping invalid rule {}", mq.q); mq.q.setType("all"); //change the malformed media queries to "not all" mq.q.setNegative(true); } logLeave("mediaquery"); return mq.q; }
mq.state = MediaQueryState.TYPEOREXPR; } else if (m.equalsIgnoreCase("NOT") && state == MediaQueryState.START) { mq.q.setNegative(true); mq.state = MediaQueryState.TYPEOREXPR; } else if (m.equalsIgnoreCase("AND") && state == MediaQueryState.AND) { || state == MediaQueryState.TYPE || state == MediaQueryState.TYPEOREXPR) { mq.q.setType(m); mq.state = MediaQueryState.AND; } else { if (e != null && e.getFeature() != null) //the expression is valid mq.q.add(e); mq.state = MediaQueryState.AND; } else {
query.unlock(); mediaquery_stack.peek().state = MediaQueryState.START; mediaquery_stack.peek().invalid = false; mediaquery_stack.peek().q.setType("all"); //change the malformed media queries to "not all" mediaquery_stack.peek().q.setNegative(true);
mediaquery_stack.peek().q.setNegative(true); mediaquery_stack.peek().state = MediaQueryState.TYPEOREXPR; || state == MediaQueryState.TYPEOREXPR) mediaquery_stack.peek().q.setType(m); mediaquery_stack.peek().state = MediaQueryState.AND; mediaquery_stack.peek().q.add(e); mediaquery_stack.peek().state = MediaQueryState.AND;
/** * Checks if this media specification matches a given media query. * @param q The media query * @return {@code true} when this media specification matches the given media query. */ public boolean matches(MediaQuery q) { //match the media type if (q.getType() != null) { if (q.getType().equals("all")) { if (q.isNegative()) return false; //"NOT all" doesn't match to anything } else if (q.getType().equals(this.getType()) == q.isNegative()) //other than all return false; } //match the eventual expressions for (MediaExpression e : q) { if (!this.matches(e)) return false; } //everything matched return true; }
/** * Checks if this media specification matches a given media query. * @param q The media query * @return {@code true} when this media specification matches the given media query. */ public boolean matches(MediaQuery q) { //match the media type if (q.getType() != null) { if (q.getType().equals("all")) { if (q.isNegative()) return false; //"NOT all" doesn't match to anything } else if (q.getType().equals(this.getType()) == q.isNegative()) //other than all return false; } //match the eventual expressions for (MediaExpression e : q) { if (!this.matches(e)) return false; } //everything matched return true; }