package boxrenderer.xhtml; import com.osbcp.cssparser.Rule; import com.osbcp.cssparser.Selector; //http://www.webteacher.ws/2008/05/19/tip-calculate-the-specificity-of-css-selectors/ public class CssSpecificity implements Comparable<CssSpecificity> { private int inline; private int id; private int cssClass; private int element; public CssSpecificity(Rule rule) { if(rule.getSelectors().size() == 0) { inline++; } else { for(Selector selector : rule.getSelectors()) { if(isIdSelector(selector)) { id++; } else if(isClassSelector(selector)) { cssClass++; } else { element++; } } } } private boolean isIdSelector(Selector selector) { return selector.toString().startsWith("#"); } private boolean isClassSelector(Selector selector) { return selector.toString().startsWith("."); } @Override public int compareTo(CssSpecificity o) { int result = inline - o.inline; if(result == 0) { result = id - o.id; } if(result == 0) { result = cssClass - o.cssClass; } if(result == 0) { result = element - o.element; } return result; } }