char-decoding-utils.js revision f05b935882198ccf7d81675736e3aeb089c5113a
1function hex(number)
2{
3    var hexDigit = "0123456789ABCDEF";
4    var hex = hexDigit.substr(number & 0xf, 1);
5    while (number > 15) {
6        number >>= 4;
7        hex = hexDigit.substr(number & 15, 1) + hex;
8    }
9    return hex;
10}
11
12function decodeText(charsetName, characterSequence)
13{
14    var req = new XMLHttpRequest;
15    req.open('GET', 'data:text/plain,' + characterSequence, false);
16    req.overrideMimeType('text/plain; charset="' + charsetName + '"');
17    req.send('');
18    return req.responseText;
19}
20
21function decode(charsetName, characterSequence)
22{
23    var decodedText = decodeText(charsetName, characterSequence);
24    var result = "";
25    for (var i = 0; i < decodedText.length; ++i) {
26        var code = hex(decodedText.charCodeAt(i));
27        if (i)
28            result += "/";
29        result += "U+" + ("0000" + code).substr(code.length, 4);
30    }
31    return result;
32}
33
34function testDecode(charsetName, characterSequence, unicode)
35{
36    shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'");
37}
38
39function batchTestDecode(inputData)
40{
41    for (var i in inputData.encodings) {
42        for (var j in inputData.encoded)
43            testDecode(inputData.encodings[i], inputData.encoded[j], inputData.unicode[j]);
44    }
45}
46
47