12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.string.sprintf"]){dojo._hasResource["dojox.string.sprintf"]=true;dojo.provide("dojox.string.sprintf");dojo.require("dojox.string.tokenize");dojox.string.sprintf=function(_1,_2){for(var _3=[],i=1;i<arguments.length;i++){_3.push(arguments[i]);}var _4=new dojox.string.sprintf.Formatter(_1);return _4.format.apply(_4,_3);};dojox.string.sprintf.Formatter=function(_5){var _6=[];this._mapped=false;this._format=_5;this._tokens=dojox.string.tokenize(_5,this._re,this._parseDelim,this);};dojo.extend(dojox.string.sprintf.Formatter,{_re:/\%(?:\(([\w_]+)\)|([1-9]\d*)\$)?([0 +\-\#]*)(\*|\d+)?(\.)?(\*|\d+)?[hlL]?([\%scdeEfFgGiouxX])/g,_parseDelim:function(_7,_8,_9,_a,_b,_c,_d){if(_7){this._mapped=true;}return {mapping:_7,intmapping:_8,flags:_9,_minWidth:_a,period:_b,_precision:_c,specifier:_d};},_specifiers:{b:{base:2,isInt:true},o:{base:8,isInt:true},x:{base:16,isInt:true},X:{extend:["x"],toUpper:true},d:{base:10,isInt:true},i:{extend:["d"]},u:{extend:["d"],isUnsigned:true},c:{setArg:function(_e){if(!isNaN(_e.arg)){var _f=parseInt(_e.arg);if(_f<0||_f>127){throw new Error("invalid character code passed to %c in sprintf");}_e.arg=isNaN(_f)?""+_f:String.fromCharCode(_f);}}},s:{setMaxWidth:function(_10){_10.maxWidth=(_10.period==".")?_10.precision:-1;}},e:{isDouble:true,doubleNotation:"e"},E:{extend:["e"],toUpper:true},f:{isDouble:true,doubleNotation:"f"},F:{extend:["f"]},g:{isDouble:true,doubleNotation:"g"},G:{extend:["g"],toUpper:true}},format:function(_11){if(this._mapped&&typeof _11!="object"){throw new Error("format requires a mapping");}var str="";var _12=0;for(var i=0,_13;i<this._tokens.length;i++){_13=this._tokens[i];if(typeof _13=="string"){str+=_13;}else{if(this._mapped){if(typeof _11[_13.mapping]=="undefined"){throw new Error("missing key "+_13.mapping);}_13.arg=_11[_13.mapping];}else{if(_13.intmapping){var _12=parseInt(_13.intmapping)-1;}if(_12>=arguments.length){throw new Error("got "+arguments.length+" printf arguments, insufficient for '"+this._format+"'");}_13.arg=arguments[_12++];}if(!_13.compiled){_13.compiled=true;_13.sign="";_13.zeroPad=false;_13.rightJustify=false;_13.alternative=false;var _14={};for(var fi=_13.flags.length;fi--;){var _15=_13.flags.charAt(fi);_14[_15]=true;switch(_15){case " ":_13.sign=" ";break;case "+":_13.sign="+";break;case "0":_13.zeroPad=(_14["-"])?false:true;break;case "-":_13.rightJustify=true;_13.zeroPad=false;break;case "#":_13.alternative=true;break;default:throw Error("bad formatting flag '"+_13.flags.charAt(fi)+"'");}}_13.minWidth=(_13._minWidth)?parseInt(_13._minWidth):0;_13.maxWidth=-1;_13.toUpper=false;_13.isUnsigned=false;_13.isInt=false;_13.isDouble=false;_13.precision=1;if(_13.period=="."){if(_13._precision){_13.precision=parseInt(_13._precision);}else{_13.precision=0;}}var _16=this._specifiers[_13.specifier];if(typeof _16=="undefined"){throw new Error("unexpected specifier '"+_13.specifier+"'");}if(_16.extend){dojo.mixin(_16,this._specifiers[_16.extend]);delete _16.extend;}dojo.mixin(_13,_16);}if(typeof _13.setArg=="function"){_13.setArg(_13);}if(typeof _13.setMaxWidth=="function"){_13.setMaxWidth(_13);}if(_13._minWidth=="*"){if(this._mapped){throw new Error("* width not supported in mapped formats");}_13.minWidth=parseInt(arguments[_12++]);if(isNaN(_13.minWidth)){throw new Error("the argument for * width at position "+_12+" is not a number in "+this._format);}if(_13.minWidth<0){_13.rightJustify=true;_13.minWidth=-_13.minWidth;}}if(_13._precision=="*"&&_13.period=="."){if(this._mapped){throw new Error("* precision not supported in mapped formats");}_13.precision=parseInt(arguments[_12++]);if(isNaN(_13.precision)){throw Error("the argument for * precision at position "+_12+" is not a number in "+this._format);}if(_13.precision<0){_13.precision=1;_13.period="";}}if(_13.isInt){if(_13.period=="."){_13.zeroPad=false;}this.formatInt(_13);}else{if(_13.isDouble){if(_13.period!="."){_13.precision=6;}this.formatDouble(_13);}}this.fitField(_13);str+=""+_13.arg;}}return str;},_zeros10:"0000000000",_spaces10:" ",formatInt:function(_17){var i=parseInt(_17.arg);if(!isFinite(i)){if(typeof _17.arg!="number"){throw new Error("format argument '"+_17.arg+"' not an integer; parseInt returned "+i);}i=0;}if(i<0&&(_17.isUnsigned||_17.base!=10)){i=4294967295+i+1;}if(i<0){_17.arg=(-i).toString(_17.base);this.zeroPad(_17);_17.arg="-"+_17.arg;}else{_17.arg=i.toString(_17.base);if(!i&&!_17.precision){_17.arg="";}else{this.zeroPad(_17);}if(_17.sign){_17.arg=_17.sign+_17.arg;}}if(_17.base==16){if(_17.alternative){_17.arg="0x"+_17.arg;}_17.arg=_17.toUpper?_17.arg.toUpperCase():_17.arg.toLowerCase();}if(_17.base==8){if(_17.alternative&&_17.arg.charAt(0)!="0"){_17.arg="0"+_17.arg;}}},formatDouble:function(_18){var f=parseFloat(_18.arg);if(!isFinite(f)){if(typeof _18.arg!="number"){throw new Error("format argument '"+_18.arg+"' not a float; parseFloat returned "+f);}f=0;}switch(_18.doubleNotation){case "e":_18.arg=f.toExponential(_18.precision);break;case "f":_18.arg=f.toFixed(_18.precision);break;case "g":if(Math.abs(f)<0.0001){_18.arg=f.toExponential(_18.precision>0?_18.precision-1:_18.precision);}else{_18.arg=f.toPrecision(_18.precision);}if(!_18.alternative){_18.arg=_18.arg.replace(/(\..*[^0])0*/,"$1");_18.arg=_18.arg.replace(/\.0*e/,"e").replace(/\.0$/,"");}break;default:throw new Error("unexpected double notation '"+_18.doubleNotation+"'");}_18.arg=_18.arg.replace(/e\+(\d)$/,"e+0$1").replace(/e\-(\d)$/,"e-0$1");if(dojo.isOpera){_18.arg=_18.arg.replace(/^\./,"0.");}if(_18.alternative){_18.arg=_18.arg.replace(/^(\d+)$/,"$1.");_18.arg=_18.arg.replace(/^(\d+)e/,"$1.e");}if(f>=0&&_18.sign){_18.arg=_18.sign+_18.arg;}_18.arg=_18.toUpper?_18.arg.toUpperCase():_18.arg.toLowerCase();},zeroPad:function(_19,_1a){_1a=(arguments.length==2)?_1a:_19.precision;if(typeof _19.arg!="string"){_19.arg=""+_19.arg;}var _1b=_1a-10;while(_19.arg.length<_1b){_19.arg=(_19.rightJustify)?_19.arg+this._zeros10:this._zeros10+_19.arg;}var pad=_1a-_19.arg.length;_19.arg=(_19.rightJustify)?_19.arg+this._zeros10.substring(0,pad):this._zeros10.substring(0,pad)+_19.arg;},fitField:function(_1c){if(_1c.maxWidth>=0&&_1c.arg.length>_1c.maxWidth){return _1c.arg.substring(0,_1c.maxWidth);}if(_1c.zeroPad){this.zeroPad(_1c,_1c.minWidth);return;}this.spacePad(_1c);},spacePad:function(_1d,_1e){_1e=(arguments.length==2)?_1e:_1d.minWidth;if(typeof _1d.arg!="string"){_1d.arg=""+_1d.arg;}var _1f=_1e-10;while(_1d.arg.length<_1f){_1d.arg=(_1d.rightJustify)?_1d.arg+this._spaces10:this._spaces10+_1d.arg;}var pad=_1e-_1d.arg.length;_1d.arg=(_1d.rightJustify)?_1d.arg+this._spaces10.substring(0,pad):this._spaces10.substring(0,pad)+_1d.arg;}});}
|