Dirk sent me an email with a solution that's a lot leaner:
// HtmlTable.Parser for file sizes
HtmlTable.Parsers.files = {
match: /^\d+[^\d.,]*$/,
convert: function() {
var value = this.get('text').toLowerCase();
value = value.match(/([\d.,]+)\s*([kmgt])b/) || [0,0,''];
var z = {m:3, g:6, t:9}[ value[2] ] || 0;
return value[1].replace(/,/g,'').toFloat() * Math.pow(10, z);
},
number: true
};
On Nov 7, 10:46 pm, mmjaeger <[email protected]> wrote:
> I needed to be able to sort on a column with file sizes:
> the following seems to work but I'm sure one of you experts will come
> up with something more efficient:
>
> HtmlTable.Parsers.bytes = {
>
> match: /^\d+[^\d.,]*$/,
> convert: function() {
> var str = this.get('text');
> var number = str.toFloat();
> var type = str.replace(/(0-9.|[0-9.])/g, "").trim
> ().toUpperCase();
> switch(type) {
> case 'B':
> return number;
> break;
> case 'KB':
> return number*1024;
> break;
> case 'MB':
> return number*[Math.pow(1024,2)];
> break;
> case 'GB':
> return number*[Math.pow(1024,3)];
> break;
> default:
> return number;
> }
> },
> number: true
>
>
>
> };