Sha256: 71b9acbe405fd4bc8d4de49fb948384d60131125519df1cf13522f1ec2ba23b9

Contents?: true

Size: 1.56 KB

Versions: 11

Compression:

Stored size: 1.56 KB

Contents

dojo.provide("dojox.encoding.base64");

(function(){
	var p="=";
	var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	var dxe=dojox.encoding;

	dxe.base64.encode=function(/* byte[] */ba){
		//	summary
		//	Encode an array of bytes as a base64-encoded string
		var s=[], l=ba.length;
		var rm=l%3;
		var x=l-rm;
		for (var i=0; i<x;){
			var t=ba[i++]<<16|ba[i++]<<8|ba[i++];
			s.push(tab.charAt((t>>>18)&0x3f)); 
			s.push(tab.charAt((t>>>12)&0x3f));
			s.push(tab.charAt((t>>>6)&0x3f));
			s.push(tab.charAt(t&0x3f));
		}
		//	deal with trailers, based on patch from Peter Wood.
		switch(rm){
			case 2:{
				var t=ba[i++]<<16|ba[i++]<<8;
				s.push(tab.charAt((t>>>18)&0x3f));
				s.push(tab.charAt((t>>>12)&0x3f));
				s.push(tab.charAt((t>>>6)&0x3f));
				s.push(p);
				break;
			}
			case 1:{
				var t=ba[i++]<<16;
				s.push(tab.charAt((t>>>18)&0x3f));
				s.push(tab.charAt((t>>>12)&0x3f));
				s.push(p);
				s.push(p);
				break;
			}
		}
		return s.join("");	//	string
	};

	dxe.base64.decode=function(/* string */str){
		//	summary
		//	Convert a base64-encoded string to an array of bytes
		var s=str.split(""), out=[];
		var l=s.length;
		while(s[--l]==p){ }	//	strip off trailing padding
		for (var i=0; i<l;){
			var t=tab.indexOf(s[i++])<<18;
			if(i<=l){ t|=tab.indexOf(s[i++])<<12 };
			if(i<=l){ t|=tab.indexOf(s[i++])<<6 };
			if(i<=l){ t|=tab.indexOf(s[i++]) };
			out.push((t>>>16)&0xff);
			out.push((t>>>8)&0xff);
			out.push(t&0xff);
		}
		//	strip off any null bytes
		while(out[out.length-1]==0){ out.pop(); }
		return out;	//	byte[]
	};
})();

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
dojo_src-1.5.0 dojo/dojox/encoding/base64.js
dojo_src-1.4.3 dojo/dojox/encoding/base64.js
dojo_src-1.4.102 dojo/dojox/encoding/base64.js
dojo-pkg-1.132.0 data/dojo-release-1.3.2-src/dojox/encoding/base64.js
dojo-pkg-1.111.0 data/dojo-release-1.1.1-src/dojox/encoding/base64.js
dojo-pkg-1.120.0 data/dojo-release-1.2.0-src/dojox/encoding/base64.js
dojo-pkg-1.121.0 data/dojo-release-1.2.1-src/dojox/encoding/base64.js
dojo-pkg-1.122.0 data/dojo-release-1.2.2-src/dojox/encoding/base64.js
dojo-pkg-1.123.0 data/dojo-release-1.2.3-src/dojox/encoding/base64.js
dojo-pkg-1.130.0 data/dojo-release-1.3.0-src/dojox/encoding/base64.js
dojo-pkg-1.131.0 data/dojo-release-1.3.1-src/dojox/encoding/base64.js