- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 29 Aug 2011 07:21:02 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/css
In directory hutz:/tmp/cvs-serv18238/css/css
Modified Files:
CssRuleList.java CssStyleRule.java CssValidator.java
DocumentParser.java StyleSheet.java StyleSheetGenerator.java
StyleSheetParser.java XMLStyleSheetHandler.java
Log Message:
genericity + updated code to 5.0 stds
Index: XMLStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/XMLStyleSheetHandler.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- XMLStyleSheetHandler.java 13 Feb 2009 21:50:15 -0000 1.30
+++ XMLStyleSheetHandler.java 29 Aug 2011 07:21:00 -0000 1.31
@@ -13,23 +13,14 @@
*/
package org.w3c.css.css;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringBufferInputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.HashMap;
[...1251 lines suppressed...]
+ value.append('"');
+ } else if ("apos".equals(entity)) {
+ value.append('\'');
+ } else {
+ return table;
+ }
+ state -= 10;
+ break;
+ default:
+ return table;
+ }
+ }
+ current++;
+ }
+ if (name.length() != 0 && value.length() != 0) {
+ table.put(name.toString(), value.toString());
+ }
+ return table;
}
}
Index: StyleSheet.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheet.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- StyleSheet.java 14 Aug 2011 09:02:19 -0000 1.18
+++ StyleSheet.java 29 Aug 2011 07:21:00 -0000 1.19
@@ -17,9 +17,9 @@
import org.w3c.css.util.Warnings;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.Vector;
/**
* This class contains a style sheet with all rules, errors and warnings.
@@ -33,7 +33,7 @@
private Errors errors;
private Warnings warnings;
private String type;
- private Vector atRuleList;
+ private ArrayList<CssRuleList> atRuleList;
private boolean doNotAddRule;
private boolean doNotAddAtRule;
private static final boolean debug = false;
@@ -46,7 +46,7 @@
errors = new Errors();
warnings = new Warnings();
cascading = new CssCascadingOrder();
- atRuleList = new Vector();
+ atRuleList = new ArrayList<CssRuleList>();
}
public void setWarningLevel(int warningLevel) {
@@ -219,14 +219,14 @@
public void newAtRule(AtRule atRule) {
CssRuleList rulelist = new CssRuleList();
rulelist.addAtRule(atRule);
- atRuleList.addElement(rulelist);
+ atRuleList.add(rulelist);
indent = " ";
}
public void endOfAtRule() {
if (!doNotAddAtRule) {
CssRuleList rulelist = new CssRuleList();
- atRuleList.addElement(rulelist); //for the new set of rules
+ atRuleList.add(rulelist); //for the new set of rules
}
important = false;
selectortext = "";
@@ -238,30 +238,33 @@
this.important = important;
}
- public void setSelectorList(Vector selectors) {
- String slave = selectors.toString();
- selectortext = slave.substring(slave.indexOf("[") + 1,
- slave.lastIndexOf("]"));
+ 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(Vector properties) {
+ public void setProperty(ArrayList<CssProperty> properties) {
this.properties = properties;
}
public void endOfRule() {
CssRuleList rulelist;
- boolean useless;
if (!doNotAddRule) {
CssStyleRule stylerule = new CssStyleRule(indent, selectortext,
properties, important);
if (!atRuleList.isEmpty()) {
- rulelist = (CssRuleList) atRuleList.lastElement();
- useless = atRuleList.removeElement(rulelist);
+ rulelist = atRuleList.remove(atRuleList.size()-1);
} else {
rulelist = new CssRuleList();
}
rulelist.addStyleRule(stylerule);
- atRuleList.addElement(rulelist);
+ atRuleList.add(rulelist);
}
selectortext = "";
doNotAddRule = false;
@@ -275,13 +278,13 @@
doNotAddAtRule = true;
}
- public Vector newGetRules() {
+ public ArrayList<CssRuleList> newGetRules() {
return atRuleList;
}
String selectortext;
boolean important;
- Vector properties;
+ ArrayList<CssProperty> properties;
String indent = new String();
public String charset;
}
Index: DocumentParser.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/DocumentParser.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- DocumentParser.java 14 May 2011 18:13:25 -0000 1.6
+++ DocumentParser.java 29 Aug 2011 07:21:00 -0000 1.7
@@ -17,13 +17,6 @@
import java.net.URL;
import java.net.URLConnection;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLSession;
-
/**
* @version $Revision$
*/
@@ -33,7 +26,7 @@
static {
try {
- wap = new MimeType("application/vnd.wap.xhtml+xml");
+ wap = new MimeType("application/vnd.wap.xhtml+xml");
} catch (MimeTypeFormatException mex) {
wap = null;
}
@@ -46,116 +39,117 @@
/**
* Create a new DocumentParser
- *
- * @exception Exception
- * An error
+ *
+ * @throws Exception An error
*/
public DocumentParser(ApplContext ac, String urlString) throws Exception {
- this.htmlURL = HTTPURL.getURL(urlString);
- this.ac = ac;
- urlString = htmlURL.toString();
- String urlLower = urlString.toLowerCase();
- String media = ac.getMedium();
- String urlProtocol = htmlURL.getProtocol();
+ this.htmlURL = HTTPURL.getURL(urlString);
+ this.ac = ac;
+ urlString = htmlURL.toString();
+ String urlLower = urlString.toLowerCase();
+ String media = ac.getMedium();
+ String urlProtocol = htmlURL.getProtocol();
- if (!"http".equals(urlProtocol) && !"https".equals(urlProtocol)) {
- if (urlLower.endsWith(".css")) {
- StyleSheetParser parser = new StyleSheetParser();
- parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
- style = parser.getStyleSheet();
- } else if (urlLower.endsWith(".html") || urlLower.endsWith(".shtml") || urlLower.endsWith("/")) {
- TagSoupStyleSheetHandler handler = new TagSoupStyleSheetHandler(htmlURL, ac);
- handler.parse(htmlURL);
- style = handler.getStyleSheet();
- if (style != null) {
- style.setType("text/html");
- }
- } else if (urlLower.endsWith(".xhtml") || urlLower.endsWith(".xml")) {
- // Seems like we need to use tagsout in this case as well
- XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
- handler.parse(htmlURL);
- style = handler.getStyleSheet();
- if (style != null) {
- style.setType("text/xml");
- }
- } else {
- throw new Exception("Unknown file");
- }
- } else {
- URLConnection connection = null;
+ if (!"http".equals(urlProtocol) && !"https".equals(urlProtocol)) {
+ if (urlLower.endsWith(".css")) {
+ StyleSheetParser parser = new StyleSheetParser();
+ parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
+ style = parser.getStyleSheet();
+ } else if (urlLower.endsWith(".html") || urlLower.endsWith(".shtml") || urlLower.endsWith("/")) {
+ TagSoupStyleSheetHandler handler = new TagSoupStyleSheetHandler(htmlURL, ac);
+ handler.parse(htmlURL);
+ style = handler.getStyleSheet();
+ if (style != null) {
+ style.setType("text/html");
+ }
+ } else if (urlLower.endsWith(".xhtml") || urlLower.endsWith(".xml")) {
+ // Seems like we need to use tagsout in this case as well
+ XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
+ handler.parse(htmlURL);
+ style = handler.getStyleSheet();
+ if (style != null) {
+ style.setType("text/xml");
+ }
+ } else {
+ throw new Exception("Unknown file");
+ }
+ } else {
+ URLConnection connection = null;
- try {
- boolean isXML = false;
- String cType;
+ try {
+ boolean isXML = false;
+ String cType;
- // @@ hum, maybe? (plh, yes probably :-) )
- String credential = ac.getCredential();
+ // @@ hum, maybe? (plh, yes probably :-) )
+ String credential = ac.getCredential();
- connection = HTTPURL.getConnection(htmlURL, ac);
- htmlURL = connection.getURL();
+ connection = HTTPURL.getConnection(htmlURL, ac);
+ htmlURL = connection.getURL();
- String httpCL = connection.getHeaderField("Content-Location");
- if (httpCL != null) {
- htmlURL = HTTPURL.getURL(htmlURL, httpCL);
- }
+ String httpCL = connection.getHeaderField("Content-Location");
+ if (httpCL != null) {
+ htmlURL = HTTPURL.getURL(htmlURL, httpCL);
+ }
- cType = connection.getContentType();
- if (cType == null) {
- cType = "unknown/unknown";
- }
- MimeType contentType = null;
- try {
- contentType = new MimeType(cType);
- } catch (MimeTypeFormatException ex) {
- }
+ cType = connection.getContentType();
+ if (cType == null) {
+ cType = "unknown/unknown";
+ }
+ MimeType contentType = null;
+ try {
+ contentType = new MimeType(cType);
+ } catch (MimeTypeFormatException ex) {
+ // an error, let's try to parse it as HTML
+ contentType = MimeType.TEXT_HTML;
+ }
- if (Util.onDebug) {
- System.err.println("[DEBUG] content type is [" + contentType + ']');
- }
+ if (Util.onDebug) {
+ System.err.println("[DEBUG] content type is [" + contentType + ']');
+ }
- if (contentType.match(MimeType.TEXT_HTML) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
- TagSoupStyleSheetHandler handler;
- handler = new TagSoupStyleSheetHandler(htmlURL, ac);
- handler.parse(urlString, connection);
- style = handler.getStyleSheet();
+ if (contentType.match(MimeType.TEXT_HTML) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+ TagSoupStyleSheetHandler handler;
+ handler = new TagSoupStyleSheetHandler(htmlURL, ac);
+ handler.parse(urlString, connection);
+ style = handler.getStyleSheet();
- if (style != null) {
- style.setType("text/html");
- }
- } else if (contentType.match(MimeType.TEXT_CSS) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
- StyleSheetParser parser = new StyleSheetParser();
- parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
- style = parser.getStyleSheet();
- } else if ((contentType.match(MimeType.TEXT_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)
- || (contentType.match(MimeType.APPLICATION_XHTML_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)
- || (contentType.match(wap) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
- // TagSoup ?
- XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
- handler.parse(urlString, connection);
- style = handler.getStyleSheet();
+ if (style != null) {
+ style.setType("text/html");
+ }
+ } else if (contentType.match(MimeType.TEXT_CSS) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+ StyleSheetParser parser = new StyleSheetParser();
+ parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
+ style = parser.getStyleSheet();
+ } else if ((contentType.match(MimeType.TEXT_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)
+ || (contentType.match(MimeType.APPLICATION_XHTML_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)
+ || (contentType.match(wap) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+ // TagSoup ?
+ XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
+ handler.parse(urlString, connection);
+ style = handler.getStyleSheet();
- if (style != null) {
- style.setType("text/xml");
- }
- } else {
- throw new IOException("Unknown mime type : " + contentType);
- }
- } finally {
- try {
- connection.getInputStream().close();
- } catch (Exception e) {
- }
- }
- }
+ if (style != null) {
+ style.setType("text/xml");
+ }
+ } else {
+ throw new IOException("Unknown mime type : " + contentType);
+ }
+ } finally {
+ try {
+ connection.getInputStream().close();
+ } catch (Exception e) {
+ }
+ }
+ }
}
/**
* Returns the recognized style sheet.
- *
+ *
* @return A style sheet.
*/
public StyleSheet getStyleSheet() {
- return style;
+ return style;
}
} // HTMLStyleSheetParser
Index: CssRuleList.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/CssRuleList.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- CssRuleList.java 25 Feb 2009 20:44:49 -0000 1.19
+++ CssRuleList.java 29 Aug 2011 07:21:00 -0000 1.20
@@ -5,72 +5,71 @@
package org.w3c.css.css;
-import java.util.Vector;
-
import org.w3c.css.parser.AtRule;
import org.w3c.css.util.Messages;
+import java.util.ArrayList;
+
public class CssRuleList {
AtRule atRule;
String atRuleString;
- Vector rulelist;
+ ArrayList<CssStyleRule> rulelist;
public String pseudopage;
String indent;
public CssRuleList() {
- atRule = null;
- atRuleString = new String();
- rulelist = new Vector();
- indent = new String();
+ atRule = null;
+ atRuleString = new String();
+ rulelist = new ArrayList<CssStyleRule>();
+ indent = new String();
}
public void addStyleRule(CssStyleRule stylerule) {
- rulelist.addElement(stylerule);
+ rulelist.add(stylerule);
}
- public Vector getStyleRules() {
- return rulelist;
+ public ArrayList<CssStyleRule> getStyleRules() {
+ return rulelist;
}
public void addAtRule(AtRule atRule) {
- this.atRule = atRule;
- atRuleString = atRule.toString();
+ this.atRule = atRule;
+ atRuleString = atRule.toString();
}
public String getAtRule() {
- return atRuleString;
+ return atRuleString;
}
-
+
public String getAtRuleEscaped() {
- return Messages.escapeString(atRuleString);
+ return Messages.escapeString(atRuleString);
}
-
+
public boolean isEmpty() {
- return rulelist.isEmpty();
+ return rulelist.isEmpty();
}
public String toString() {
- StringBuilder ret = new StringBuilder();
- if (null != atRule && atRule.isEmpty()) {
- if (!atRuleString.equals("")) {
- ret.append(atRuleString);
- ret.append("\n\n");
- }
- } else {
- if (!atRuleString.equals("")) {
- ret.append(atRuleString);
- ret.append(" {\n\n");
- }
- for (int i = 0; i < rulelist.size(); i++) {
- ret.append((CssStyleRule) rulelist.elementAt(i));
- }
-
- if (!atRuleString.equals("")) {
- ret.append("}\n");
- }
- }
- return ret.toString();
+ StringBuilder ret = new StringBuilder();
+ if (null != atRule && atRule.isEmpty()) {
+ if (atRuleString.length() != 0) {
+ ret.append(atRuleString);
+ ret.append("\n\n");
+ }
+ } else {
+ if (atRuleString.length() != 0) {
+ ret.append(atRuleString);
+ ret.append(" {\n\n");
+ }
+ for (CssStyleRule styleRule : rulelist) {
+ ret.append(styleRule);
+ }
+ if (atRuleString.length() != 0) {
+ ret.append("}\n");
+ }
+ }
+ return ret.toString();
}
}
Index: CssStyleRule.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/CssStyleRule.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- CssStyleRule.java 5 Jan 2010 13:49:33 -0000 1.19
+++ CssStyleRule.java 29 Aug 2011 07:21:00 -0000 1.20
@@ -5,73 +5,74 @@
package org.w3c.css.css;
-import java.util.Vector;
-
import org.w3c.css.properties.css.CssProperty;
import org.w3c.css.util.Messages;
+import java.util.ArrayList;
+
public class CssStyleRule {
- public CssStyleRule(String indent, String selectors,
- Vector properties, boolean important)
- {
- this.selectors = selectors;
- this.properties = properties;
- this.indent = indent;
+ public CssStyleRule(String indent, String selectors,
+ ArrayList<CssProperty> properties, boolean important) {
+ this.selectors = selectors;
+ this.properties = properties;
+ this.indent = indent;
}
+
/**
* This function is only used inside the velocity template
+ *
* @return the list of selectors in a string
*/
public String getSelectors() {
- return selectors;
+ return selectors;
}
-
+
public String getSelectorsEscaped() {
- return Messages.escapeString(selectors);
+ return Messages.escapeString(selectors);
}
/**
* This function is only used inside the velocity template
+ *
* @return the list of properties in a Vector
*/
- public Vector getProperties() {
- return properties;
+ public ArrayList<CssProperty> getProperties() {
+ return properties;
}
public String toString() {
- StringBuilder ret = new StringBuilder();
- if (selectors != null) {
- ret.append(selectors);
- ret.append(' ');
- ret.append('{');
- ret.append('\n');
- }
+ StringBuilder ret = new StringBuilder();
+ if (selectors != null) {
+ ret.append(selectors);
+ ret.append(' ');
+ ret.append('{');
+ ret.append('\n');
+ }
- for (int i = 0; i < properties.size(); i++) {
- CssProperty property = (CssProperty) properties.elementAt(i);
- ret.append(indent);
- ret.append(" ");
- ret.append(property.getPropertyName());
- ret.append(" : ");
- ret.append(property.toString());
- if (property.getImportant()) {
- ret.append(" important");
- }
- ret.append(';');
- ret.append('\n');
- }
- if (selectors != null) {
- ret.append(indent);
- ret.append('}');
- ret.append('\n');
- ret.append('\n');
- }
- return ret.toString();
+ for (CssProperty property : properties) {
+ ret.append(indent);
+ ret.append(" ");
+ ret.append(property.getPropertyName());
+ ret.append(" : ");
+ ret.append(property.toString());
+ if (property.getImportant()) {
+ ret.append(" important");
+ }
+ ret.append(';');
+ ret.append('\n');
+ }
+ if (selectors != null) {
+ ret.append(indent);
+ ret.append('}');
+ ret.append('\n');
+ ret.append('\n');
+ }
+ return ret.toString();
}
public String toStringEscaped() {
- return Messages.escapeString(toString());
+ return Messages.escapeString(toString());
}
/*
@@ -88,7 +89,7 @@
* ret.append(";</li>\n"); }
* ret.append("</ul>}</li>\n\n"); return ret.toString(); }
*/
-
+
/**
* This method returns a part of the style sheet to be displayed
* Some identation (\t) was necessary to maintain the correct formatting
@@ -97,6 +98,6 @@
private String indent;
private String selectors;
- private Vector properties;
+ private ArrayList<CssProperty> properties;
}
Index: CssValidator.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/CssValidator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- CssValidator.java 24 Apr 2008 06:41:04 -0000 1.9
+++ CssValidator.java 29 Aug 2011 07:21:00 -0000 1.10
@@ -1,5 +1,5 @@
/*
- * CssValidatoralidator.java
+ * CssValidator.java
*
* Created on April 19, 2006, 2:50 PM
*
@@ -9,241 +9,234 @@
package org.w3c.css.css;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-import org.w3c.css.error.ErrorReport;
-import org.w3c.css.error.ErrorReportFactory;
import org.w3c.css.parser.CssSelectors;
import org.w3c.css.properties.PropertiesLoader;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.HTTPURL;
-import org.w3c.css.util.Utf8Properties;
import org.w3c.css.util.Util;
import org.w3c.tools.resources.ProtocolException;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+
/**
- *
* @author jean
*/
public class CssValidator {
-
+
ApplContext ac;
PrintWriter out;
- Vector uris = new Vector();
- Hashtable params;
-
+ ArrayList<String> uris = new ArrayList<String>();
+ HashMap<String, String> params;
+
// @@ HACK
static boolean showCSS = false;
-
+
private Exception exception;
-
- /**
- *
- * Creates a new instance of CssValidator with the following default values:
- * <ul>
- * <li>profile = css21</li>
- * <li>medium = all</li>
- * <li>output = text</li>
- * <li>lang = en</li>
- * <li>warning = 2</li>
- * <li>showCSS = false</li>
- * </ul>
- */
- public CssValidator() {
- params = new Hashtable();
- params.put("profile", PropertiesLoader.config.getProperty("defaultProfile"));
- params.put("medium", "all");
- params.put("output", "text");
- params.put("lang", "en");
- params.put("warning", "2");
+
+ /**
+ * Creates a new instance of CssValidator with the following default values:
+ * <ul>
+ * <li>profile = css21</li>
+ * <li>medium = all</li>
+ * <li>output = text</li>
+ * <li>lang = en</li>
+ * <li>warning = 2</li>
+ * <li>showCSS = false</li>
+ * </ul>
+ */
+ public CssValidator() {
+ params = new HashMap<String, String>();
+ params.put("profile", PropertiesLoader.config.getProperty("defaultProfile"));
+ params.put("medium", "all");
+ params.put("output", "text");
+ params.put("lang", "en");
+ params.put("warning", "2");
}
-
+
public static void main(String args[])
- throws IOException, MalformedURLException {
-
- CssSelectors selector = null;
-
- CssValidator style = new CssValidator();
-
- // first, we get the parameters and create an application context
- try {
- style.getParams(args);
- style.ac = new ApplContext((String)style.params.get("lang"));
- System.out.println(style.params);
- } catch (Exception e) {
- System.out.println( "Usage: java org.w3c.css.css.CssValidator " +
- " [OPTIONS] | [URL]*");
- System.out.println("OPTIONS");
- System.out.println("\t-p, --printCSS");
- System.out.println("\t\tPrints the validated CSS (only with text " +
- "output, the CSS is printed with other outputs)");
- System.out.println("\t-profile PROFILE, --profile=PROFILE");
- System.out.println("\t\tChecks the Stylesheet against PROFILE");
- System.out.println("\t\tPossible values for PROFILE are css1, " +
- "css2, css21 (default), css3, svg, svgbasic, svgtiny, " +
- "atsc-tv, mobile, tv");
- System.out.println("\t-medium MEDIUM, --medium=MEDIUM");
- System.out.println("\t\tChecks the Stylesheet using the medium MEDIUM");
- System.out.println("\t\tPossible values for MEDIUM are all " +
- "(default), aural, braille, embossed, handheld, print, " +
- "projection, screen, tty, tv, presentation");
- System.out.println("\t-output OUTPUT, --output=OUTPUT");
- System.out.println("\t\tPrints the result in the selected format");
- System.out.println("\t\tPossible values for OUTPUT are text (default), xhtml, " +
- "html (same result as xhtml), soap12");
- System.out.println("\t-lang LANG, --lang=LANG");
- System.out.println("\t\tPrints the result in the specified language");
- System.out.println("\t\tPossible values for LANG are " +
- "de, en (default), es, fr, ja, ko, nl, zh-cn, pl, it");
- System.out.println("\t-warning WARN, --warning=WARN");
- System.out.println("\t\tWarnings verbosity level");
- System.out.println("\t\tPossible values for WARN are -1 (no " +
- "warning), 0, 1, 2 (default, all the warnings");
- System.out.println();
- System.out.println("URL");
- System.out.println("\tURL can either represent a distant " +
- "web resource (http://) or a local file (file:/)");
- System.exit(1);
- }
-
- // CSS version to use
- String profile = (String) style.params.get("profile");
- if (profile != null && !"none".equals(profile)) {
- if ("css1".equals(profile) || "css2".equals(profile) || "css21".equals(profile)
- || "css3".equals(profile) || "svg".equals(profile)
- || "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
- style.ac.setCssVersion(profile);
- } else {
- style.ac.setProfile(profile);
- style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
- }
- } else {
- style.ac.setProfile(profile);
- style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
- }
-
- // medium to use
- style.ac.setMedium((String) style.params.get("medium"));
-
- String encoding = style.ac.getMsg().getString("output-encoding-name");
- if(encoding != null) style.out = new PrintWriter(new OutputStreamWriter(System.out, encoding));
- else style.out = new PrintWriter(new OutputStreamWriter(System.out));
-
- for(int i = 0; i < style.uris.size(); i++) {
- String uri = (String) style.uris.get(i);
-
- if (uri != null) {
- // HTML document
- try {
- uri = HTTPURL.getURL(uri).toString(); // needed to be sure
- // that it is a valid
- // url
- DocumentParser URLparser = new DocumentParser(style.ac,
- uri);
-
- style.handleRequest(style.ac, uri, URLparser.getStyleSheet(),
- (String)style.params.get("output"),
- Integer.parseInt((String)style.params.get("warning")),
- true);
- } catch (ProtocolException pex) {
- if (Util.onDebug) {
- pex.printStackTrace();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
+ throws IOException, MalformedURLException {
+
+ CssSelectors selector = null;
+
+ CssValidator style = new CssValidator();
+
+ // first, we get the parameters and create an application context
+ try {
+ style.getParams(args);
+ style.ac = new ApplContext((String) style.params.get("lang"));
+ System.out.println(style.params);
+ } catch (Exception e) {
+ System.out.println("Usage: java org.w3c.css.css.CssValidator " +
+ " [OPTIONS] | [URL]*");
+ System.out.println("OPTIONS");
+ System.out.println("\t-p, --printCSS");
+ System.out.println("\t\tPrints the validated CSS (only with text " +
+ "output, the CSS is printed with other outputs)");
+ System.out.println("\t-profile PROFILE, --profile=PROFILE");
+ System.out.println("\t\tChecks the Stylesheet against PROFILE");
+ System.out.println("\t\tPossible values for PROFILE are css1, " +
+ "css2, css21 (default), css3, svg, svgbasic, svgtiny, " +
+ "atsc-tv, mobile, tv");
+ System.out.println("\t-medium MEDIUM, --medium=MEDIUM");
+ System.out.println("\t\tChecks the Stylesheet using the medium MEDIUM");
+ System.out.println("\t\tPossible values for MEDIUM are all " +
+ "(default), aural, braille, embossed, handheld, print, " +
+ "projection, screen, tty, tv, presentation");
+ System.out.println("\t-output OUTPUT, --output=OUTPUT");
+ System.out.println("\t\tPrints the result in the selected format");
+ System.out.println("\t\tPossible values for OUTPUT are text (default), xhtml, " +
+ "html (same result as xhtml), soap12");
+ System.out.println("\t-lang LANG, --lang=LANG");
+ System.out.println("\t\tPrints the result in the specified language");
+ System.out.println("\t\tPossible values for LANG are " +
+ "de, en (default), es, fr, ja, ko, nl, zh-cn, pl, it");
+ System.out.println("\t-warning WARN, --warning=WARN");
+ System.out.println("\t\tWarnings verbosity level");
+ System.out.println("\t\tPossible values for WARN are -1 (no " +
+ "warning), 0, 1, 2 (default, all the warnings");
+ System.out.println();
+ System.out.println("URL");
+ System.out.println("\tURL can either represent a distant " +
+ "web resource (http://) or a local file (file:/)");
+ System.exit(1);
+ }
+
+ // CSS version to use
+ String profile = (String) style.params.get("profile");
+ if (profile != null && !"none".equals(profile)) {
+ if ("css1".equals(profile) || "css2".equals(profile) || "css21".equals(profile)
+ || "css3".equals(profile) || "svg".equals(profile)
+ || "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
+ style.ac.setCssVersion(profile);
+ } else {
+ style.ac.setProfile(profile);
+ style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+ }
+ } else {
+ style.ac.setProfile(profile);
+ style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+ }
+
+ // medium to use
+ style.ac.setMedium((String) style.params.get("medium"));
+
+ String encoding = style.ac.getMsg().getString("output-encoding-name");
+ if (encoding != null) {
+ style.out = new PrintWriter(new OutputStreamWriter(System.out, encoding));
+ } else {
+ style.out = new PrintWriter(new OutputStreamWriter(System.out));
+ }
+
+ for (int i = 0; i < style.uris.size(); i++) {
+ String uri = (String) style.uris.get(i);
+
+ if (uri != null) {
+ // HTML document
+ try {
+ uri = HTTPURL.getURL(uri).toString(); // needed to be sure
+ // that it is a valid
+ // url
+ DocumentParser URLparser = new DocumentParser(style.ac,
+ uri);
+
+ style.handleRequest(style.ac, uri, URLparser.getStyleSheet(),
+ (String) style.params.get("output"),
+ Integer.parseInt((String) style.params.get("warning")),
+ true);
+ } catch (ProtocolException pex) {
+ if (Util.onDebug) {
+ pex.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
-
+
private void handleRequest(ApplContext ac,
- String title, StyleSheet styleSheet,
- String output, int warningLevel,
- boolean errorReport) throws Exception {
+ String title, StyleSheet styleSheet,
+ String output, int warningLevel,
+ boolean errorReport) throws Exception {
- if (styleSheet == null) {
- throw new IOException(ac.getMsg().getServletString("process") + " "
- + title);
- }
+ if (styleSheet == null) {
+ throw new IOException(ac.getMsg().getServletString("process") + " "
+ + title);
+ }
- styleSheet.findConflicts(ac);
+ styleSheet.findConflicts(ac);
+
+ StyleReport style = StyleReportFactory.getStyleReport(ac, title,
+ styleSheet,
+ output,
+ warningLevel);
+
+ if (!errorReport) {
+ style.desactivateError();
+ }
+
+ style.print(out);
+
+ }
- StyleReport style = StyleReportFactory.getStyleReport(ac, title,
- styleSheet,
- output,
- warningLevel);
-
- if (!errorReport) {
- style.desactivateError();
- }
-
- style.print(out);
-
- }
-
/**
* Analyses the command-line parameters
+ *
* @param args the parameters list
- **/
+ */
private void getParams(String[] args) throws Exception {
-
- // first, we get an enumeration from the array, because it's easier to
- // manage
- Vector v = new Vector(java.util.Arrays.asList(args));
- Enumeration e = v.elements();
-
- while(e.hasMoreElements()) {
-
- String paramName = "";
- String paramValue = "";
-
- // the current command-line argument
- String param = (String) e.nextElement();
-
- if(param.equals("--printCSS") || param.equals("-p")) {
- // special case
- showCSS = true;
- }
- // all the parameters have the form --param=PARAM...
- else if(param.startsWith("--")) {
- int separator = param.indexOf("=");
- paramName = param.substring(2, separator);
- paramValue = param.substring(separator+1);
- }
- // ... or -param PARAM
- else if(param.startsWith("-")) {
- paramName = param.substring(1);
- if(e.hasMoreElements()) {
- paramValue = (String) e.nextElement();
- }
- else {
- paramValue = "";
- }
- }
- // this is not a parameter, so it's probably a URL
- else {
- uris.add(param);
- }
-
- if(!paramName.equals("") && params.containsKey(paramName)) {
- if(paramValue.equals("")) {
- // empty value
- throw new Exception("You must specify a value for the "
- + "parameter " + paramName);
- }
- else {
- // update the params table
- params.put(paramName, paramValue);
- }
- }
- }
- }
-
+
+ // first, we get an enumeration from the array, because it's easier to
+ // manage
+ Iterator<String> iterator = Arrays.asList(args).iterator();
+ while (iterator.hasNext()) {
+ String paramName = "";
+ String paramValue = "";
+
+ // the current command-line argument
+ String param = iterator.next();
+
+ if (param.equals("--printCSS") || param.equals("-p")) {
+ // special case
+ showCSS = true;
+ }
+ // all the parameters have the form --param=PARAM...
+ else if (param.startsWith("--")) {
+ int separator = param.indexOf("=");
+ paramName = param.substring(2, separator);
+ paramValue = param.substring(separator + 1);
+ }
+ // ... or -param PARAM
+ else if (param.startsWith("-")) {
+ paramName = param.substring(1);
+ if (iterator.hasNext()) {
+ paramValue = iterator.next();
+ } else {
+ paramValue = "";
+ }
+ }
+ // this is not a parameter, so it's probably a URL
+ else {
+ uris.add(param);
+ }
+
+ if (paramName.length() != 0 && params.containsKey(paramName)) {
+ if (paramValue.length() == 0) {
+ // empty value
+ throw new Exception("You must specify a value for the "
+ + "parameter " + paramName);
+ } else {
+ // update the params table
+ params.put(paramName, paramValue);
+ }
+ }
+ }
+ }
}
Index: StyleSheetGenerator.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetGenerator.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- StyleSheetGenerator.java 5 Jan 2010 13:49:33 -0000 1.29
+++ StyleSheetGenerator.java 29 Aug 2011 07:21:00 -0000 1.30
@@ -29,55 +29,52 @@
import java.util.Hashtable;
import java.util.Iterator;
import java.util.TimeZone;
-import java.util.Vector;
/**
* @author Julien Grand-Mourcel
* @author Maria Kaceriakova
* @date 2007-06-29
* This class uses Velocity to output the validator results
- *
*/
public class StyleSheetGenerator extends StyleReport {
private PrintWriter out;
private Template template;
private String template_file;
- private String default_lang = "en";
+ private String default_lang = "en";
private ApplContext ac;
private StyleSheet style;
private String title;
private VelocityContext context;
private Warnings warnings;
private Errors errors;
- private Vector items;
- private static Utf8Properties availableFormat;
- private static Utf8Properties availablePropertiesURL;
+ private static final Utf8Properties availableFormat;
+ private static final Utf8Properties availablePropertiesURL;
static {
availableFormat = new Utf8Properties();
try {
java.io.InputStream f;
- f = StyleSheetGenerator.class.getResourceAsStream(
- "format.properties");
+ f = StyleSheetGenerator.class.getResourceAsStream(
+ "format.properties");
availableFormat.load(f);
f.close();
} catch (Exception e) {
- System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: "+
- "couldn't load format properties ");
+ System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: " +
+ "couldn't load format properties ");
System.err.println(" " + e.toString());
}
availablePropertiesURL = new Utf8Properties();
try {
java.io.InputStream f;
- f = StyleSheetGenerator.class.getResourceAsStream(
- "urls.properties");
+ f = StyleSheetGenerator.class.getResourceAsStream(
+ "urls.properties");
availablePropertiesURL.load(f);
f.close();
} catch (Exception e) {
- System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: "+
- "couldn't load URLs properties ");
+ System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: " +
+ "couldn't load URLs properties ");
System.err.println(" " + e.toString());
}
@@ -85,41 +82,42 @@
Velocity.setProperty(Velocity.RESOURCE_LOADER, "file");
Velocity.addProperty(Velocity.RESOURCE_LOADER, "jar");
Velocity.setProperty("jar." + Velocity.RESOURCE_LOADER + ".class",
- "org.apache.velocity.runtime.resource.loader.JarResourceLoader");
+ "org.apache.velocity.runtime.resource.loader.JarResourceLoader");
URL path = StyleSheetGenerator.class.getResource("/");
- if(path != null) {
+ if (path != null) {
Velocity.addProperty("file." + Velocity.RESOURCE_LOADER +
- ".path", path.getFile());
- Velocity.setProperty( "jar." + Velocity.RESOURCE_LOADER+".path",
- "jar:" + path + "css-validator.jar");
+ ".path", path.getFile());
+ Velocity.setProperty("jar." + Velocity.RESOURCE_LOADER + ".path",
+ "jar:" + path + "css-validator.jar");
}
Velocity.init();
- } catch(Exception e) {
- System.err.println("Failed to initialize Velocity. "+
- "Validator might not work as expected.");
+ } catch (Exception e) {
+ System.err.println("Failed to initialize Velocity. " +
+ "Validator might not work as expected.");
}
}
-
+
public StyleSheetGenerator(String title, StyleSheet style, String document,
- int warningLevel)
- {
+ int warningLevel) {
this(null, title, style, document, warningLevel);
}
public StyleSheetGenerator(ApplContext ac, String title, StyleSheet style,
- String document, int warningLevel) {
+ String document, int warningLevel) {
+ ArrayList<CssRuleList> items;
+
this.ac = ac;
this.style = style;
this.title = title;
this.template_file = availableFormat.getProperty(document);
context = new VelocityContext();
- // adjust the source name if needed
- if (ac.isInputFake()) {
- title = title.substring(title.lastIndexOf('/')+1);
- }
- context.put("file_title", queryReplace(title));
-
+ // adjust the source name if needed
+ if (ac.isInputFake()) {
+ title = title.substring(title.lastIndexOf('/') + 1);
+ }
+ context.put("file_title", queryReplace(title));
+
// W3C_validator_result
warnings = style.getWarnings();
errors = style.getErrors();
@@ -144,35 +142,35 @@
context.put(k, ac.getMsg().getString(k));
}
}
-
+
if (ac.getLink() != null) {
- int arraysize = Messages.languages_name.size();
- ArrayList<HashMap<String,String>> languages;
- languages = new ArrayList<HashMap<String,String>>(arraysize);
+ int arraysize = Messages.languages_name.size();
+ ArrayList<HashMap<String, String>> languages;
+ languages = new ArrayList<HashMap<String, String>>(arraysize);
String name;
for (int i = 0; i < arraysize; ++i) {
name = String.valueOf(Messages.languages_name.get(i));
- HashMap<String,String> l = new HashMap<String,String>();
+ HashMap<String, String> l = new HashMap<String, String>();
l.put("name", name);
l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
- languages.add(i, l);
+ languages.add(i, l);
}
context.put("languages", languages.toArray());
String link = ac.getLink().replaceAll("&lang=.*&", "&");
link = link.replaceAll("&lang=.*$", "");
context.put("link", "?" + link.replaceAll("&", "&"));
}
-
+
// generated values
SimpleDateFormat formatter;
- formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
+ formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
context.put("currentdate", formatter.format(new Date()));
context.put("lang", ac.getContentLanguage());
context.put("errors_count", new Integer(errors.getErrorCount()));
context.put("warnings_count", new Integer(warnings.getWarningCount()));
- context.put("ignored-warnings_count",
- new Integer(warnings.getIgnoredWarningCount()));
+ context.put("ignored-warnings_count",
+ new Integer(warnings.getIgnoredWarningCount()));
context.put("warning_level", new Integer(warningLevel));
context.put("rules_count", new Integer(items.size()));
context.put("no_errors_report", Boolean.FALSE);
@@ -180,9 +178,9 @@
context.put("cssversion", ac.getCssVersion());
context.put("css_profile", ac.getProfile());
context.put("css", ac.getMsg().getString(ac.getCssVersion()));
- context.put("css_link",getURLProperty("@url-base_"+ac.getCssVersion()));
- context.put("is_valid", (errors.getErrorCount() == 0)?"true":"false");
- context.put("fake_input", Boolean.valueOf(ac.isInputFake()));
+ context.put("css_link", getURLProperty("@url-base_" + ac.getCssVersion()));
+ context.put("is_valid", (errors.getErrorCount() == 0) ? "true" : "false");
+ context.put("fake_input", Boolean.valueOf(ac.isInputFake()));
context.put("author", "www-validator-css");
context.put("author-email", "Email.html");
if (style.charset != null)
@@ -194,7 +192,7 @@
try {
template = Velocity.getTemplate("org/w3c/css/css/" + template_file);
- template.setEncoding("utf-8");
+ template.setEncoding("utf-8");
} catch (ResourceNotFoundException rnfe) {
System.err.println(rnfe.getMessage());
rnfe.printStackTrace();
@@ -210,7 +208,7 @@
private final static String getURLProperty(String name) {
return availablePropertiesURL.getProperty(name);
}
-
+
public final static void printAvailableFormat(PrintWriter out) {
Enumeration e = availableFormat.propertyNames();
out.println(" -- listing available output format --");
@@ -221,30 +219,31 @@
}
out.flush();
}
-
+
/**
* Test if <tt>document</tt> is an available output
+ *
* @param document, the desired output
* @return <tt>true</tt> if the desired output is available
*/
public static boolean isAvailableFormat(String document) {
return availableFormat.containsKey(document);
}
-
+
private final static String getDocumentName(String documentName) {
String document = availableFormat.getProperty(documentName
- .toLowerCase());
+ .toLowerCase());
if (document == null) {
System.err.println("Unable to find " + documentName.toLowerCase()
- + " output format");
+ + " output format");
return documentName;
} else {
return document;
}
}
-
+
/**
* Add the style information to the context
*/
@@ -268,22 +267,22 @@
if (errors.getErrorCount() != 0) {
CssError[] error = errors.getErrors();
int nbError = error.length;
- for (int i=0; i < nbError; i++) {
+ for (int i = 0; i < nbError; i++) {
CssError csserror = error[i];
Throwable ex = csserror.getException();
- Hashtable<String,Object> h = new Hashtable<String,Object>();
+ Hashtable<String, Object> h = new Hashtable<String, Object>();
errors_content[i] = h;
h.put("Error", csserror);
h.put("CtxName", "nocontext");
h.put("CtxMsg", "");
h.put("ErrorMsg", ((ex.getMessage() == null) ? "" :
- ex.getMessage()));
+ ex.getMessage()));
h.put("ClassName", "unkownerror");
if (ex instanceof FileNotFoundException) {
h.put("ClassName", "notfound");
- h.put("ErrorMsg",
- ac.getMsg().getGeneratorString("not-found") +
- ": " + ex.getMessage());
+ h.put("ErrorMsg",
+ ac.getMsg().getGeneratorString("not-found") +
+ ": " + ex.getMessage());
} else if (ex instanceof CssParseException) {
produceParseException((CssParseException) ex, h);
} else if (ex instanceof InvalidParamException) {
@@ -308,11 +307,11 @@
CssErrorToken terror = (CssErrorToken) csserror;
h.put("ClassName", "errortoken");
h.put("ErrorMsg", terror.getErrorDescription() + " : "
- + terror.getSkippedString());
+ + terror.getSkippedString());
} else {
h.put("ClassName", "unkownerror");
h.put("ErrorMsg", ac.getMsg().getErrorString("unknown")
- + " " + ex);
+ + " " + ex);
if (ex instanceof NullPointerException) {
// ohoh, a bug
ex.printStackTrace();
@@ -331,7 +330,6 @@
/**
* Add an array of warnings to the context so it c an be displayed
- *
*/
private void produceWarning() {
try {
@@ -348,59 +346,61 @@
/**
* Some error need more details
* We can add a link or information of this kind
- * @param error, the error to check
+ *
+ * @param error, the error to check
* @param ht_error, the Hastable with information about this error
*/
- private void produceParseException(CssParseException error,
- Hashtable<String,Object> ht_error) {
+ private void produceParseException(CssParseException error,
+ Hashtable<String, Object> ht_error) {
if (error.getContexts() != null && error.getContexts().size() != 0) {
ht_error.put("CtxName", "codeContext");
StringBuilder buf = new StringBuilder();
// Loop on the list of contexts for errors
- Enumeration e;
- for (e = error.getContexts().elements(); e.hasMoreElements();) {
- Object t = e.nextElement();
+ Enumeration e;
+ Iterator li = error.getContexts().iterator();
+ while (li.hasNext()) {
+ Object t = li.next();
// if the list is not null, add a comma
if (t != null) {
buf.append(t);
- if (e.hasMoreElements()) {
+ if (li.hasNext()) {
buf.append(", ");
}
}
}
if (buf.length() != 0) {
ht_error.put("CtxMsg", String.valueOf(buf));
- }
+ }
} else {
ht_error.put("CtxName", "nocontext");
}
ht_error.put("ClassName", "parse-error");
String name = error.getProperty();
String ret;
- if ((name != null) && (getURLProperty(name) != null) &&
- PropertiesLoader.getProfile(ac.getCssVersion()).containsKey(name)) {
+ if ((name != null) && (getURLProperty(name) != null) &&
+ PropertiesLoader.getProfile(ac.getCssVersion()).containsKey(name)) {
//we add a link information
// we check if the property doesn't exist in this css version
ht_error.put("link_before_parse_error",
- ac.getMsg().getGeneratorString("property"));
+ ac.getMsg().getGeneratorString("property"));
// Since CSS3 is only a working draft, the links don't exist yet
- // in CSS3...
+ // in CSS3...
// And this is the same with CSS1 because the links are not working
- // the same way...
+ // the same way...
// This can be removed as soon as the CSS3 specifications are made
- // and CSS1 use the links
+ // and CSS1 use the links
// and the link is changed in urls.properties
String lnk;
if (ac.getCssVersion().equals("css3")) {
lnk = getURLProperty("@url-base_css2.1");
} else if (ac.getCssVersion().equals("css1")) {
- lnk = getURLProperty("@url-base_css2");
+ lnk = getURLProperty("@url-base_css2");
} else {
lnk = context.get("css_link").toString();
- }
+ }
// this would be replaced by :
// ht_error.put("link_value_parse_error",
- // context.get("css_link") + getURLProperty(name));
+ // context.get("css_link") + getURLProperty(name));
ht_error.put("link_value_parse_error", lnk + getURLProperty(name));
ht_error.put("link_name_parse_error", name);
}
@@ -417,42 +417,52 @@
}
if (error.getSkippedString() != null) {
ht_error.put("span_class_parse_error", "skippedString");
- ht_error.put("span_value_parse_error",
- queryReplace(error.getSkippedString()));
+ ht_error.put("span_value_parse_error",
+ queryReplace(error.getSkippedString()));
} else if (error.getExp() != null) {
ret += " : " + queryReplace(error.getExp().toStringFromStart());
ht_error.put("span_class_parse_error", "exp");
- ht_error.put("span_value_parse_error",
- queryReplace(error.getExp().toString()));
+ ht_error.put("span_value_parse_error",
+ queryReplace(error.getExp().toString()));
}
} else {
ret = ac.getMsg().getGeneratorString("unrecognize");
ht_error.put("span_class_parse_error", "unrecognized");
- ht_error.put("span_value_parse_error",
- queryReplace(error.getSkippedString()));
+ ht_error.put("span_value_parse_error",
+ queryReplace(error.getSkippedString()));
}
ht_error.put("ErrorMsg", ret);
}
/**
- *
* @param s, the string to convert
* @return the string s with html character escaped
*/
private String queryReplace(String s) {
if (s != null) {
int len = s.length();
- StringBuilder ret = new StringBuilder(len+16);
+ StringBuilder ret = new StringBuilder(len + 16);
char c;
for (int i = 0; i < len; i++) {
switch (c = s.charAt(i)) {
- case '&' : ret.append("&"); break;
- case '\'' : ret.append("'"); break;
- case '"' : ret.append("""); break;
- case '<' : ret.append("<"); break;
- case '>' : ret.append(">"); break;
- default : ret.append(c);
+ case '&':
+ ret.append("&");
+ break;
+ case '\'':
+ ret.append("'");
+ break;
+ case '"':
+ ret.append(""");
+ break;
+ case '<':
+ ret.append("<");
+ break;
+ case '>':
+ ret.append(">");
+ break;
+ default:
+ ret.append(c);
}
}
return ret.toString();
@@ -461,7 +471,8 @@
}
/**
- * Display the output
+ * Display the output
+ *
* @require VelocityContext to be set and init()
*/
public void print(PrintWriter out) {
@@ -476,12 +487,12 @@
}
/**
- * The user doesn't want to see the error report when this function
+ * The user doesn't want to see the error report when this function
* is called
*/
public void desactivateError() {
context.put("no_errors_report", Boolean.TRUE);
- // activate the no errors report
+ // activate the no errors report
}
}
Index: StyleSheetParser.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetParser.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- StyleSheetParser.java 5 Jan 2010 13:49:33 -0000 1.17
+++ StyleSheetParser.java 29 Aug 2011 07:21:00 -0000 1.18
@@ -7,16 +7,6 @@
package org.w3c.css.css;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import java.lang.reflect.Constructor;
-
import org.w3c.css.parser.AtRule;
import org.w3c.css.parser.AtRuleMedia;
import org.w3c.css.parser.AtRulePage;
@@ -35,109 +25,115 @@
import org.w3c.css.util.Warning;
import org.w3c.css.util.Warnings;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Constructor;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
/**
* @version $Revision$
*/
public final class StyleSheetParser
- implements CssValidatorListener, CssParser {
+ implements CssValidatorListener, CssParser {
private static Constructor co = null;
static {
- try {
- Class c = java.lang.Exception.class;
- Class cp[] = { java.lang.Exception.class };
- co = c.getDeclaredConstructor(cp);
- } catch (NoSuchMethodException ex) {
- co = null;
- }
+ try {
+ Class c = java.lang.Exception.class;
+ Class cp[] = {java.lang.Exception.class};
+ co = c.getDeclaredConstructor(cp);
+ } catch (NoSuchMethodException ex) {
+ co = null;
+ }
}
- CssFouffa cssFouffa;
+ CssFouffa cssFouffa;
StyleSheet style = new StyleSheet();
public void reInit() {
- style = new StyleSheet();
+ style = new StyleSheet();
}
public StyleSheet getStyleSheet() {
- return style;
+ return style;
}
public void setWarningLevel(int warningLevel) {
- style.setWarningLevel(warningLevel);
+ style.setWarningLevel(warningLevel);
}
-
+
public void notifyErrors(Errors errors) {
- style.addErrors(errors);
+ style.addErrors(errors);
}
public void notifyWarnings(Warnings warnings) {
- style.addWarnings(warnings);
+ style.addWarnings(warnings);
}
/**
* Adds a vector of properties to a selector.
*
* @param selector the selector
- * @param declarations Properties to associate with contexts
+ * @param properties Properties to associate with contexts
*/
public void handleRule(ApplContext ac, CssSelectors selector,
- Vector properties)
- {
- if (selector.getAtRule() instanceof AtRulePage) {
- style.remove(selector);
- }
- for (Enumeration e2 = properties.elements();e2.hasMoreElements();) {
- CssProperty property = (CssProperty) e2.nextElement();
- property.setSelectors(selector);
- style.addProperty(selector, property);
- }
+ ArrayList<CssProperty> properties) {
+ if (selector.getAtRule() instanceof AtRulePage) {
+ style.remove(selector);
+ }
+ for (CssProperty property : properties) {
+ property.setSelectors(selector);
+ style.addProperty(selector, property);
+ }
}
// part added by Sijtsche de Jong
public void addCharSet(String charset) {
- style.addCharSet(charset);
+ style.addCharSet(charset);
}
public void newAtRule(AtRule atRule) {
- style.newAtRule(atRule);
+ style.newAtRule(atRule);
}
public void endOfAtRule() {
- style.endOfAtRule();
+ style.endOfAtRule();
}
public void setImportant(boolean important) {
- style.setImportant(important);
+ style.setImportant(important);
}
- public void setSelectorList(Vector selectors) {
- style.setSelectorList(selectors);
+ public void setSelectorList(ArrayList<CssSelectors> selectors) {
+ style.setSelectorList(selectors);
}
- public void setProperty(Vector properties) {
- style.setProperty(properties);
+ public void setProperty(ArrayList<CssProperty> properties) {
+ style.setProperty(properties);
}
public void endOfRule() {
- style.endOfRule();
+ style.endOfRule();
}
public void removeThisRule() {
- style.removeThisRule();
+ style.removeThisRule();
}
public void removeThisAtRule() {
- style.removeThisAtRule();
+ style.removeThisAtRule();
}
//end of part added by Sijtsche de Jong
/**
* Handles an at-rule.
- *
+ * <p/>
* <p>The parameter <code>value</code> can be :
* <DL>
* <DT>CssString
@@ -146,252 +142,253 @@
* <DD>The value coming from an URL.
* <DT>Vector
* <DD>The value is a vector of declarations (it contains properties).
- * This feature is not legal, so be careful.
+ * This feature is not legal, so be careful.
* </DL>
*
- * @param ident The ident for this at-rule (for example: 'font-face')
+ * @param ident The ident for this at-rule (for example: 'font-face')
* @param string The string representation if this at-rule
*/
public void handleAtRule(ApplContext ac, String ident, String string) {
- style.getWarnings().addWarning(new Warning(cssFouffa.getSourceFile(),
- cssFouffa.getLine(),
- "at-rule",
- 2,
- new String[] { ident, string },
- ac));
- //stylesheet.addAtRule(atRule);
+ style.getWarnings().addWarning(new Warning(cssFouffa.getSourceFile(),
+ cssFouffa.getLine(),
+ "at-rule",
+ 2,
+ new String[]{ident, string},
+ ac));
+ //stylesheet.addAtRule(atRule);
}
/**
- * @param url the URL containing the style sheet
- * @param title the title of the stylesheet
- * @param kind may be a stylesheet or an alternate stylesheet
- * @param media the media to apply this
+ * @param url the URL containing the style sheet
+ * @param title the title of the stylesheet
+ * @param kind may be a stylesheet or an alternate stylesheet
+ * @param media the media to apply this
* @param origin the origin of the style sheet
- * @exception IOException an IO error
+ * @throws IOException an IO error
*/
public void parseURL(ApplContext ac, URL url, String title,
- String kind, String media,
- int origin) {
- setWarningLevel(ac.getWarningLevel());
- if (Util.onDebug) {
- System.err.println( "StyleSheet.parseURL(" + url + ", "
- + title + ", "
- + kind + ", " + media + ", "
- + origin + ")" );
- }
- if (kind != null) {
- kind = kind.trim().toLowerCase();
- if (!kind.equals("stylesheet") && !kind.equals("alternate stylesheet")) {
- return;
- }
- }
+ String kind, String media,
+ int origin) {
+ setWarningLevel(ac.getWarningLevel());
+ if (Util.onDebug) {
+ System.err.println("StyleSheet.parseURL(" + url + ", "
+ + title + ", "
+ + kind + ", " + media + ", "
+ + origin + ")");
+ }
+ if (kind != null) {
+ kind = kind.trim().toLowerCase();
+ if (!kind.equals("stylesheet") && !kind.equals("alternate stylesheet")) {
+ return;
+ }
+ }
- try {
- ac.setOrigin(origin);
+ try {
+ ac.setOrigin(origin);
// if (cssFouffa == null) {
- cssFouffa = new CssFouffa(ac, url);
- cssFouffa.addListener(this);
+ cssFouffa = new CssFouffa(ac, url);
+ cssFouffa.addListener(this);
// } else {
// cssFouffa.ReInit(ac, url);
// }
- // cssFouffa.setResponse(res);
+ // cssFouffa.setResponse(res);
- // removed plh 2001-03-08
- // cssFouffa.setOrigin(origin);
- // cssFouffa.setDefaultMedium(defaultmedium);
- // cssFouffa.doConfig();
- if (media == null) {
- if (ac.getMedium() == null) {
- media = "all";
- } else {
- media = ac.getMedium();
- }
- }
- AtRuleMedia m = new AtRuleMedia();
- try {
- addMedias(m, media, ac);
- cssFouffa.setAtRule(m);
- } catch (org.w3c.css.util.InvalidParamException e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1, e));
- notifyErrors(er);
- return;
- }
- cssFouffa.parseStyle();
- } catch (Exception e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1, e));
- notifyErrors(er);
- }
+ // removed plh 2001-03-08
+ // cssFouffa.setOrigin(origin);
+ // cssFouffa.setDefaultMedium(defaultmedium);
+ // cssFouffa.doConfig();
+ if (media == null) {
+ if (ac.getMedium() == null) {
+ media = "all";
+ } else {
+ media = ac.getMedium();
+ }
+ }
+ AtRuleMedia m = new AtRuleMedia();
+ try {
+ addMedias(m, media, ac);
+ cssFouffa.setAtRule(m);
+ } catch (org.w3c.css.util.InvalidParamException e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1, e));
+ notifyErrors(er);
+ return;
+ }
+ cssFouffa.parseStyle();
+ } catch (Exception e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1, e));
+ notifyErrors(er);
+ }
}
-
+
private void addMedias(AtRuleMedia m, String medias, ApplContext ac) throws InvalidParamException {
- StringTokenizer tokens = new StringTokenizer(medias, ",");
- while (tokens.hasMoreTokens()) {
- m.addMedia(tokens.nextToken().trim(), ac);
- }
+ StringTokenizer tokens = new StringTokenizer(medias, ",");
+ while (tokens.hasMoreTokens()) {
+ m.addMedia(tokens.nextToken().trim(), ac);
+ }
}
/**
* Parse a style element. The Style element always comes from the user
*
* @param input the inputStream containing the style data
- * @param url the name of the file the style element was read in.
- * @exception IOException an IO error
+ * @param url the name of the file the style element was read in.
+ * @throws IOException an IO error
*/
public void parseStyleElement(ApplContext ac, InputStream input,
- String title, String media,
- URL url, int lineno) {
- style.setWarningLevel(ac.getWarningLevel());
- if (Util.onDebug) {
- System.err.println("StyleSheet.parseStyleElement(" + title + ", "
- + media + ", " + url
- + "," + lineno + ")" );
- }
- try {
+ String title, String media,
+ URL url, int lineno) {
+ style.setWarningLevel(ac.getWarningLevel());
+ if (Util.onDebug) {
+ System.err.println("StyleSheet.parseStyleElement(" + title + ", "
+ + media + ", " + url
+ + "," + lineno + ")");
+ }
+ try {
// if (cssFouffa == null) {
- String charset = ac.getCharsetForURL(url);
- cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
- cssFouffa.addListener(this);
+ String charset = ac.getCharsetForURL(url);
+ cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
+ cssFouffa.addListener(this);
// } else {
// cssFouffa.ReInit(ac, input, url, lineno);
// }
- // cssFouffa.setResponse(res);
- // cssFouffa.setDefaultMedium(defaultmedium);
- // cssFouffa.doConfig();
+ // cssFouffa.setResponse(res);
+ // cssFouffa.setDefaultMedium(defaultmedium);
+ // cssFouffa.doConfig();
- if (media == null) {
- media = "all";
- }
+ if (media == null) {
+ media = "all";
+ }
- AtRuleMedia m = new AtRuleMedia();
- try {
- addMedias(m, media, ac);
- cssFouffa.setAtRule(m);
- } catch (org.w3c.css.util.InvalidParamException e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1, e));
- notifyErrors(er);
- return;
- }
- cssFouffa.parseStyle();
- } catch (IOException e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1, e));
- notifyErrors(er);
- } catch(TokenMgrError e) {
- Errors er = new Errors();
- CssParseException cpe = null;
- if (co != null) {
- try {
- Object o[] = new Object[1];
- o[0] = e;
- Exception new_e = (Exception) co.newInstance(o);
- cpe = new CssParseException(new_e);
- } catch (Exception ex) {
- cpe = null;
- }
- }
- if (cpe == null) {
- cpe = new CssParseException(new Exception(e.getMessage()));
- }
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1,
- //e.getErrorLine(),
- cpe));
- notifyErrors(er);
- } catch(RuntimeException e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- cssFouffa.getLine(),
- new CssParseException(e)));
- notifyErrors(er);
- }
+ AtRuleMedia m = new AtRuleMedia();
+ try {
+ addMedias(m, media, ac);
+ cssFouffa.setAtRule(m);
+ } catch (org.w3c.css.util.InvalidParamException e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1, e));
+ notifyErrors(er);
+ return;
+ }
+ cssFouffa.parseStyle();
+ } catch (IOException e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1, e));
+ notifyErrors(er);
+ } catch (TokenMgrError e) {
+ Errors er = new Errors();
+ CssParseException cpe = null;
+ if (co != null) {
+ try {
+ Object o[] = new Object[1];
+ o[0] = e;
+ Exception new_e = (Exception) co.newInstance(o);
+ cpe = new CssParseException(new_e);
+ } catch (Exception ex) {
+ cpe = null;
+ }
+ }
+ if (cpe == null) {
+ cpe = new CssParseException(new Exception(e.getMessage()));
+ }
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1,
+ //e.getErrorLine(),
+ cpe));
+ notifyErrors(er);
+ } catch (RuntimeException e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ cssFouffa.getLine(),
+ new CssParseException(e)));
+ notifyErrors(er);
+ }
}
/**
* @param input the inputStream containing the style data
* @param url the name of the file the style element was read in.
- * @exception IOException an IO error
+ * @throws IOException an IO error
+ * @see #parseStyleElement(ApplContext, InputStream, String, String, URL, int)
* @deprecated Replaced by parseStyleElement
- * @see #parseStyleElement(InputStream, URL, int)
*/
public void parseStyleElement(ApplContext ac, String input, URL url, int lineno) {
- parseStyleElement(ac, new ByteArrayInputStream(input.getBytes()),
- null, null, url, lineno);
+ parseStyleElement(ac, new ByteArrayInputStream(input.getBytes()),
+ null, null, url, lineno);
}
/**
* Parse some declarations. All declarations always comes from the user
*
* @param input the inputStream containing the style data
- * @param id the uniq id
- * @param filename the name of the file the style element was read in.
- * @exception IOException an IO error
+ * @param id the uniq id
+ * @param url the URL the style element was read in.
+ * @throws IOException an IO error
*/
public void parseStyleAttribute(ApplContext ac, InputStream input, String id,
- URL url, int lineno) {
- style.setWarningLevel(ac.getWarningLevel());
- lineno--; // why ?!?!
- if (Util.onDebug) {
- System.err.println("StyleSheet.parseStyleAttribute(" + id + ","
- + url + "," + lineno + ")" );
- }
+ URL url, int lineno) {
+ style.setWarningLevel(ac.getWarningLevel());
+ lineno--; // why ?!?!
+ if (Util.onDebug) {
+ System.err.println("StyleSheet.parseStyleAttribute(" + id + ","
+ + url + "," + lineno + ")");
+ }
- try {
- // if (cssFouffa == null) {
- String charset = ac.getCharsetForURL(url);
- cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
- cssFouffa.addListener(this);
- // } else
+ try {
+ // if (cssFouffa == null) {
+ String charset = ac.getCharsetForURL(url);
+ cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
+ cssFouffa.addListener(this);
+ // } else
// cssFouffa.ReInit(ac, input, url, lineno);
- CssSelectors selector = new CssSelectors(ac);
+ CssSelectors selector = new CssSelectors(ac);
- try {
- AtRuleMedia media = new AtRuleMedia();
- media.addMedia("all", ac);
- cssFouffa.setAtRule(media);
- } catch (InvalidParamException e) {} //ignore
+ try {
+ AtRuleMedia media = new AtRuleMedia();
+ media.addMedia("all", ac);
+ cssFouffa.setAtRule(media);
+ } catch (InvalidParamException e) {
+ } //ignore
- try {
- selector.addId(new IdSelector(id.substring(1)));;
- } catch (InvalidParamException e) {
- style.removeThisRule();
- ac.getFrame().addError(new CssError(e));
- }
- cssFouffa.parseDeclarations(selector);
- } catch (IOException e) {
- Errors er = new Errors();
- er.addError(new org.w3c.css.parser.CssError(url.toString(),
- -1, e));
- notifyErrors(er);
- }
+ try {
+ selector.addId(new IdSelector(id.substring(1)));
+ } catch (InvalidParamException e) {
+ style.removeThisRule();
+ ac.getFrame().addError(new CssError(e));
+ }
+ cssFouffa.parseDeclarations(selector);
+ } catch (IOException e) {
+ Errors er = new Errors();
+ er.addError(new org.w3c.css.parser.CssError(url.toString(),
+ -1, e));
+ notifyErrors(er);
+ }
}
/**
* @param input the inputStream containing the style data
- * @param id the uniq id
- * @param url the name of the file the style element was read in.
- * @exception IOException an IO error
+ * @param id the uniq id
+ * @param url the name of the file the style element was read in.
+ * @throws IOException an IO error
+ * @see #parseStyleAttribute(ApplContext, InputStream, String, URL, int)
* @deprecated Replaced by parseStyleAttribute
- * @see #parseStyleAttribute(InputStream, URL, int)
*/
public void parseStyleAttribute(ApplContext ac, String input, String id,
- URL url, int lineno) {
- parseStyleAttribute(ac, new ByteArrayInputStream(input.getBytes()),
- id, url, lineno);
+ URL url, int lineno) {
+ parseStyleAttribute(ac, new ByteArrayInputStream(input.getBytes()),
+ id, url, lineno);
}
public void setStyle(Class style) {
- cssFouffa.setStyle(style);
+ cssFouffa.setStyle(style);
}
}
Received on Monday, 29 August 2011 07:21:13 UTC