Your IP : 216.73.216.111


Current Path : /home/balossw/www/temp/common/modules/javascript/js/
Upload File :
Current File : /home/balossw/www/temp/common/modules/javascript/js/utils.string.js

/*---------------------------------------------------------------------------
		File name ............ common/js/utils.string.js
		Author ............... Antoine Lemoine
		Creation date ........ 02.09.2009
		Modification date .... 02.09.2009
---------------------------------------------------------------------------*/

function sprintf()
{
	if (!arguments || arguments.length<1 || !RegExp) { return null; }

	var fullstring = arguments[0];
	var regex = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var result = [], substitution_counter = 0;
	while (result = regex.exec(fullstring))
	{
		var prefixe = result[1];
		var padding_char = result[2] ? (result[2].substr(0,1)=="'" ? prefixe.substr(1,1) : result[2]) : '';
		var justify = result[3] && result[3]==="-" ? false : true;
		var min_length = result[4] ? parseInt(result[4]) : -1;
		var precision = result[5] && result[6]=='f' ? parseInt(result[5].substring(1)) : -1;
		var type = result[6];
		var suffixe = result[7];
		
		var padding = '';

		if (type=='%')
		{
			substitution='%';
		}
		else
		{
			substitution_counter++;
			if (substitution_counter>=arguments.length)
			{
				alert('Error : not enough arguments ('+(arguments.length-1)+', excluding the string) in function sprintf call');
			}
	
			var param = arguments[substitution_counter];
	
			var substitution = param;
			switch (type)
			{
				case 'b': substitution = parseInt(param).toString(2); break;
				case 'c': substitution = String.fromCharCode(parseInt(param)); break;
				case 'd': substitution = parseInt(param) ? parseInt(param) : 0; break;
				case 'u': substitution = Math.abs(param); break;
				case 'f': substitution = (precision>-1) ? Math.round(parseFloat(param)*Math.pow(10,precision))/Math.pow(10,precision) : parseFloat(param); break;
				case 'o': substitution = parseInt(param).toString(8); break;
				case 's': substitution = param; break;
				case 'x': substitution = (''+parseInt(param).toString(16)).toLowerCase(); break;
				case 'X': substitution = (''+parseInt(param).toString(16)).toUpperCase(); break;
			}
		
			var padding_char_count = min_length-substitution.toString().length;
			if (padding_char_count>0)
			{
				var tmp_array = new Array(padding_char_count+1);
				padding = tmp_array.join(padding_char ? padding_char : ' ');
			}
		}
		fullstring = prefixe + padding + substitution + suffixe;
	}
	return fullstring;
}