- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 26 Apr 2006 12:35:53 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/css
In directory hutz:/tmp/cvs-serv30239
Added Files:
CssValidator.java
Log Message:
cmdline
--- NEW FILE: CssValidator.java ---
/*
* CssValidatoralidator.java
*
* Created on April 19, 2006, 2:50 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
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.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;
/**
*
* @author jean
*/
public class CssValidator {
ApplContext ac;
PrintWriter out;
Vector uris = new Vector();
Hashtable params;
// @@ HACK
static boolean showCSS = false;
private Exception exception;
/**
*
* Creates a new instance of CssValidator with the following default values:
* <ul>
* <li>profile = css2</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", "css2");
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 (default), css21, 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, nl, zh-cn");
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)
|| "css3".equals(profile) || "svg".equals(profile)
|| "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
style.ac.setCssVersion(profile);
} else {
style.ac.setProfile(profile);
style.ac.setCssVersion("css2");
}
} else {
style.ac.setCssVersion("css2");
}
// 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
HTMLStyleSheetParser URLparser = new HTMLStyleSheetParser(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 {
if (styleSheet == null) {
throw new IOException(ac.getMsg().getServletString("process") + " "
+ title);
}
styleSheet.findConflicts(ac);
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);
}
}
}
}
}
Received on Wednesday, 26 April 2006 12:36:03 UTC