- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 02 Oct 2012 08:42:56 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/css In directory hutz:/tmp/cvs-serv13092/css Modified Files: StyleSheet.java Log Message: revamped the selector equivalence detection for findConflict Index: StyleSheet.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheet.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- StyleSheet.java 29 Aug 2011 07:21:00 -0000 1.19 +++ StyleSheet.java 2 Oct 2012 08:42:54 -0000 1.20 @@ -28,263 +28,263 @@ */ public class StyleSheet { - private CssCascadingOrder cascading; - private HashMap<CssSelectors, CssSelectors> rules; - private Errors errors; - private Warnings warnings; - private String type; - private ArrayList<CssRuleList> atRuleList; - private boolean doNotAddRule; - private boolean doNotAddAtRule; - private static final boolean debug = false; + private CssCascadingOrder cascading; + private HashMap<String, CssSelectors> rules; + private Errors errors; + private Warnings warnings; + private String type; + private ArrayList<CssRuleList> atRuleList; + private boolean doNotAddRule; + private boolean doNotAddAtRule; + private static final boolean debug = false; - /** - * Create a new StyleSheet. - */ - public StyleSheet() { - rules = new HashMap<CssSelectors, CssSelectors>(); - errors = new Errors(); - warnings = new Warnings(); - cascading = new CssCascadingOrder(); - atRuleList = new ArrayList<CssRuleList>(); - } + /** + * Create a new StyleSheet. + */ + public StyleSheet() { + rules = new HashMap<String, CssSelectors>(); + errors = new Errors(); + warnings = new Warnings(); + cascading = new CssCascadingOrder(); + atRuleList = new ArrayList<CssRuleList>(); + } - public void setWarningLevel(int warningLevel) { - warnings.setWarningLevel(warningLevel); - } + public void setWarningLevel(int warningLevel) { + warnings.setWarningLevel(warningLevel); + } - /** - * Get a style in a specific context. - * No resolution are perfomed when this function is called - * - * @param context The context for the style - * @return The style for the specific context. - */ - public CssStyle getStyle(CssSelectors context) { - if (debug) { - Util.verbose("StyleSheet.getStyle(" + context + ')'); - } - if (getContext(context) != null) { - CssSelectors realContext = (CssSelectors) getContext(context); - CssStyle style = realContext.getStyle(); - style.setStyleSheet(this); - style.setSelector(realContext); - return style; - } else { - getRules().put(context, context); - context.getStyle().setStyleSheet(this); - context.getStyle().setSelector(context); - return context.getStyle(); - } + /** + * Get a style in a specific context. + * No resolution are perfomed when this function is called + * + * @param context The context for the style + * @return The style for the specific context. + */ + public CssStyle getStyle(CssSelectors context) { + if (debug) { + Util.verbose("StyleSheet.getStyle(" + context + ')'); + } + if (getContext(context) != null) { + CssSelectors realContext = (CssSelectors) getContext(context); + CssStyle style = realContext.getStyle(); + style.setStyleSheet(this); + style.setSelector(realContext); + return style; + } else { + rules.put(context.toString(), context); + context.getStyle().setStyleSheet(this); + context.getStyle().setSelector(context); + return context.getStyle(); + } - } + } - /** - * Add a property to this style sheet. - * - * @param selector The context where the property is defined - * @param property The property to add - */ - public void addProperty(CssSelectors selector, CssProperty property) { - if (debug) { - Util.verbose("add property " - + getContext(selector) - + " " + property); - } - getContext(selector).addProperty(property, warnings); - } + /** + * Add a property to this style sheet. + * + * @param selector The context where the property is defined + * @param property The property to add + */ + public void addProperty(CssSelectors selector, CssProperty property) { + if (debug) { + Util.verbose("add property " + + getContext(selector) + + " " + property); + } + getContext(selector).addProperty(property, warnings); + } - public void remove(CssSelectors selector) { - rules.remove(selector); - } + public void remove(CssSelectors selector) { + rules.remove(selector); + } - public void setType(String type) { - this.type = type; - } + public void setType(String type) { + this.type = type; + } - public String getType() { - if (type == null) { - return "text/css"; - } else { - return type; - } - } + public String getType() { + if (type == null) { + return "text/css"; + } else { + return type; + } + } - /** - * Add some errors to this style. - * - * @param errors Some errors. - */ - public void addErrors(Errors errors) { - if (errors.getErrorCount() != 0) { - getErrors().addErrors(errors); - } - } + /** + * Add some errors to this style. + * + * @param errors Some errors. + */ + public void addErrors(Errors errors) { + if (errors.getErrorCount() != 0) { + getErrors().addErrors(errors); + } + } - /** - * Add some warnings to this style. - * - * @param warnings Some warnings. - */ - public void addWarnings(Warnings warnings) { - if (warnings.getWarningCount() != 0) - getWarnings().addWarnings(warnings); - } + /** + * Add some warnings to this style. + * + * @param warnings Some warnings. + */ + public void addWarnings(Warnings warnings) { + if (warnings.getWarningCount() != 0) + getWarnings().addWarnings(warnings); + } - /** - * Returns all errors. - */ - public final Errors getErrors() { - return errors; - } + /** + * Returns all errors. + */ + public final Errors getErrors() { + return errors; + } - /** - * Returns all warnings. - */ - public final Warnings getWarnings() { - return warnings; - } + /** + * Returns all warnings. + */ + public final Warnings getWarnings() { + return warnings; + } - /** - * Returns all rules - */ - public final HashMap<CssSelectors, CssSelectors> getRules() { - return rules; - } + /** + * Returns all rules + */ + public final HashMap<String, CssSelectors> getRules() { + return rules; + } - /** - * Returns the property for a context. - * - * @param property The default value returned if there is no property. - * @param style The current style sheet where we can find all properties - * @param selector The current context - * @return the property with the right value - */ - public final CssProperty CascadingOrder(CssProperty property, - StyleSheet style, - CssSelectors selector) { - return cascading.order(property, style, selector); - } + /** + * Returns the property for a context. + * + * @param property The default value returned if there is no property. + * @param style The current style sheet where we can find all properties + * @param selector The current context + * @return the property with the right value + */ + public final CssProperty CascadingOrder(CssProperty property, + StyleSheet style, + CssSelectors selector) { + return cascading.order(property, style, selector); + } - /** - * Find all conflicts for this style sheet. - */ - public void findConflicts(ApplContext ac) { - HashMap<CssSelectors, CssSelectors> rules = getRules(); - CssSelectors[] all = new CssSelectors[rules.size()]; - all = rules.values().toArray(all); - Arrays.sort(all); + /** + * Find all conflicts for this style sheet. + */ + public void findConflicts(ApplContext ac) { + HashMap<String, CssSelectors> rules = getRules(); + CssSelectors[] all = new CssSelectors[rules.size()]; + all = rules.values().toArray(all); + Arrays.sort(all); - for (CssSelectors selector : all) { - selector.markAsFinal(); - } - for (CssSelectors selector : all) { - selector.findConflicts(ac, warnings, all); - } - } + for (CssSelectors selector : all) { + selector.markAsFinal(); + } + for (CssSelectors selector : all) { + selector.findConflicts(ac, warnings, all); + } + } - /** - * Returns the unique context for a context - * - * @param selector the context to find. - */ - protected CssSelectors getContext(CssSelectors selector) { - if (getRules().containsKey(selector)) { - return getRules().get(selector); - } else { - if (selector.getNext() != null) { - CssSelectors next = getContext(selector.getNext()); - selector.setNext(next); - } - getRules().put(selector, selector); - return selector; - } - } + /** + * Returns the unique context for a context + * + * @param selector the context to find. + */ + protected CssSelectors getContext(CssSelectors selector) { + if (rules.containsKey(selector.toString())) { + return rules.get(selector.toString()); + } else { + if (selector.getNext() != null) { + CssSelectors next = getContext(selector.getNext()); + selector.setNext(next); + } + rules.put(selector.toString(), selector); + return selector; + } + } - /** - * dump this style sheet. - */ - public void dump() { - StyleSheetGenerator style = - new StyleSheetGenerator("", this, "text", -1); - style.print(new PrintWriter(System.out)); - } + /** + * dump this style sheet. + */ + public void dump() { + StyleSheetGenerator style = + new StyleSheetGenerator("", this, "text", -1); + style.print(new PrintWriter(System.out)); + } - //part added by Sijtsche de Jong + //part added by Sijtsche de Jong - public void addCharSet(String charset) { - this.charset = charset; - } + public void addCharSet(String charset) { + this.charset = charset; + } - public void newAtRule(AtRule atRule) { - CssRuleList rulelist = new CssRuleList(); - rulelist.addAtRule(atRule); - atRuleList.add(rulelist); - indent = " "; - } + public void newAtRule(AtRule atRule) { + CssRuleList rulelist = new CssRuleList(); + rulelist.addAtRule(atRule); + atRuleList.add(rulelist); + indent = " "; + } - public void endOfAtRule() { - if (!doNotAddAtRule) { - CssRuleList rulelist = new CssRuleList(); - atRuleList.add(rulelist); //for the new set of rules - } - important = false; - selectortext = ""; - indent = ""; - doNotAddAtRule = false; - } + public void endOfAtRule() { + if (!doNotAddAtRule) { + CssRuleList rulelist = new CssRuleList(); + atRuleList.add(rulelist); //for the new set of rules + } + important = false; + selectortext = ""; + indent = ""; + doNotAddAtRule = false; + } - public void setImportant(boolean important) { - this.important = important; - } + public void setImportant(boolean important) { + this.important = important; + } - public void setSelectorList(ArrayList<CssSelectors> selectors) { - StringBuilder sb = new StringBuilder(); - for (CssSelectors s : selectors) { - if (sb.length() > 0) { - sb.append(", "); - } - sb.append(s.toString()); - } - selectortext = sb.toString(); - } + public void setSelectorList(ArrayList<CssSelectors> selectors) { + StringBuilder sb = new StringBuilder(); + for (CssSelectors s : selectors) { + if (sb.length() > 0) { + sb.append(", "); + } + sb.append(s.toString()); + } + selectortext = sb.toString(); + } - public void setProperty(ArrayList<CssProperty> properties) { - this.properties = properties; - } + public void setProperty(ArrayList<CssProperty> properties) { + this.properties = properties; + } - public void endOfRule() { - CssRuleList rulelist; - if (!doNotAddRule) { - CssStyleRule stylerule = new CssStyleRule(indent, selectortext, - properties, important); - if (!atRuleList.isEmpty()) { - rulelist = atRuleList.remove(atRuleList.size()-1); - } else { - rulelist = new CssRuleList(); - } - rulelist.addStyleRule(stylerule); - atRuleList.add(rulelist); - } - selectortext = ""; - doNotAddRule = false; - } + public void endOfRule() { + CssRuleList rulelist; + if (!doNotAddRule) { + CssStyleRule stylerule = new CssStyleRule(indent, selectortext, + properties, important); + if (!atRuleList.isEmpty()) { + rulelist = atRuleList.remove(atRuleList.size() - 1); + } else { + rulelist = new CssRuleList(); + } + rulelist.addStyleRule(stylerule); + atRuleList.add(rulelist); + } + selectortext = ""; + doNotAddRule = false; + } - public void removeThisRule() { - doNotAddRule = true; - } + public void removeThisRule() { + doNotAddRule = true; + } - public void removeThisAtRule() { - doNotAddAtRule = true; - } + public void removeThisAtRule() { + doNotAddAtRule = true; + } - public ArrayList<CssRuleList> newGetRules() { - return atRuleList; - } + public ArrayList<CssRuleList> newGetRules() { + return atRuleList; + } - String selectortext; - boolean important; - ArrayList<CssProperty> properties; - String indent = new String(); - public String charset; + String selectortext; + boolean important; + ArrayList<CssProperty> properties; + String indent = new String(); + public String charset; }
Received on Tuesday, 2 October 2012 08:42:57 UTC