Skip to content

Instantly share code, notes, and snippets.

@mikz
Created September 24, 2010 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikz/595298 to your computer and use it in GitHub Desktop.
Save mikz/595298 to your computer and use it in GitHub Desktop.
(function(){
var Format = {
defaults: {
precision: 3,
delimiter: ',',
separator: ' ',
fixed_length: false,
fixed_delimiter: " ",
precision_unit: null,
currency: "Kč"
},
number: function format_number(value, options) {
var number = parseFloat(value);
var opts = $.extend({}, Format.defaults, options);
var base = 10; // # Yeah, we... pretty much assume that the base is ten.
if(opts['precision'] || opts['precision'] == 0) {
var q = Math.pow(base, opts['precision']);
number = number * q;
number = parseFloat(Math.round(number));
number = number / q;
}
if(opts['precision_unit']) {
number = number / opts['precision_unit'];
number = parseFloat(Math.round(number));
number = number * opts['precision_unit'];
}
parts = number.toString().split('.')
parts[0] = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/gi, "$1" + opts['separator']);
if(parts[parts.length-1] == '0') {
if(opts['fixed_length']) {
return parts[0] + opts['fixed_delimiter']*(opts['precision']+opts['delimiter'].length);
} else {
return parts[0];
}
} else {
if(opts['fixed_length']) {
if(parts.length == 1 && opts['prefix']) {
var number = parts.join();
while(number.length < opts['precision']) {
number = opts['prefix'] + '' + number;
}
return number;
} else {
return parts.join(opts['delimiter']) + opts['fixed_delimiter']*(opts['precision'] - parts[parts.length-1].length); //FIXME: javascript cant do number * string
}
} else {
return parts.join(opts['delimiter']);
}
}
},
currency: function(value, options) {
var opts = $.extend({}, Format.defaults, options);
return [Format.number(value, options), opts.currency].join(opts.separator);
},
time: function(time, hours, minutes, seconds) {
hours = (typeof hours == 'undefined') ? true : hours;
minutes = (typeof minutes == 'undefined') ? true : minutes;
seconds = (typeof seconds == 'undefined') ? false : seconds;
var parts = [];
if(hours)
parts.push(Math.floor(time/3600));
if(minutes)
parts.push(Math.floor((time%3600)/60));
if(seconds)
parts.push(Math.floor(time%60));
return $(parts).map(function(){ return window.Format.number(this, {prefix: '0', precision: 2, fixed_length: true});}).get().join(":");
}
}
window.Format = Format;
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment