summaryrefslogtreecommitdiff
path: root/hugo/js/jquery/jquery.sprintf.js
diff options
context:
space:
mode:
Diffstat (limited to 'hugo/js/jquery/jquery.sprintf.js')
-rw-r--r--hugo/js/jquery/jquery.sprintf.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/hugo/js/jquery/jquery.sprintf.js b/hugo/js/jquery/jquery.sprintf.js
new file mode 100644
index 0000000..3d39b76
--- /dev/null
+++ b/hugo/js/jquery/jquery.sprintf.js
@@ -0,0 +1,68 @@
+/**
+ * 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 = {
+ '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);},
+ 'u': function(val) {return Math.abs(val);},
+ 'f': function(val, p) {
+ p = parseInt(p, 10);
+ val = parseFloat(val);
+ if(isNaN(p && val)) {
+ return NaN;
+ }
+ return p && val.toFixed(p) || 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;
+ return function(match, w, p, lbl, fmt, off, str) {
+ if(fmt == '%') {
+ return '%';
+ }
+ 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);
+