diff -r 942deef87200 -r 5b3ae17babdf dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Fri Jan 25 10:25:30 2013 +0100 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Mon Sep 23 00:59:14 2013 +0200 @@ -29,8 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import javax.tools.Diagnostic; import javax.tools.DiagnosticListener; import javax.tools.FileObject; @@ -55,8 +53,8 @@ private final String html; private Compile(String html, String code) throws IOException { - this.pkg = findPkg(code); - this.cls = findCls(code); + this.pkg = find("package", ';', code); + this.cls = find("class", ' ', code); this.html = html; classes = compile(html, code); } @@ -177,23 +175,20 @@ public void report(Diagnostic diagnostic) { errors.add(diagnostic); } - private static String findPkg(String java) throws IOException { - Pattern p = Pattern.compile("package\\p{javaWhitespace}*([\\p{Alnum}\\.]+)\\p{javaWhitespace}*;", Pattern.MULTILINE); - Matcher m = p.matcher(java); - if (!m.find()) { - throw new IOException("Can't find package declaration in the java file"); + private static String find(String pref, char term, String java) throws IOException { + int pkg = java.indexOf(pref); + if (pkg != -1) { + pkg += pref.length(); + while (Character.isWhitespace(java.charAt(pkg))) { + pkg++; + } + int semicolon = java.indexOf(term, pkg); + if (semicolon != -1) { + String pkgName = java.substring(pkg, semicolon).trim(); + return pkgName; + } } - String pkg = m.group(1); - return pkg; - } - private static String findCls(String java) throws IOException { - Pattern p = Pattern.compile("class\\p{javaWhitespace}*([\\p{Alnum}\\.]+)\\p{javaWhitespace}", Pattern.MULTILINE); - Matcher m = p.matcher(java); - if (!m.find()) { - throw new IOException("Can't find package declaration in the java file"); - } - String cls = m.group(1); - return cls; + throw new IOException("Can't find " + pref + " declaration in the java file"); } String getHtml() {