Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.thaiopensource.datatype.xsd.regex.jdk1_4.gen;
  
  
  import java.io.File;
 import java.io.Writer;
 import java.util.List;
 
 public class NamingExceptionsGen {
   static public void main(String[] argsthrows IOException {
     if (args.length != 2) {
       ..println("Usage: " + NamingExceptionsGen.class.toString() + " className srcDir");
       System.exit(1);
     }
     String className = args[0];
     String srcDir = args[1];
     int lastDot = className.lastIndexOf('.');
     String pkg;
     if (lastDot < 0)
       pkg = null;
     else {
       pkg = className.substring(0, lastDot);
       className = className.substring(lastDot + 1);
       srcDir = srcDir + . + pkg.replace('.'.);
     }
     String srcFile = srcDir + . + className + ".java";
     OutputStream stm = new FileOutputStream(srcFile);
     Writer w = new BufferedWriter(new OutputStreamWriter(stm));
     String lineSep = System.getProperty("line.separator");
     w.write("// This file was automatically generated by ");
     w.write(NamingExceptionsGen.class.getName());
     w.write(lineSep);
     if (pkg != null)
       w.write("package " + pkg + ";" + lineSep + lineSep);
     w.write("class " + className + " {" + lineSep);
     gen(truewlineSep);
     gen(falsewlineSep);
     w.write("}" + lineSep);
     w.close();
   }
 
   static private void gen(boolean isStartWriter wString lineSepthrows IOException {
     char[] buf = new char[1];
     boolean excluding = false;
     char excludeMin = 0;
     char excludeMax = 0;
     List includeList = new Vector();
     List excludeRangeList = new Vector();
     for (int i = 0; i < 65536; i++) {
       char ch = (char)i;
       buf[0] = ch;
       String s = new String(buf);
       boolean isName = isStart ? Naming.isName(s) : Naming.isNmtoken(s);
       if (isName && excluding) {
         excludeRangeList.add(new Character(excludeMin));
         excludeRangeList.add(new Character(excludeMax));
         excluding = false;
       }
       if (isName != isApproxName(chisStart)) {
         if (isName)
           includeList.add(new Character(ch));
         else {
           if (!excluding) {
             excluding = true;
             excludeMin = ch;
           }
           excludeMax = ch;
         }
       }
     }
     if (excluding) {
       excludeRangeList.add(new Character(excludeMin));
       excludeRangeList.add(new Character(excludeMax));
     }
     String prefix = isStart ? "NMSTRT" : "NMCHAR";
     genList(prefix + "_INCLUDES"includeListwlineSep);
     genList(prefix + "_EXCLUDE_RANGES"excludeRangeListwlineSep);
     w.write();
     w.write("static final String ");
     w.write(prefix);
     w.write("_CATEGORIES = \"");
     w.write(isStart ?  : );
     w.write("\";");
     w.write(lineSep);
   }
 
   static private final int CHARS_PER_LINE = 10;
   static private final String INDENT = "  ";
 
   static private void genList(String varNameList includeListWriter wString lineSepthrows IOException {
     w.write();
     w.write("static final String ");
     w.write(varName);
    w.write(" =");
    w.write(lineSep);
    w.write();
    w.write();
    w.write('"');
    for (int i = 0, len = includeList.size(); i < leni++) {
      w.write("\\u");
      w.write(hex(((Character)includeList.get(i)).charValue()));
      if (i %  ==  - 1 && i + 1 != len) {
        w.write("\" +");
        w.write(lineSep);
        w.write();
        w.write();
        w.write('"');
      }
    }
    w.write("\";");
    w.write(lineSep);
  }
  static private final String HEX_DIGITS = "0123456789ABCDEF";
  static String hex(char c) {
    char[] buf = new char[4];
    buf[0] = .charAt((c >> 12) & 0xF);
    buf[1] = .charAt((c >> 8) & 0xF);
    buf[2] = .charAt((c >> 4) & 0xF);
    buf[3] = .charAt(c & 0xF);
    return new String(buf);
  }
  static private final String NMSTRT_CATEGORIES = "LlLuLoLtNl";
  static private final String NMCHAR_CATEGORIES =  + "McMeMnLmNd";
  static private boolean isApproxName(char cboolean isStart) {
    switch (Character.getType(c)) {
    case .// Ll
    case .// Lu
    case .// Lo
    case .// Lt
    case .// Nl
      return true;
    case .// Mc
    case .// Me
    case .// Mn
    case .// Lm
    case .// Nd
      return !isStart;
    }
    return false;
  }
New to GrepCode? Check out our FAQ X