package com.softwaremill.common.util.stringsorting;
/**
* @author Adam Warski (adam at warski dot org)
*/
public class StringToByteSortableRepresentationConverter {
private final String wrapped;
public StringToByteSortableRepresentationConverter(String wrapped) {
this.wrapped = wrapped;
}
public String convertWithLowercase() {
char[] in = wrapped.toLowerCase().toCharArray();
char[] out = new char[in.length];
int i = 0;
for (char c : in) {
char replacement = CONVERSION[(int) c];
if (replacement != 0) {
out[i] = replacement;
} else {
out[i] = ' '; // Unknown characters come first
}
i++;
}
return new String(out);
}
private final static char[] CONVERSION = new char[381];
static {
// Generated using SortedCharsToConsecutiveCharsAssigner
CONVERSION[33] = ' '; // ! = 32
CONVERSION[64] = '!'; // @ = 33
CONVERSION[35] = '"'; // # = 34
CONVERSION[36] = '#'; // $ = 35
CONVERSION[37] = '$'; // % = 36
CONVERSION[94] = '%'; // ^ = 37
CONVERSION[38] = '&'; // & = 38
CONVERSION[42] = '\''; // * = 39
CONVERSION[40] = '('; // ( = 40
CONVERSION[41] = ')'; // ) = 41
CONVERSION[95] = '*'; // _ = 42
CONVERSION[43] = '+'; // + = 43
CONVERSION[45] = ','; // - = 44
CONVERSION[61] = '-'; // = = 45
CONVERSION[123] = '.'; // { = 46
CONVERSION[125] = '/'; // } = 47
CONVERSION[91] = '0'; // [ = 48
CONVERSION[93] = '1'; // ] = 49
CONVERSION[58] = '2'; // : = 50
CONVERSION[124] = '3'; // | = 51
CONVERSION[34] = '4'; // " = 52
CONVERSION[59] = '5'; // ; = 53
CONVERSION[39] = '6'; // ' = 54
CONVERSION[92] = '7'; // \ = 55
CONVERSION[44] = '8'; // , = 56
CONVERSION[46] = '9'; // . = 57
CONVERSION[47] = ':'; // / = 58
CONVERSION[60] = ';'; // < = 59
CONVERSION[62] = '<'; // > = 60
CONVERSION[63] = '='; // ? = 61
CONVERSION[126] = '>'; // ~ = 62
CONVERSION[96] = '?'; // ` = 63
CONVERSION[48] = '@'; // 0 = 64
CONVERSION[49] = 'A'; // 1 = 65
CONVERSION[50] = 'B'; // 2 = 66
CONVERSION[51] = 'C'; // 3 = 67
CONVERSION[52] = 'D'; // 4 = 68
CONVERSION[53] = 'E'; // 5 = 69
CONVERSION[54] = 'F'; // 6 = 70
CONVERSION[55] = 'G'; // 7 = 71
CONVERSION[56] = 'H'; // 8 = 72
CONVERSION[57] = 'I'; // 9 = 73
CONVERSION[97] = 'J'; // a = 74
CONVERSION[261] = 'K'; // ą = 75
CONVERSION[228] = 'L'; // ä = 76
CONVERSION[98] = 'M'; // b = 77
CONVERSION[99] = 'N'; // c = 78
CONVERSION[263] = 'O'; // ć = 79
CONVERSION[100] = 'P'; // d = 80
CONVERSION[101] = 'Q'; // e = 81
CONVERSION[281] = 'R'; // ę = 82
CONVERSION[102] = 'S'; // f = 83
CONVERSION[103] = 'T'; // g = 84
CONVERSION[104] = 'U'; // h = 85
CONVERSION[105] = 'V'; // i = 86
CONVERSION[106] = 'W'; // j = 87
CONVERSION[107] = 'X'; // k = 88
CONVERSION[108] = 'Y'; // l = 89
CONVERSION[322] = 'Z'; // ł = 90
CONVERSION[109] = '['; // m = 91
CONVERSION[110] = '\\'; // n = 92
CONVERSION[324] = ']'; // ń = 93
CONVERSION[111] = '^'; // o = 94
CONVERSION[243] = '_'; // ó = 95
CONVERSION[246] = '`'; // ö = 96
CONVERSION[112] = 'a'; // p = 97
CONVERSION[113] = 'b'; // q = 98
CONVERSION[114] = 'c'; // r = 99
CONVERSION[115] = 'd'; // s = 100
CONVERSION[347] = 'e'; // ś = 101
CONVERSION[223] = 'f'; // ß = 102
CONVERSION[116] = 'g'; // t = 103
CONVERSION[117] = 'h'; // u = 104
CONVERSION[252] = 'i'; // ü = 105
CONVERSION[118] = 'j'; // v = 106
CONVERSION[119] = 'k'; // w = 107
CONVERSION[120] = 'l'; // x = 108
CONVERSION[121] = 'm'; // y = 109
CONVERSION[122] = 'n'; // z = 110
CONVERSION[380] = 'o'; // ż = 111
CONVERSION[378] = 'p'; // ź = 112
}
}