From 0163faefef02207ad0ea3330af688103633293ff Mon Sep 17 00:00:00 2001 From: Pim van den Berg Date: Fri, 10 May 2013 21:36:54 +0200 Subject: import js directory from jsrrdgraph for client side graph rendering Source: https://github.com/manuelluis/jsrrdgraph@276b880 --- js/sprintf.js | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 js/sprintf.js (limited to 'js/sprintf.js') diff --git a/js/sprintf.js b/js/sprintf.js new file mode 100644 index 0000000..4d61fa2 --- /dev/null +++ b/js/sprintf.js @@ -0,0 +1,78 @@ +/** + * + * 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 2 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. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + + **/ + +"use strict"; + +function sprintf() +{ + var argc = 0; + var args = arguments; + var fmt = args[argc++]; + + function lpad (str, padString, length) + { + while (str.length < length) + str = padString + str; + return str; + }; + + function format (match, width, dot, precision, length, conversion) + { + if (match === '%%') return '%'; + + var value = args[argc++]; + var prefix; + + if (width === undefined) + width = 0; + else + width = +width; + + if (precision === undefined) + precision = conversion == 'd' ? 0 : 6; + else + precision = +precision; + + switch (conversion) { + case 's': + case 'c': + return value; + break; + case 'd': + return parseInt(value, 10); + break; + case 'e': + prefix = value < 0 ? '-' : ''; + return lpad(prefix+Math.abs(value).toExponential(precision),' ',width); + break; + case 'F': + case 'f': + prefix = value < 0 ? '-' : ''; + return lpad(prefix+Math.abs(value).toFixed(precision),' ',width); + break; + case 'g': + prefix = value < 0 ? '-' : ''; + return lpad(prefix+Math.abs(value).toPrecision(precision),' ',width); + break; + default: + return match; + } + + }; + return fmt.replace(/%(\d+)?(\.(\d+))?(l?)([%scdfFeg])/g,format); +}; -- cgit v1.1