Add analytics
[bus.git] / busui / owa / modules / base / js / includes / jquery / jquery.sprintf.js
blob:a/busui/owa/modules/base/js/includes/jquery/jquery.sprintf.js -> blob:b/busui/owa/modules/base/js/includes/jquery/jquery.sprintf.js
--- a/busui/owa/modules/base/js/includes/jquery/jquery.sprintf.js
+++ b/busui/owa/modules/base/js/includes/jquery/jquery.sprintf.js
@@ -1,1 +1,58 @@
+/**
+ * sprintf and vsprintf for jQuery
+ * somewhat based on http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
+ * 
+ * Copyright (c) 2008 Sabin Iacob (m0n5t3r) <iacobs@m0n5t3r.info>
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details. 
+ *
+ * @license http://www.gnu.org/licenses/gpl.html 
+ * @project jquery.sprintf
+ */
+(function($){
+	var formats = {
+		'%': function(val) {return '%';},
+		'b': function(val) {return  parseInt(val, 10).toString(2);},
+		'c': function(val) {return  String.fromCharCode(parseInt(val, 10));},
+		'd': function(val) {return  parseInt(val, 10) ? parseInt(val, 10) : 0;},
+		'u': function(val) {return  Math.abs(val);},
+		'f': function(val, p) {return  (p > -1) ? Math.round(parseFloat(val) * Math.pow(10, p)) / Math.pow(10, p): parseFloat(val);},
+		'o': function(val) {return  parseInt(val, 10).toString(8);},
+		's': function(val) {return  val;},
+		'x': function(val) {return  ('' + parseInt(val, 10).toString(16)).toLowerCase();},
+		'X': function(val) {return  ('' + parseInt(val, 10).toString(16)).toUpperCase();}
+	};
 
+	var re = /%(?:(\d+)?(?:\.(\d+))?|\(([^)]+)\))([%bcdufosxX])/g;
+
+	var dispatch = function(data){
+		if(data.length == 1 && typeof data[0] == 'object') { //python-style printf
+			data = data[0];
+			return function(match, w, p, lbl, fmt, off, str) {
+				return formats[fmt](data[lbl]);
+			};
+		} else { // regular, somewhat incomplete, printf
+			var idx = 0; // oh, the beauty of closures :D
+			return function(match, w, p, lbl, fmt, off, str) {
+				return formats[fmt](data[idx++], p);
+			};
+		}
+	};
+
+	$.extend({
+		sprintf: function(format) {
+			var argv = Array.apply(null, arguments).slice(1);
+			return format.replace(re, dispatch(argv));
+		},
+		vsprintf: function(format, data) {
+			return format.replace(re, dispatch(data));
+		}
+	});
+})(jQuery);