mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-12-05 05:04:20 +00:00
62 lines
2.3 KiB
JavaScript
62 lines
2.3 KiB
JavaScript
/*! Parser: ignoreArticles - updated 9/15/2014 (v2.17.8) *//*
|
|
* This parser will remove 'The', 'A' and 'An' from the beginning of a book
|
|
* or movie title, so it sorts by the second word or number
|
|
* Demo: http://jsfiddle.net/Mottie/abkNM/5/
|
|
*/
|
|
/*jshint browser: true, jquery:true, unused:false */
|
|
;(function($) {
|
|
'use strict';
|
|
|
|
var ts = $.tablesorter;
|
|
|
|
// basic list from http://en.wikipedia.org/wiki/Article_%28grammar%29
|
|
ts.ignoreArticles = {
|
|
'en' : 'the, a, an',
|
|
'de' : 'der, die, das, des, dem, den, ein, eine, einer, eines, einem, einen',
|
|
'nl' : 'de, het, de, een',
|
|
'es' : 'el, la, lo, los, las, un, una, unos, unas',
|
|
'pt' : 'o, a, os, as, um, uma, uns, umas',
|
|
'fr' : 'le, la, l\'_, les, un, une, des',
|
|
'it' : 'il, lo, la, l\'_, i, gli, le, un\', uno, una, un',
|
|
'hu' : 'a, az, egy'
|
|
};
|
|
|
|
// To add a custom parser, define:
|
|
// $.tablesorter.ignoreArticles['xx'] = 'A, B, C';
|
|
// and then set the language id 'xx' in the headers option
|
|
// ignoreArticles : 'xx'
|
|
|
|
ts.addParser({
|
|
id: 'ignoreArticles',
|
|
is: function() {
|
|
return false;
|
|
},
|
|
format: function(s, table, cell, cellIndex) {
|
|
var art, ignore, lang,
|
|
c = table.config,
|
|
str = s || '';
|
|
if ( !(c.headers && c.headers[cellIndex] && c.headers[cellIndex].ignoreArticlesRegex) ) {
|
|
// initialize - save regex in c.headers[cellIndex].ignoreArticlesRegex
|
|
if (!c.headers) { c.headers = {}; }
|
|
if (!c.headers[cellIndex]) { c.headers[cellIndex] = {}; }
|
|
lang = ts.getData( c.$headers.eq(cellIndex), ts.getColumnData( table, c.headers, cellIndex ), 'ignoreArticles' );
|
|
art = (ts.ignoreArticles[lang] || 'the, a, an' ) + '';
|
|
c.headers[cellIndex].ignoreArticlesRegex = new RegExp('^(' + $.trim( art.split(/\s*\,\s*/).join('\\s|') + '\\s' ).replace('_\\s', '') + ')', 'i');
|
|
// exception regex stored in c.headers[cellIndex].ignoreArticlesRegex2
|
|
ignore = ts.getData( c.$headers.eq(cellIndex), ts.getColumnData( table, c.headers, cellIndex ), 'ignoreArticlesExcept' );
|
|
c.headers[cellIndex].ignoreArticlesRegex2 = ignore !== '' ? new RegExp('^(' + ignore.replace(/\s/g, '\\s') + ')', 'i') : '';
|
|
}
|
|
art = c.headers[cellIndex].ignoreArticlesRegex;
|
|
if (art.test(str)) {
|
|
ignore = c.headers[cellIndex].ignoreArticlesRegex2;
|
|
if ( !(ignore && ignore.test(str)) ) {
|
|
return str.replace(art, '');
|
|
}
|
|
}
|
|
return str;
|
|
},
|
|
type: 'text'
|
|
});
|
|
|
|
})(jQuery);
|