Author: peterreilly
Date: Wed Oct 3 08:22:59 2007
New Revision: 581623
URL: http://svn.apache.org/viewvc?rev=581623&view=rev
Log:
remove inner assignments, functionize some code
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/SelectorUtils.java
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/SelectorUtils.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/SelectorUtils.java?rev=581623&r1=581622&r2=581623&view=diff
==============================================================================
---
ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/SelectorUtils.java
(original)
+++
ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/SelectorUtils.java
Wed Oct 3 08:22:59 2007
@@ -318,7 +318,7 @@
* Must not be <code>null</code>.
* @param str The string which must be matched against the pattern.
* Must not be <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
+ * @param caseSensitive Whether or not matching should be performed
* case sensitively.
*
*
@@ -326,7 +326,7 @@
* or <code>false</code> otherwise.
*/
public static boolean match(String pattern, String str,
- boolean isCaseSensitive) {
+ boolean caseSensitive) {
char[] patArr = pattern.toCharArray();
char[] strArr = str.toCharArray();
int patIdxStart = 0;
@@ -351,13 +351,9 @@
for (int i = 0; i <= patIdxEnd; i++) {
ch = patArr[i];
if (ch != '?') {
- if (isCaseSensitive && ch != strArr[i]) {
+ if (different(caseSensitive, ch, strArr[i])) {
return false; // Character mismatch
}
- if (!isCaseSensitive && Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[i])) {
- return false; // Character mismatch
- }
}
}
return true; // String matches against pattern
@@ -368,13 +364,13 @@
}
// Process characters before first star
- while ((ch = patArr[patIdxStart]) != '*' && strIdxStart <= strIdxEnd) {
+ while (true) {
+ ch = patArr[patIdxStart];
+ if (ch == '*' || strIdxStart > strIdxEnd) {
+ break;
+ }
if (ch != '?') {
- if (isCaseSensitive && ch != strArr[strIdxStart]) {
- return false; // Character mismatch
- }
- if (!isCaseSensitive && Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[strIdxStart])) {
+ if (different(caseSensitive, ch, strArr[strIdxStart])) {
return false; // Character mismatch
}
}
@@ -384,22 +380,17 @@
if (strIdxStart > strIdxEnd) {
// All characters in the string are used. Check if only '*'s are
// left in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
- return false;
- }
- }
- return true;
+ return allStars(patArr, patIdxStart, patIdxEnd);
}
// Process characters after last star
- while ((ch = patArr[patIdxEnd]) != '*' && strIdxStart <= strIdxEnd) {
+ while (true) {
+ ch = patArr[patIdxEnd];
+ if (ch == '*' || strIdxStart > strIdxEnd) {
+ break;
+ }
if (ch != '?') {
- if (isCaseSensitive && ch != strArr[strIdxEnd]) {
- return false; // Character mismatch
- }
- if (!isCaseSensitive && Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[strIdxEnd])) {
+ if (different(caseSensitive, ch, strArr[strIdxEnd])) {
return false; // Character mismatch
}
}
@@ -409,12 +400,7 @@
if (strIdxStart > strIdxEnd) {
// All characters in the string are used. Check if only '*'s are
// left in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
- return false;
- }
- }
- return true;
+ return allStars(patArr, patIdxStart, patIdxEnd);
}
// process pattern between stars. padIdxStart and patIdxEnd point
@@ -442,13 +428,8 @@
for (int j = 0; j < patLength; j++) {
ch = patArr[patIdxStart + j + 1];
if (ch != '?') {
- if (isCaseSensitive && ch != strArr[strIdxStart + i
- + j]) {
- continue strLoop;
- }
- if (!isCaseSensitive
- && Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[strIdxStart +
i + j])) {
+ if (different(caseSensitive, ch,
+ strArr[strIdxStart + i + j])) {
continue strLoop;
}
}
@@ -468,12 +449,23 @@
// All characters in the string are used. Check if only '*'s are left
// in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
+ return allStars(patArr, patIdxStart, patIdxEnd);
+ }
+
+ private static boolean allStars(char[] chars, int start, int end) {
+ for (int i = start; i <= end; ++i) {
+ if (chars[i] != '*') {
return false;
}
}
return true;
+ }
+
+ private static boolean different(
+ boolean caseSensitive, char ch, char other) {
+ return caseSensitive
+ ? ch != other
+ : Character.toUpperCase(ch) != Character.toUpperCase(other);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]