Changeset 25494
- Timestamp:
- 12/01/08 07:32:36 (4 years ago)
- Location:
- lang/javascript/Base64/trunk
- Files:
-
- 4 modified
-
base64.html (modified) (1 prop)
-
base64.js (modified) (10 diffs)
-
test/functional.html (modified) (6 diffs, 1 prop)
-
test/performance.html (modified) (2 diffs, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/Base64/trunk/base64.html
- Property svn:mime-type set to text/html; charset=UTF-8
-
lang/javascript/Base64/trunk/base64.js
r25366 r25494 5 5 (function(){ 6 6 7 var b64chars 7 var b64chars 8 8 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; 9 9 10 var b64charcodes = function() {10 var b64charcodes = function(){ 11 11 var a = []; 12 12 var codeA = 'A'.charCodeAt(0); … … 27 27 }(b64chars); 28 28 29 var stringToArray = function(s) {29 var stringToArray = function(s){ 30 30 var a = []; 31 31 for (var i = 0, l = s.length; i < l; i ++) a[i] = s.charCodeAt(i); … … 35 35 var convertUTF8ArrayToBase64 = function(bin){ 36 36 var padlen = 0; 37 while (bin.length % 3){37 while (bin.length % 3){ 38 38 bin.push(0); 39 39 padlen++; … … 42 42 for (var i = 0, l = bin.length; i < l; i += 3){ 43 43 var c0 = bin[i], c1 = bin[i+1], c2 = bin[i+2]; 44 if (c0 >= 256 || c1 >= 256 || c2 >= 256) 44 if (c0 >= 256 || c1 >= 256 || c2 >= 256) 45 45 throw 'unsupported character found'; 46 46 var n = (c0 << 16) | (c1 << 8) | c2; … … 52 52 ); 53 53 } 54 while (padlen--) b64[b64.length - padlen - 1] = '='.charCodeAt(0);54 while (padlen--) b64[b64.length - padlen - 1] = '='.charCodeAt(0); 55 55 return String.fromCharCode.apply(String, b64); 56 56 }; 57 57 58 var convertBase64ToUTF8Array = function(b64) {59 b64 = b64.replace(/[^A-Za-z0-9 \+\/]/g, '');58 var convertBase64ToUTF8Array = function(b64){ 59 b64 = b64.replace(/[^A-Za-z0-9+\/]+/g, ''); 60 60 var bin = []; 61 61 var padlen = b64.length % 4; … … 102 102 }else{ 103 103 var c1 = bin[++i]; 104 if (c0 < 0xe0){104 if (c0 < 0xe0){ 105 105 uni.push(((c0 & 0x1f) << 6) | (c1 & 0x3f)); 106 106 }else{ 107 107 var c2 = bin[++i]; 108 108 uni.push( 109 ((c0 & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f)109 ((c0 & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f) 110 110 ); 111 111 } … … 147 147 }; 148 148 149 if (window.btoa) {149 if (window.btoa){ 150 150 var btoa = window.btoa; 151 var convertUTF16StringToBase64 = function (uni) {151 var convertUTF16StringToBase64 = function (uni){ 152 152 return btoa(convertUTF16StringToUTF8String(uni)); 153 153 }; … … 155 155 else { 156 156 var btoa = convertUTF8StringToBase64; 157 var convertUTF16StringToBase64 = function (uni) {157 var convertUTF16StringToBase64 = function (uni){ 158 158 return convertUTF8ArrayToBase64(convertUTF16StringToUTF8Array(uni)); 159 159 }; 160 160 } 161 161 162 if (window.atob) {162 if (window.atob){ 163 163 var atob = window.atob; 164 var convertBase64ToUTF16String = function (b64) {164 var convertBase64ToUTF16String = function (b64){ 165 165 return convertUTF8StringToUTF16String(atob(b64)); 166 166 }; … … 168 168 else { 169 169 var atob = convertBase64ToUTF8String; 170 var convertBase64ToUTF16String = function (b64) {170 var convertBase64ToUTF16String = function (b64){ 171 171 return convertUTF8ArrayToUTF16String(convertBase64ToUTF8Array(b64)); 172 172 }; … … 206 206 }).replace(/=+$/, ''); 207 207 }, 208 decode:function(a){ 208 decode:function(a){ 209 209 return convertBase64ToUTF16String(a.replace(/[-_]/g, function(m0){ 210 210 return m0 == '-' ? '+' : '/'; -
lang/javascript/Base64/trunk/test/functional.html
- Property svn:mime-type set to text/html; charset=utf-8
r25366 r25494 101 101 [[0x61, 0x3042], [0x61, 0xE3, 0x81, 0x82]], 102 102 [[0x3042, 0x61], [0xE3, 0x81, 0x82, 0x61]], 103 [[0x307E, 0x307F], [0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF]] 103 [[0x307E, 0x307F], [0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF]] 104 104 ], 105 105 convertUTF16ArrayToByteArray:[ … … 111 111 [[0x61, 0x3042], [0x61, 0xE3, 0x81, 0x82]], 112 112 [[0x3042, 0x61], [0xE3, 0x81, 0x82, 0x61]], 113 [[0x307E, 0x307F], [0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF]] 113 [[0x307E, 0x307F], [0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF]] 114 114 ], 115 115 convertUTF8ArrayToUTF16Array:[ … … 121 121 [[0x61, 0xE3, 0x81, 0x82], [0x61, 0x3042]], 122 122 [[0xE3, 0x81, 0x82, 0x61], [0x3042, 0x61]], 123 [[0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF], [0x307E, 0x307F]] 123 [[0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF], [0x307E, 0x307F]] 124 124 ], 125 125 convertByteArrayToUTF16Array:[ … … 131 131 [[0x61, 0xE3, 0x81, 0x82], [0x61, 0x3042]], 132 132 [[0xE3, 0x81, 0x82, 0x61], [0x3042, 0x61]], 133 [[0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF], [0x307E, 0x307F]] 133 [[0xE3, 0x81, 0xBE, 0xE3, 0x81, 0xBF], [0x307E, 0x307F]] 134 134 ], 135 135 convertUTF8StringToBase64:[ … … 161 161 ['\u0061\u00E3\u0081\u0082', [0x61, 0x3042]], 162 162 ['\u00E3\u0081\u0082\u0061', [0x3042, 0x61]], 163 ['\u00E3\u0081\u00BE\u00E3\u0081\u00BF', [0x307E, 0x307F]] 163 ['\u00E3\u0081\u00BE\u00E3\u0081\u00BF', [0x307E, 0x307F]] 164 164 ], 165 165 convertUTF8ArrayToUTF16String:[ … … 221 221 [[0x61, 0x3042], '\u0061\u00E3\u0081\u0082'], 222 222 [[0x3042, 0x61], '\u00E3\u0081\u0082\u0061'], 223 [[0x307E, 0x307F], '\u00E3\u0081\u00BE\u00E3\u0081\u00BF'] 223 [[0x307E, 0x307F], '\u00E3\u0081\u00BE\u00E3\u0081\u00BF'] 224 224 ], 225 225 convertUTF16StringToUTF8String:[ -
lang/javascript/Base64/trunk/test/performance.html
- Property svn:mime-type set to text/html; charset=utf-8
r25362 r25494 15 15 Base64[method] = function() { 16 16 log[logIndex++] = '<li>' + method + ' start: ' + (new Date - start) + '</li>'; 17 if (fn.apply && !(fn + '').match(/native/))17 if (fn.apply && (fn + '').indexOf('[native code]') < 0) 18 18 var r = fn.apply(this, arguments); 19 19 else … … 22 22 return r; 23 23 }; 24 })(method) 24 })(method); 25 25 26 26 var sources = [];
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)