in gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/text/SortAction.java [300:387]
public Key(String str) {
boolean modifiers = false;
boolean startPart = true;
boolean inField = true;
boolean inChar = false;
for (char c : str.toCharArray()) {
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!inField && !inChar) {
throw new IllegalArgumentException("Bad field syntax: " + str);
}
if (startPart) {
if (inChar) {
startChar = startChar * 10 + (c - '0');
} else {
startField = startField * 10 + (c - '0');
}
} else {
if (inChar) {
endChar = endChar * 10 + (c - '0');
} else {
endField = endField * 10 + (c - '0');
}
}
break;
case '.':
if (!inField) {
throw new IllegalArgumentException("Bad field syntax: " + str);
}
inField = false;
inChar = true;
break;
case 'n':
inField = false;
inChar = false;
modifiers = true;
numeric = true;
break;
case 'f':
inField = false;
inChar = false;
modifiers = true;
caseInsensitive = true;
break;
case 'r':
inField = false;
inChar = false;
modifiers = true;
reverse = true;
break;
case 'b':
inField = false;
inChar = false;
modifiers = true;
if (startPart) {
ignoreBlanksStart = true;
} else {
ignoreBlanksEnd = true;
}
break;
case ',':
inField = true;
inChar = false;
startPart = false;
break;
default:
throw new IllegalArgumentException("Bad field syntax: " + str);
}
}
if (!modifiers) {
ignoreBlanksStart = ignoreBlanksEnd = SortComparator.this.ignoreBlanks;
reverse = SortComparator.this.reverse;
caseInsensitive = SortComparator.this.caseInsensitive;
numeric = SortComparator.this.numeric;
}
if (startField < 1) {
throw new IllegalArgumentException("Bad field syntax: " + str);
}
}