1 32 package net.sf.retrotranslator.transformer; 33 34 import java.util.StringTokenizer ; 35 import java.util.regex.Pattern ; 36 import net.sf.retrotranslator.runtime.impl.RuntimeTools; 37 38 41 class SourceMask { 42 43 private Pattern pattern; 44 45 public SourceMask(String srcmask) { 46 if (srcmask == null) { 47 pattern = null; 48 return; 49 } 50 StringBuilder builder = new StringBuilder (); 51 for (String s : srcmask.split(";")) { 52 if (builder.length() > 0) builder.append('|'); 53 builder.append("((./)?"); 54 StringTokenizer tokenizer = new StringTokenizer (s, "*?", true); 55 while (tokenizer.hasMoreTokens()) { 56 builder.append(wildcardToRegex(tokenizer.nextToken())); 57 } 58 builder.append(")"); 59 } 60 pattern = Pattern.compile(builder.toString()); 61 } 62 63 private static String wildcardToRegex(String s) { 64 if (s.equals("*")) return ".*"; 65 if (s.equals("?")) return "."; 66 return Pattern.quote(s); 67 } 68 69 public boolean matches(String name) { 70 return pattern != null ? pattern.matcher(name).matches() : name.endsWith(RuntimeTools.CLASS_EXTENSION); 71 } 72 73 } 74 | Popular Tags |