$.tablesorter.addParser({
    // set a unique id 
    id    : 'title',
    is    : function (s) {
        // return false so this parser is not auto detected 
        return false;
    },
    format: function (s) {
        // format your data for normalization
        return s.match(/title="(.*?)"/)[1].toLowerCase();
    },
    // set type, either numeric or text 
    type  : 'text'
});

$.tablesorter.addParser({
    // set a unique id 
    id    : 'date',
    is    : function (s) {
        // return false so this parser is not auto detected 
        return false;
    },
    format: function (s) {
        // format your data for normalization
        var match = s.match(/data-date="(.*?)"/)[1];

        if (match === '') {
            return Date.create().addYears(100).format(Date.ISO8601_DATETIME);
        }

        return match;
    },
    // set type, either numeric or text 
    type  : 'text'
});

$.tablesorter.addParser({
    // set a unique id 
    id    : 'innerHtml',
    is    : function (s) {
        // return false so this parser is not auto detected 
        return false;
    },
    format: function (s) {
        // format your data for normalization
        return $(s).get(0).innerHTML;
    },
    // set type, either numeric or text 
    type  : 'text'
});