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