01: /*
02: * ProGuard -- shrinking, optimization, obfuscation, and preverification
03: * of Java bytecode.
04: *
05: * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
06: *
07: * This program is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU General Public License as published by the Free
09: * Software Foundation; either version 2 of the License, or (at your option)
10: * any later version.
11: *
12: * This program is distributed in the hope that it will be useful, but WITHOUT
13: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15: * more details.
16: *
17: * You should have received a copy of the GNU General Public License along
18: * with this program; if not, write to the Free Software Foundation, Inc.,
19: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */
21: package proguard.util;
22:
23: /**
24: * This StringMatcher tests whether strings end in a given extension, ignoring
25: * its case.
26: *
27: * @author Eric Lafortune
28: */
29: public class ExtensionMatcher implements StringMatcher {
30: private final String extension;
31:
32: /**
33: * Creates a new StringMatcher.
34: * @param extension the extension against which strings will be matched.
35: */
36: public ExtensionMatcher(String extension) {
37: this .extension = extension;
38: }
39:
40: // Implementations for StringMatcher.
41:
42: public boolean matches(String string) {
43: return endsWithIgnoreCase(string, extension);
44: }
45:
46: /**
47: * Returns whether the given string ends with the given suffix, ignoring its
48: * case.
49: */
50: private static boolean endsWithIgnoreCase(String string,
51: String suffix) {
52: int stringLength = string.length();
53: int suffixLength = suffix.length();
54:
55: return string.regionMatches(true, stringLength - suffixLength,
56: suffix, 0, suffixLength);
57: }
58: }
|