diff options
| author | 2015-01-13 23:25:04 -0500 | |
|---|---|---|
| committer | 2015-01-13 23:25:04 -0500 | |
| commit | 959cb5fd4f9586ec3bd265b452fe25fe1db82e3f (patch) | |
| tree | bdd8a2c52c2fe053ba3460614bde8542e5378dbe /src/cuchaz/enigma/mapping/NameValidator.java | |
| parent | got rid of gradle in favor of ivy+ssjb (diff) | |
| download | enigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.tar.gz enigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.tar.xz enigma-fork-959cb5fd4f9586ec3bd265b452fe25fe1db82e3f.zip | |
source format change
don't hate me too much if you were planning a big merge. =P
Diffstat (limited to 'src/cuchaz/enigma/mapping/NameValidator.java')
| -rw-r--r-- | src/cuchaz/enigma/mapping/NameValidator.java | 79 |
1 files changed, 31 insertions, 48 deletions
diff --git a/src/cuchaz/enigma/mapping/NameValidator.java b/src/cuchaz/enigma/mapping/NameValidator.java index c6ae596..35a17f9 100644 --- a/src/cuchaz/enigma/mapping/NameValidator.java +++ b/src/cuchaz/enigma/mapping/NameValidator.java | |||
| @@ -16,82 +16,65 @@ import java.util.regex.Pattern; | |||
| 16 | 16 | ||
| 17 | import javassist.bytecode.Descriptor; | 17 | import javassist.bytecode.Descriptor; |
| 18 | 18 | ||
| 19 | public class NameValidator | 19 | public class NameValidator { |
| 20 | { | 20 | |
| 21 | private static final Pattern IdentifierPattern; | 21 | private static final Pattern IdentifierPattern; |
| 22 | private static final Pattern ClassPattern; | 22 | private static final Pattern ClassPattern; |
| 23 | private static final List<String> ReservedWords = Arrays.asList( | 23 | private static final List<String> ReservedWords = Arrays.asList( |
| 24 | "abstract", "continue", "for", "new", "switch", | 24 | "abstract", "continue", "for", "new", "switch", "assert", "default", "goto", "package", "synchronized", |
| 25 | "assert", "default", "goto", "package", "synchronized", | 25 | "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte", |
| 26 | "boolean", "do", "if", "private", "this", | 26 | "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch", |
| 27 | "break", "double", "implements", "protected", "throw", | 27 | "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", |
| 28 | "byte", "else", "import", "public", "throws", | 28 | "long", "strictfp", "volatile", "const", "float", "native", "super", "while" |
| 29 | "case", "enum", "instanceof", "return", "transient", | ||
| 30 | "catch", "extends", "int", "short", "try", | ||
| 31 | "char", "final", "interface", "static", "void", | ||
| 32 | "class", "finally", "long", "strictfp", "volatile", | ||
| 33 | "const", "float", "native", "super", "while" | ||
| 34 | ); | 29 | ); |
| 35 | 30 | ||
| 36 | static | 31 | static { |
| 37 | { | 32 | |
| 38 | // java allows all kinds of weird characters... | 33 | // java allows all kinds of weird characters... |
| 39 | StringBuilder startChars = new StringBuilder(); | 34 | StringBuilder startChars = new StringBuilder(); |
| 40 | StringBuilder partChars = new StringBuilder(); | 35 | StringBuilder partChars = new StringBuilder(); |
| 41 | for( int i = Character.MIN_CODE_POINT; i <= Character.MAX_CODE_POINT; i++ ) | 36 | for (int i = Character.MIN_CODE_POINT; i <= Character.MAX_CODE_POINT; i++) { |
| 42 | { | 37 | if (Character.isJavaIdentifierStart(i)) { |
| 43 | if( Character.isJavaIdentifierStart( i ) ) | 38 | startChars.appendCodePoint(i); |
| 44 | { | ||
| 45 | startChars.appendCodePoint( i ); | ||
| 46 | } | 39 | } |
| 47 | if( Character.isJavaIdentifierPart( i ) ) | 40 | if (Character.isJavaIdentifierPart(i)) { |
| 48 | { | 41 | partChars.appendCodePoint(i); |
| 49 | partChars.appendCodePoint( i ); | ||
| 50 | } | 42 | } |
| 51 | } | 43 | } |
| 52 | 44 | ||
| 53 | String identifierRegex = "[A-Za-z_<][A-Za-z0-9_>]*"; | 45 | String identifierRegex = "[A-Za-z_<][A-Za-z0-9_>]*"; |
| 54 | IdentifierPattern = Pattern.compile( identifierRegex ); | 46 | IdentifierPattern = Pattern.compile(identifierRegex); |
| 55 | ClassPattern = Pattern.compile( String.format( "^(%s(\\.|/))*(%s)$", identifierRegex, identifierRegex ) ); | 47 | ClassPattern = Pattern.compile(String.format("^(%s(\\.|/))*(%s)$", identifierRegex, identifierRegex)); |
| 56 | } | 48 | } |
| 57 | 49 | ||
| 58 | public static String validateClassName( String name, boolean packageRequired ) | 50 | public static String validateClassName(String name, boolean packageRequired) { |
| 59 | { | 51 | if (name == null) { |
| 60 | if( name == null ) | ||
| 61 | { | ||
| 62 | return null; | 52 | return null; |
| 63 | } | 53 | } |
| 64 | if( !ClassPattern.matcher( name ).matches() || ReservedWords.contains( name ) ) | 54 | if (!ClassPattern.matcher(name).matches() || ReservedWords.contains(name)) { |
| 65 | { | 55 | throw new IllegalNameException(name, "This doesn't look like a legal class name"); |
| 66 | throw new IllegalNameException( name, "This doesn't look like a legal class name" ); | ||
| 67 | } | 56 | } |
| 68 | if( packageRequired && new ClassEntry( name ).getPackageName() == null ) | 57 | if (packageRequired && new ClassEntry(name).getPackageName() == null) { |
| 69 | { | 58 | throw new IllegalNameException(name, "Class must be in a package"); |
| 70 | throw new IllegalNameException( name, "Class must be in a package" ); | ||
| 71 | } | 59 | } |
| 72 | return Descriptor.toJvmName( name ); | 60 | return Descriptor.toJvmName(name); |
| 73 | } | 61 | } |
| 74 | 62 | ||
| 75 | public static String validateFieldName( String name ) | 63 | public static String validateFieldName(String name) { |
| 76 | { | 64 | if (name == null) { |
| 77 | if( name == null ) | ||
| 78 | { | ||
| 79 | return null; | 65 | return null; |
| 80 | } | 66 | } |
| 81 | if( !IdentifierPattern.matcher( name ).matches() || ReservedWords.contains( name ) ) | 67 | if (!IdentifierPattern.matcher(name).matches() || ReservedWords.contains(name)) { |
| 82 | { | 68 | throw new IllegalNameException(name, "This doesn't look like a legal identifier"); |
| 83 | throw new IllegalNameException( name, "This doesn't look like a legal identifier" ); | ||
| 84 | } | 69 | } |
| 85 | return name; | 70 | return name; |
| 86 | } | 71 | } |
| 87 | 72 | ||
| 88 | public static String validateMethodName( String name ) | 73 | public static String validateMethodName(String name) { |
| 89 | { | 74 | return validateFieldName(name); |
| 90 | return validateFieldName( name ); | ||
| 91 | } | 75 | } |
| 92 | 76 | ||
| 93 | public static String validateArgumentName( String name ) | 77 | public static String validateArgumentName(String name) { |
| 94 | { | 78 | return validateFieldName(name); |
| 95 | return validateFieldName( name ); | ||
| 96 | } | 79 | } |
| 97 | } | 80 | } |