diff options
| author | Thomas Felber <felber@student.tugraz.at> | 2015-06-20 18:36:49 -1000 | 
|---|---|---|
| committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-07-13 09:50:07 +0200 | 
| commit | e00c2911bf6b6f14ddfcc399683be8d8c958040f (patch) | |
| tree | 21ba9d9a4fa4ef9ecc11234afd85c92eff96a576 /pdf-as-web/src/main/webapp/assets/js | |
| parent | cb3c726d400e19fba8a2544e8e1decbd6e8eb368 (diff) | |
| download | pdf-as-4-e00c2911bf6b6f14ddfcc399683be8d8c958040f.tar.gz pdf-as-4-e00c2911bf6b6f14ddfcc399683be8d8c958040f.tar.bz2 pdf-as-4-e00c2911bf6b6f14ddfcc399683be8d8c958040f.zip | |
removed jspdf references
Diffstat (limited to 'pdf-as-web/src/main/webapp/assets/js')
5 files changed, 0 insertions, 815 deletions
| diff --git a/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/basic.htm b/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/basic.htm deleted file mode 100644 index dea59adf..00000000 --- a/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/basic.htm +++ /dev/null @@ -1,201 +0,0 @@ -<!doctype> -<html> -<head> -	<title>jsPDF</title> -	<style type="text/css"> -		* { padding: 0; margin: 0; } -		body { -			padding: 30px; -			font-family: Arial, Helvetica, sans-serif; -		} -		h1 { -			margin-bottom: 1em; -			border-bottom: 1px solid #ccc; -		} -		 -		h2 { -			margin-bottom: 1em; -			border-bottom: 1px solid #ccc; -		} -		 -		pre { -			border: 1px dotted #ccc; -			background: #f7f7f7; -			padding: 10px; -			margin-bottom: 1em; -		} -         -        h1 { -            margin-bottom: 0.7em; -        } -         -        h2 { -            margin-top: 1em; -        } -	</style> -	<script type="text/javascript" src="../libs/base64.js"></script> -	<script type="text/javascript" src="../libs/sprintf.js"></script> -	<script type="text/javascript" src="../jspdf.js"></script> -</head> - -<body> - -<h1>jsPDF Demos</h1> - -<p>Examples for using jsPDF with Data URIs below. Go <a href="http://jspdf.googlecode.com/">back to project homepage</a>.</p> - -<h2>Simple Two-page Text Document</h2> -<pre>var doc = new jsPDF(); -doc.text(20, 20, 'Hello world!'); -doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.'); -doc.addPage(); -doc.text(20, 20, 'Do you like that?'); - -// Output as Data URI -doc.output('datauri');</pre> -<a href="javascript:demo1()">Run Code</a> - -<h2>Different font sizes</h2> -<pre>var doc = new jsPDF(); -doc.setFontSize(22); -doc.text(20, 20, 'This is a title'); - -doc.setFontSize(16); -doc.text(20, 30, 'This is some normal sized text underneath.');	 - -// Output as Data URI -doc.output('datauri');</pre> -<a href="javascript:demo2()">Run Code</a> - - -<h2>Adding metadata</h2> -<pre>var doc = new jsPDF(); -doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a creator.'); - -// Optional - set properties on the document -doc.setProperties({ -	title: 'Title', -	subject: 'This is the subject',		 -	author: 'James Hall', -	keywords: 'generated, javascript, web 2.0, ajax', -	creator: 'MEEE' -}); - -// Output as Data URI -doc.output('datauri');</pre> -<a href="javascript:demo3()">Run Code</a> - - -<h2>Example of user input</h2> -<pre>var name = prompt('What is your name?'); -var multiplier = prompt('Enter a number:'); -multiplier = parseInt(multiplier); - -var doc = new jsPDF(); -doc.setFontSize(22);	 -doc.text(20, 20, 'Questions'); -doc.setFontSize(16); -doc.text(20, 30, 'This belongs to: ' + name); - -for(var i = 1; i <= 12; i ++) { -	doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ___'); -} - -doc.addPage(); -doc.setFontSize(22); -doc.text(20, 20, 'Answers'); -doc.setFontSize(16); - -for(var i = 1; i <= 12; i ++) { -	doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ' + (i * multiplier)); -}	 -doc.output('datauri');</pre> -<a href="javascript:demo4()">Run Code</a> - - - -<script type="text/javascript"> - -function demo1() { -	var doc = new jsPDF(); -	doc.text(20, 20, 'Hello world!'); -	doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.'); -	doc.addPage(); -	doc.text(20, 20, 'Do you like that?'); -	 -	// Output as Data URI -	doc.output('datauri'); -} - -function demo2() { -	var doc = new jsPDF(); -	doc.setFontSize(22); -	doc.text(20, 20, 'This is a title'); -	 -	doc.setFontSize(16); -	doc.text(20, 30, 'This is some normal sized text underneath.');	 -	 -	// Output as Data URI -	doc.output('datauri'); -} - -function demo3() { -	var doc = new jsPDF(); -	doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a creator.'); -	 -	// Optional - set properties on the document -	doc.setProperties({ -		title: 'Title', -		subject: 'This is the subject',		 -		author: 'James Hall', -		keywords: 'generated, javascript, web 2.0, ajax', -		creator: 'MEEE' -	}); -	 -	// Output as Data URI -	doc.output('datauri'); -} - -function demo4() {	 -	var name = prompt('What is your name?'); -	var multiplier = prompt('Enter a number:'); -	multiplier = parseInt(multiplier); - -	var doc = new jsPDF(); -	doc.setFontSize(22);	 -	doc.text(20, 20, 'Questions'); -	doc.setFontSize(16); -	doc.text(20, 30, 'This belongs to: ' + name); -	 -	for(var i = 1; i <= 12; i ++) { -		doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ___'); -	} -	 -	doc.addPage(); -	doc.setFontSize(22); -	doc.text(20, 20, 'Answers'); -	doc.setFontSize(16); -	 -	for(var i = 1; i <= 12; i ++) { -		doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ' + (i * multiplier)); -	}	 -	doc.output('datauri'); -	 -} - -</script> - - -<script type="text/javascript"> -// Google Analytics - -var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); -document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); -</script> -<script type="text/javascript"> -try { -var pageTracker = _gat._getTracker("UA-2746979-4"); -pageTracker._trackPageview(); -} catch(err) {}</script> -</body> -</html>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/jaxer.htm b/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/jaxer.htm deleted file mode 100644 index fff93e9b..00000000 --- a/pdf-as-web/src/main/webapp/assets/js/jspdf/examples/jaxer.htm +++ /dev/null @@ -1,15 +0,0 @@ -<script runat="server" type="text/javascript" src="../libs/base64.js"></script> -<script runat="server" type="text/javascript" src="../libs/sprintf.js"></script> -<script runat="server" type="text/javascript" src="../jspdf.js"></script> -<script runat="server" autoload="true"> - -var doc = new jsPDF(); -doc.text(20, 20, 'Hello world!'); -doc.text(20, 30, 'This is a server-side Jaxer example.'); -content = doc.output(); - -Jaxer.response.addHeader('Content-Disposition', 'attachment; filename=example.pdf'); -Jaxer.response.addHeader('Content-Type', 'application/pdf'); -Jaxer.response.setContents(content); - -</script> diff --git a/pdf-as-web/src/main/webapp/assets/js/jspdf/jspdf.js b/pdf-as-web/src/main/webapp/assets/js/jspdf/jspdf.js deleted file mode 100644 index e4d2d6fc..00000000 --- a/pdf-as-web/src/main/webapp/assets/js/jspdf/jspdf.js +++ /dev/null @@ -1,304 +0,0 @@ - -/** - * jsPDF - * (c) 2009 James Hall - *  - * Some parts based on FPDF. - */ - -var jsPDF = function(){ -	 -	// Private properties -	var version = '20090504'; -	var buffer = ''; -	 -	var pdfVersion = '1.3'; // PDF Version -	var defaultPageFormat = 'a4'; -	var pageFormats = { // Size in mm of various paper formats -		'a3': [841.89, 1190.55], -		'a4': [595.28, 841.89], -		'a5': [420.94, 595.28], -		'letter': [612, 792], -		'legal': [612, 1008] -	}; -	var textColor = '0 g'; -	var page = 0; -	var objectNumber = 2; // 'n' Current object number -	var state = 0; // Current document state -	var pages = new Array(); -	var offsets = new Array(); // List of offsets -	var lineWidth = 0.200025; // 2mm -	var pageHeight; -	var k; // Scale factor -	var unit = 'mm'; // Default to mm for units -	var fontNumber; // TODO: This is temp, replace with real font handling -	var documentProperties = {}; -	var fontSize = 16; // Default font size -	var pageFontSize = 16; - -	// Initilisation  -	if (unit == 'pt') { -		k = 1; -	} else if(unit == 'mm') { -		k = 72/25.4; -	} else if(unit == 'cm') { -		k = 72/2.54; -	} else if(unit == 'in') { -		k = 72; -	} -	 -	// Private functions -	var newObject = function() { -		//Begin a new object -		objectNumber ++; -		offsets[objectNumber] = buffer.length; -		out(objectNumber + ' 0 obj');		 -	} -	 -	 -	var putHeader = function() { -		out('%PDF-' + pdfVersion); -	} -	 -	var putPages = function() { -		 -		// TODO: Fix, hardcoded to a4 portrait -		var wPt = pageWidth * k; -		var hPt = pageHeight * k; - -		for(n=1; n <= page; n++) { -			newObject(); -			out('<</Type /Page'); -			out('/Parent 1 0 R');	 -			out('/Resources 2 0 R'); -			out('/Contents ' + (objectNumber + 1) + ' 0 R>>'); -			out('endobj'); -			 -			//Page content -			p = pages[n]; -			newObject(); -			out('<</Length ' + p.length  + '>>'); -			putStream(p); -			out('endobj');					 -		} -		offsets[1] = buffer.length; -		out('1 0 obj'); -		out('<</Type /Pages'); -		var kids='/Kids ['; -		for (i = 0; i < page; i++) { -			kids += (3 + 2 * i) + ' 0 R '; -		} -		out(kids + ']'); -		out('/Count ' + page); -		out(sprintf('/MediaBox [0 0 %.2f %.2f]', wPt, hPt)); -		out('>>'); -		out('endobj');		 -	} -	 -	var putStream = function(str) { -		out('stream'); -		out(str); -		out('endstream'); -	} -	 -	var putResources = function() { -		putFonts(); -		putImages(); -		 -		//Resource dictionary -		offsets[2] = buffer.length; -		out('2 0 obj'); -		out('<<'); -		putResourceDictionary(); -		out('>>'); -		out('endobj'); -	}	 -	 -	var putFonts = function() { -		// TODO: Only supports core font hardcoded to Helvetica -		newObject(); -		fontNumber = objectNumber; -		name = 'Helvetica'; -		out('<</Type /Font'); -		out('/BaseFont /' + name); -		out('/Subtype /Type1'); -		out('/Encoding /WinAnsiEncoding'); -		out('>>'); -		out('endobj'); -	} -	 -	var putImages = function() { -		// TODO -	} -	 -	var putResourceDictionary = function() { -		out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); -		out('/Font <<'); -		// Do this for each font, the '1' bit is the index of the font -        // fontNumber is currently the object number related to 'putFonts' -		out('/F1 ' + fontNumber + ' 0 R'); -		out('>>'); -		out('/XObject <<'); -		putXobjectDict(); -		out('>>'); -	} -	 -	var putXobjectDict = function() { -		// TODO -		// Loop through images -	} -	 -	 -	var putInfo = function() { -		out('/Producer (jsPDF ' + version + ')'); -		if(documentProperties.title != undefined) { -			out('/Title (' + pdfEscape(documentProperties.title) + ')'); -		} -		if(documentProperties.subject != undefined) { -			out('/Subject (' + pdfEscape(documentProperties.subject) + ')'); -		} -		if(documentProperties.author != undefined) { -			out('/Author (' + pdfEscape(documentProperties.author) + ')'); -		} -		if(documentProperties.keywords != undefined) { -			out('/Keywords (' + pdfEscape(documentProperties.keywords) + ')'); -		} -		if(documentProperties.creator != undefined) { -			out('/Creator (' + pdfEscape(documentProperties.creator) + ')'); -		}		 -		var created = new Date(); -		var year = created.getFullYear(); -		var month = (created.getMonth() + 1); -		var day = created.getDate(); -		var hour = created.getHours(); -		var minute = created.getMinutes(); -		var second = created.getSeconds(); -		out('/CreationDate (D:' + sprintf('%02d%02d%02d%02d%02d%02d', year, month, day, hour, minute, second) + ')'); -	} -	 -	var putCatalog = function () { -		out('/Type /Catalog'); -		out('/Pages 1 0 R'); -		// TODO: Add zoom and layout modes -		out('/OpenAction [3 0 R /FitH null]'); -		out('/PageLayout /OneColumn'); -	}	 -	 -	function putTrailer() { -		out('/Size ' + (objectNumber + 1)); -		out('/Root ' + objectNumber + ' 0 R'); -		out('/Info ' + (objectNumber - 1) + ' 0 R'); -	}	 -	 -	var endDocument = function() { -		state = 1; -		putHeader(); -		putPages(); -		 -		putResources(); -		//Info -		newObject(); -		out('<<'); -		putInfo(); -		out('>>'); -		out('endobj'); -		 -		//Catalog -		newObject(); -		out('<<'); -		putCatalog(); -		out('>>'); -		out('endobj'); -		 -		//Cross-ref -		var o = buffer.length; -		out('xref'); -		out('0 ' + (objectNumber + 1)); -		out('0000000000 65535 f '); -		for (var i=1; i <= objectNumber; i++) { -			out(sprintf('%010d 00000 n ', offsets[i])); -		} -		//Trailer -		out('trailer'); -		out('<<'); -		putTrailer(); -		out('>>'); -		out('startxref'); -		out(o); -		out('%%EOF'); -		state = 3;		 -	} -	 -	var beginPage = function() { -		page ++; -		// Do dimension stuff -		state = 2; -		pages[page] = ''; -		 -		// TODO: Hardcoded at A4 and portrait -		pageHeight = pageFormats['a4'][1] / k; -		pageWidth = pageFormats['a4'][0] / k; -	} -	 -	var out = function(string) { -		if(state == 2) { -			pages[page] += string + '\n'; -		} else { -			buffer += string + '\n'; -		} -	} -	 -	var _addPage = function() { -		beginPage(); -		// Set line width -		out(sprintf('%.2f w', (lineWidth * k))); -		 -		// Set font - TODO -		// 16 is the font size -		pageFontSize = fontSize; -		out('BT /F1 ' + parseInt(fontSize) + '.00 Tf ET'); 		 -	} -	 -	// Add the first page automatically -	_addPage();	 - -	// Escape text -	var pdfEscape = function(text) { -		return text.replace(/\\/g, '\\\\').replace(/\(/g, '\\(').replace(/\)/g, '\\)'); -	} -	 -	return { -		addPage: function() { -			_addPage(); -		}, -		text: function(x, y, text) { -			// need page height -			if(pageFontSize != fontSize) { -				out('BT /F1 ' + parseInt(fontSize) + '.00 Tf ET'); -				pageFontSize = fontSize; -			} -			var str = sprintf('BT %.2f %.2f Td (%s) Tj ET', x * k, (pageHeight - y) * k, pdfEscape(text)); -			out(str); -		}, -		setProperties: function(properties) { -			documentProperties = properties; -		}, -		addImage: function(imageData, format, x, y, w, h) { -		 -		}, -		output: function(type, options) { -			endDocument(); -			if(type == undefined) { -				return buffer; -			} -			if(type == 'datauri') { -				document.location.href = 'data:application/pdf;base64,' + Base64.encode(buffer); -			} -			// @TODO: Add different output options -		}, -		setFontSize: function(size) { -			fontSize = size; -		} -	} - -};
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/base64.js b/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/base64.js deleted file mode 100644 index 7d9536a4..00000000 --- a/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/base64.js +++ /dev/null @@ -1,143 +0,0 @@ - -/** -* -*  Base64 encode / decode -*  http://www.webtoolkit.info/ -* -**/ - -var Base64 = { - -	// private property -	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", - -	// public method for encoding -	encode : function (input) { -		var output = ""; -		var chr1, chr2, chr3, enc1, enc2, enc3, enc4; -		var i = 0; - -		input = Base64._utf8_encode(input); - -		while (i < input.length) { - -			chr1 = input.charCodeAt(i++); -			chr2 = input.charCodeAt(i++); -			chr3 = input.charCodeAt(i++); - -			enc1 = chr1 >> 2; -			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); -			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); -			enc4 = chr3 & 63; - -			if (isNaN(chr2)) { -				enc3 = enc4 = 64; -			} else if (isNaN(chr3)) { -				enc4 = 64; -			} - -			output = output + -			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + -			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); - -		} - -		return output; -	}, - -	// public method for decoding -	decode : function (input) { -		var output = ""; -		var chr1, chr2, chr3; -		var enc1, enc2, enc3, enc4; -		var i = 0; - -		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - -		while (i < input.length) { - -			enc1 = this._keyStr.indexOf(input.charAt(i++)); -			enc2 = this._keyStr.indexOf(input.charAt(i++)); -			enc3 = this._keyStr.indexOf(input.charAt(i++)); -			enc4 = this._keyStr.indexOf(input.charAt(i++)); - -			chr1 = (enc1 << 2) | (enc2 >> 4); -			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); -			chr3 = ((enc3 & 3) << 6) | enc4; - -			output = output + String.fromCharCode(chr1); - -			if (enc3 != 64) { -				output = output + String.fromCharCode(chr2); -			} -			if (enc4 != 64) { -				output = output + String.fromCharCode(chr3); -			} - -		} - -		output = Base64._utf8_decode(output); - -		return output; - -	}, - -	// private method for UTF-8 encoding -	_utf8_encode : function (string) { -		string = string.replace(/\r\n/g,"\n"); -		var utftext = ""; - -		for (var n = 0; n < string.length; n++) { - -			var c = string.charCodeAt(n); - -			if (c < 128) { -				utftext += String.fromCharCode(c); -			} -			else if((c > 127) && (c < 2048)) { -				utftext += String.fromCharCode((c >> 6) | 192); -				utftext += String.fromCharCode((c & 63) | 128); -			} -			else { -				utftext += String.fromCharCode((c >> 12) | 224); -				utftext += String.fromCharCode(((c >> 6) & 63) | 128); -				utftext += String.fromCharCode((c & 63) | 128); -			} - -		} - -		return utftext; -	}, - -	// private method for UTF-8 decoding -	_utf8_decode : function (utftext) { -		var string = ""; -		var i = 0; -		var c = c1 = c2 = 0; - -		while ( i < utftext.length ) { - -			c = utftext.charCodeAt(i); - -			if (c < 128) { -				string += String.fromCharCode(c); -				i++; -			} -			else if((c > 191) && (c < 224)) { -				c2 = utftext.charCodeAt(i+1); -				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); -				i += 2; -			} -			else { -				c2 = utftext.charCodeAt(i+1); -				c3 = utftext.charCodeAt(i+2); -				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); -				i += 3; -			} - -		} - -		return string; -	} - -} diff --git a/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/sprintf.js b/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/sprintf.js deleted file mode 100644 index 1af7bdf6..00000000 --- a/pdf-as-web/src/main/webapp/assets/js/jspdf/libs/sprintf.js +++ /dev/null @@ -1,152 +0,0 @@ - - -function sprintf( ) { -    // Return a formatted string   -    //  -    // version: 903.3016 -    // discuss at: http://phpjs.org/functions/sprintf -    // +   original by: Ash Searle (http://hexmen.com/blog/) -    // + namespaced by: Michael White (http://getsprink.com) -    // +    tweaked by: Jack -    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) -    // +      input by: Paulo Ricardo F. Santos -    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) -    // +      input by: Brett Zamir (http://brettz9.blogspot.com) -    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) -    // *     example 1: sprintf("%01.2f", 123.1); -    // *     returns 1: 123.10 -    // *     example 2: sprintf("[%10s]", 'monkey'); -    // *     returns 2: '[    monkey]' -    // *     example 3: sprintf("[%'#10s]", 'monkey'); -    // *     returns 3: '[####monkey]' -    var regex = /%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g; -    var a = arguments, i = 0, format = a[i++]; - -    // pad() -    var pad = function(str, len, chr, leftJustify) { -        if (!chr) chr = ' '; -        var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr); -        return leftJustify ? str + padding : padding + str; -    }; - -    // justify() -    var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) { -        var diff = minWidth - value.length; -        if (diff > 0) { -            if (leftJustify || !zeroPad) { -                value = pad(value, minWidth, customPadChar, leftJustify); -            } else { -                value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length); -            } -        } -        return value; -    }; - -    // formatBaseX() -    var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) { -        // Note: casts negative numbers to positive ones -        var number = value >>> 0; -        prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || ''; -        value = prefix + pad(number.toString(base), precision || 0, '0', false); -        return justify(value, prefix, leftJustify, minWidth, zeroPad); -    }; - -    // formatString() -    var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) { -        if (precision != null) { -            value = value.slice(0, precision); -        } -        return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar); -    }; - -    // doFormat() -    var doFormat = function(substring, valueIndex, flags, minWidth, _, precision, type) { -        var number; -        var prefix; -        var method; -        var textTransform; -        var value; - -        if (substring == '%%') return '%'; - -        // parse flags -        var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false, customPadChar = ' '; -        var flagsl = flags.length; -        for (var j = 0; flags && j < flagsl; j++) switch (flags.charAt(j)) { -            case ' ': positivePrefix = ' '; break; -            case '+': positivePrefix = '+'; break; -            case '-': leftJustify = true; break; -            case "'": customPadChar = flags.charAt(j+1); break; -            case '0': zeroPad = true; break; -            case '#': prefixBaseX = true; break; -        } - -        // parameters may be null, undefined, empty-string or real valued -        // we want to ignore null, undefined and empty-string values -        if (!minWidth) { -            minWidth = 0; -        } else if (minWidth == '*') { -            minWidth = +a[i++]; -        } else if (minWidth.charAt(0) == '*') { -            minWidth = +a[minWidth.slice(1, -1)]; -        } else { -            minWidth = +minWidth; -        } - -        // Note: undocumented perl feature: -        if (minWidth < 0) { -            minWidth = -minWidth; -            leftJustify = true; -        } - -        if (!isFinite(minWidth)) { -            throw new Error('sprintf: (minimum-)width must be finite'); -        } - -        if (!precision) { -            precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0); -        } else if (precision == '*') { -            precision = +a[i++]; -        } else if (precision.charAt(0) == '*') { -            precision = +a[precision.slice(1, -1)]; -        } else { -            precision = +precision; -        } - -        // grab value using valueIndex if required? -        value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++]; - -        switch (type) { -            case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar); -            case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad); -            case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad); -            case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad); -            case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad); -            case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase(); -            case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad); -            case 'i': -            case 'd': { -                number = parseInt(+value); -                prefix = number < 0 ? '-' : positivePrefix; -                value = prefix + pad(String(Math.abs(number)), precision, '0', false); -                return justify(value, prefix, leftJustify, minWidth, zeroPad); -            } -            case 'e': -            case 'E': -            case 'f': -            case 'F': -            case 'g': -            case 'G': { -                number = +value; -                prefix = number < 0 ? '-' : positivePrefix; -                method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())]; -                textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2]; -                value = prefix + Math.abs(number)[method](precision); -                return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform](); -            } -            default: return substring; -        } -    }; - -    return format.replace(regex, doFormat); -} | 
