| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * 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);
|