HtmlTable.Parser

2 views
Skip to first unread message

mmjaeger

unread,
Nov 8, 2009, 1:46:38 AM11/8/09
to MooTools Users
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
};

mmjaeger

unread,
Nov 8, 2009, 10:19:17 AM11/8/09
to MooTools Users
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
};

Reply all
Reply to author
Forward
0 new messages