/***
MochiKit.Format 1.4
See <http://mochikit.com/ > for documentation, downloads, license, etc.
(c) 2005 Bob Ippolito. All rights Reserved.
***/
if (
typeof (dojo) !=
'undefined' ) {
dojo.provide(
'MochiKit.Format' );
}
if (
typeof (MochiKit) ==
'undefined' ) {
MochiKit = {};
}
if (
typeof (MochiKit.Format) ==
'undefined' ) {
MochiKit.Format = {};
}
MochiKit.Format.NAME =
"MochiKit.Format" ;
MochiKit.Format.VERSION =
"1.4" ;
MochiKit.Format.__repr__ =
function () {
return "[" +
this .NAME +
" " +
this .VERSION +
"]" ;
};
MochiKit.Format.toString =
function () {
return this .__repr__();
};
MochiKit.Format._numberFormatter =
function (placeholder, header, footer, locale, isPer
cent, precision, leadingZeros, separatorAt, trailingZeros) {
return function (num) {
num = parseFloat(num);
if (typeof (num) == "undefined" || num === null || isNaN(num)) {
return placeholder;
}
var curheader = header;
var curfooter = footer;
if (num < 0) {
num = -num;
} else {
curheader = curheader.replace(/-/, "" );
}
var me = arguments.callee;
var fmt = MochiKit.Format.formatLocale(locale);
if (isPercent) {
num = num * 100.0;
curfooter = fmt.percent + curfooter;
}
num = MochiKit.Format.roundToFixed(num, precision);
var parts = num.split(/\./);
var whole = parts[0];
var frac = (parts.length == 1) ? "" : parts[1];
var res = "" ;
while (whole.length < leadingZeros) {
whole = "0" + whole;
}
if (separatorAt) {
while (whole.length > separatorAt) {
var i = whole.length - separatorAt;
//res = res + fmt.separator + whole.substring(i, whole.length);
res = fmt.separator + whole.substring(i, whole.length) + res;
whole = whole.substring(0, i);
}
}
res = whole + res;
if (precision > 0) {
while (frac.length < trailingZeros) {
frac = frac + "0" ;
}
res = res + fmt.decimal + frac;
}
return curheader + res + curfooter;
};
};
/** @id MochiKit.Format.numberFormatter */
MochiKit.Format.numberFormatter = function (pattern, placeholder/* = "" */, locale/* = "default" */) {
// http://java.sun.com/docs/books/tutorial/i18n/format/numberpattern.html
// | 0 | leading or trailing zeros
// | # | just the number
// | , | separator
// | . | decimal separator
// | % | Multiply by 100 and format as percent
if (typeof (placeholder) == "undefined" ) {
placeholder = "" ;
}
var match = pattern.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);
if (!match) {
throw TypeError("Invalid pattern" );
}
var header = pattern.substr(0, match.index);
var footer = pattern.substr(match.index + match[0].length);
if (header.search(/-/) == -1) {
header = header + "-" ;
}
var whole = match[1];
var frac = (typeof (match[2]) == "string" && match[2] != "" ) ? match[2] : "" ;
var isPercent = (typeof (match[3]) == "string" && match[3] != "" );
var tmp = whole.split(/,/);
var separatorAt;
if (typeof (locale) == "undefined" ) {
locale = "default" ;
}
if (tmp.length == 1) {
separatorAt = null ;
} else {
separatorAt = tmp[1].length;
}
var leadingZeros = whole.length - whole.replace(/0/g, "" ).length;
var trailingZeros = frac.length - frac.replace(/0/g, "" ).length;
var precision = frac.length;
var rval = MochiKit.Format._numberFormatter(
placeholder, header, footer, locale, isPercent, precision,
leadingZeros, separatorAt, trailingZeros
);
var m = MochiKit.Base;
if (m) {
var fn = arguments.callee;
var args = m.concat(arguments);
rval.repr = function () {
return [
self.NAME,
"(" ,
map(m.repr, args).join(", " ),
")"
].join("" );
};
}
return rval;
};
/** @id MochiKit.Format.formatLocale */
MochiKit.Format.formatLocale = function (locale) {
if (typeof (locale) == "undefined" || locale === null ) {
locale = "default" ;
}
if (typeof (locale) == "string" ) {
var rval = MochiKit.Format.LOCALE[locale];
if (typeof (rval) == "string" ) {
rval = arguments.callee(rval);
MochiKit.Format.LOCALE[locale] = rval;
}
return rval;
} else {
return locale;
}
};
/** @id MochiKit.Format.twoDigitAverage */
MochiKit.Format.twoDigitAverage = function (numerator, denominator) {
if (denominator) {
var res = numerator / denominator;
if (!isNaN(res)) {
return MochiKit.Format.twoDigitFloat(numerator / denominator);
}
}
return "0" ;
};
/** @id MochiKit.Format.twoDigitFloat */
MochiKit.Format.twoDigitFloat = function (someFloat) {
var sign = (someFloat < 0 ? '-' : '' );
var s = Math.floor(Math.abs(someFloat) * 100).toString();
if (s == '0' ) {
return s;
}
if (s.length < 3) {
while (s.charAt(s.length - 1) == '0' ) {
s = s.substring(0, s.length - 1);
}
return sign + '0.' + s;
}
var head = sign + s.substring(0, s.length - 2);
var tail = s.substring(s.length - 2, s.length);
if (tail == '00' ) {
return head;
} else if (tail.charAt(1) == '0' ) {
return head + '.' + tail.charAt(0);
} else {
return head + '.' + tail;
}
};
/** @id MochiKit.Format.lstrip */
MochiKit.Format.lstrip = function (str, /* optional */chars) {
str = str + "" ;
if (typeof (str) != "string" ) {
return null ;
}
if (!chars) {
return str.replace(/^\s+/, "" );
} else {
return str.replace(new RegExp("^[" + chars + "]+" ), "" );
}
};
/** @id MochiKit.Format.rstrip */
MochiKit.Format.rstrip = function (str, /* optional */chars) {
str = str + "" ;
if (typeof (str) != "string" ) {
return null ;
}
if (!chars) {
return str.replace(/\s+$/, "" );
} else {
return str.replace(new RegExp("[" + chars + "]+$" ), "" );
}
};
/** @id MochiKit.Format.strip */
MochiKit.Format.strip = function (str, /* optional */chars) {
var self = MochiKit.Format;
return self.rstrip(self.lstrip(str, chars), chars);
};
/** @id MochiKit.Format.truncToFixed */
MochiKit.Format.truncToFixed = function (aNumber, precision) {
aNumber = Math.floor(aNumber * Math.pow(10, precision));
var res = (aNumber * Math.pow(10, -precision)).toFixed(precision);
if (res.charAt(0) == "." ) {
res = "0" + res;
}
return res;
};
/** @id MochiKit.Format.roundToFixed */
MochiKit.Format.roundToFixed = function (aNumber, precision) {
return MochiKit.Format.truncToFixed(
aNumber + 0.5 * Math.pow(10, -precision),
precision
);
};
/** @id MochiKit.Format.percentFormat */
MochiKit.Format.percentFormat = function (someFloat) {
return MochiKit.Format.twoDigitFloat(100 * someFloat) + '%' ;
};
MochiKit.Format.EXPORT = [
"truncToFixed" ,
"roundToFixed" ,
"numberFormatter" ,
"formatLocale" ,
"twoDigitAverage" ,
"twoDigitFloat" ,
"percentFormat" ,
"lstrip" ,
"rstrip" ,
"strip"
];
MochiKit.Format.LOCALE = {
en_US: {separator: "," , decimal: "." , percent: "%" },
de_DE: {separator: "." , decimal: "," , percent: "%" },
fr_FR: {separator: " " , decimal: "," , percent: "%" },
"default" : "en_US"
};
MochiKit.Format.EXPORT_OK = [];
MochiKit.Format.EXPORT_TAGS = {
':all' : MochiKit.Format.EXPORT,
':common' : MochiKit.Format.EXPORT
};
MochiKit.Format.__new__ = function () {
// MochiKit.Base.nameFunctions(this);
var base = this .NAME + "." ;
var k, v, o;
for (k in this .LOCALE) {
o = this .LOCALE[k];
if (typeof (o) == "object" ) {
o.repr = function () { return this .NAME; };
o.NAME = base + "LOCALE." + k;
}
}
for (k in this ) {
o = this [k];
if (typeof (o) == 'function' && typeof (o.NAME) == 'undefined' ) {
try {
o.NAME = base + k;
} catch (e) {
// pass
}
}
}
};
MochiKit.Format.__new__();
if (typeof (MochiKit.Base) != "undefined" ) {
MochiKit.Base._exportSymbols(this , MochiKit.Format);
} else {
(function (globals, module) {
if ((typeof (JSAN) == 'undefined' && typeof (dojo) == 'undefined' )
|| (MochiKit.__export__ === false )) {
var all = module.EXPORT_TAGS[":all" ];
for (var i = 0; i < all.length; i++) {
globals[all[i]] = module[all[i]];
}
}
})(this , MochiKit.Format);
}
Messung V0.5 C=99 H=96 G=97
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland