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
>
>
>
> };

Reply via email to