Custom Parser for JQuery Tablesorter
- by Tim
I'm using the jQuery Tablesorter and have an issue with the order in which parsers are applied against table columns.  I'm adding a custom parser to handle currency of the form $-3.33.
$.tablesorter.addParser({
    id: "fancyCurrency",
    is: function(s) {
      return /^\$[\-]?[0-9,\.]*$/.test(s);
    },
    format: function(s) {
      s = s.replace(/[$,]/g,'');
      return $.tablesorter.formatFloat( s );
    },
    type: "numeric"
});
The problem seems to be that the built-in currency parser takes precedence over my custom parser.  I could put the parser in the tablesorter code itself (before the currency parser) and it works properly, but this isn't very maintainable.  I can't specify the sorter manually using something like:
headers: {
    3: { sorter: "fancyNumber" },
    11: { sorter: "fancyCurrency" }
}
since the table columns are generated dynamically from user inputs.  I guess one option would be to specify the sorter to use as a css class and use some JQuery to explicitly specify a sorter like this question suggests, but I'd prefer to stick with dynamic detection if possible.