in lucene/analysis/common/src/java/org/apache/lucene/analysis/sr/SerbianNormalizationFilter.java [41:170]
public boolean incrementToken() throws IOException {
if (input.incrementToken()) {
char[] buffer = termAtt.buffer();
int length = termAtt.length();
for (int i = 0; i < length; i++) {
final char c = buffer[i];
switch (c) {
case 'а':
buffer[i] = 'a';
break;
case 'б':
buffer[i] = 'b';
break;
case 'в':
buffer[i] = 'v';
break;
case 'г':
buffer[i] = 'g';
break;
case 'д':
buffer[i] = 'd';
break;
case 'ђ':
case 'đ':
buffer = termAtt.resizeBuffer(1 + length);
if (i < length) {
System.arraycopy(buffer, i, buffer, i + 1, (length - i));
}
buffer[i] = 'd';
buffer[++i] = 'j';
length++;
break;
case 'е':
buffer[i] = 'e';
break;
case 'ж':
case 'з':
case 'ž':
buffer[i] = 'z';
break;
case 'и':
buffer[i] = 'i';
break;
case 'ј':
buffer[i] = 'j';
break;
case 'к':
buffer[i] = 'k';
break;
case 'л':
buffer[i] = 'l';
break;
case 'љ':
buffer = termAtt.resizeBuffer(1 + length);
if (i < length) {
System.arraycopy(buffer, i, buffer, i + 1, (length - i));
}
buffer[i] = 'l';
buffer[++i] = 'j';
length++;
break;
case 'м':
buffer[i] = 'm';
break;
case 'н':
buffer[i] = 'n';
break;
case 'њ':
buffer = termAtt.resizeBuffer(1 + length);
if (i < length) {
System.arraycopy(buffer, i, buffer, i + 1, (length - i));
}
buffer[i] = 'n';
buffer[++i] = 'j';
length++;
break;
case 'о':
buffer[i] = 'o';
break;
case 'п':
buffer[i] = 'p';
break;
case 'р':
buffer[i] = 'r';
break;
case 'с':
buffer[i] = 's';
break;
case 'т':
buffer[i] = 't';
break;
case 'ћ':
case 'ц':
case 'ч':
case 'č':
case 'ć':
buffer[i] = 'c';
break;
case 'у':
buffer[i] = 'u';
break;
case 'ф':
buffer[i] = 'f';
break;
case 'х':
buffer[i] = 'h';
break;
case 'џ':
buffer = termAtt.resizeBuffer(1 + length);
if (i < length) {
System.arraycopy(buffer, i, buffer, i + 1, (length - i));
}
buffer[i] = 'd';
buffer[++i] = 'z';
length++;
break;
case 'ш':
case 'š':
buffer[i] = 's';
break;
default:
break;
}
}
termAtt.setLength(length);
return true;
} else {
return false;
}
}