mambax7/alumni-26x

View on GitHub
media/jquery/tablesorter-master/js/parsers/parser-date-extract.js

Summary

Maintainability
D
1 day
Test Coverage
/*! Parser: Extract out date - updated 10/26/2014 (v2.18.0) */
/*jshint jquery:true */
;(function($){
    'use strict';

    var regex = {
        usLong     : /[A-Z]{3,10}\.?\s+\d{1,2},?\s+(?:\d{4})(?:\s+\d{1,2}:\d{2}(?::\d{2})?(?:\s+[AP]M)?)?/i,
        mdy        : /(\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4}(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?)/i,

        dmy        : /(\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4}(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?)/i,
        dmyreplace : /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,

        ymd        : /(\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2}(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?)/i,
        ymdreplace : /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/
    };

    /*! extract US Long Date *//* (ignore any other text)
    * e.g. 'Sue's Birthday! Jun 26, 2004 7:22 AM (8# 2oz)'
    * demo: http://jsfiddle.net/Mottie/abkNM/4165/ */
    $.tablesorter.addParser({
        id: 'extractUSLongDate',
        is: function () {
            // don't auto detect this parser
            return false;
        },
        format: function (s) {
            var date,
                str = s ? s.match(regex.usLong) : s;
            if (str) {
                date = new Date( str[0] );
                return date instanceof Date && isFinite(date) ? date.getTime() : s;
            }
            return s;
        },
        type: 'numeric'
    });

    /*! extract MMDDYYYY *//* (ignore any other text)
    * demo: http://jsfiddle.net/Mottie/abkNM/4166/ */
    $.tablesorter.addParser({
        id: 'extractMMDDYYYY',
        is: function () {
            // don't auto detect this parser
            return false;
        },
        format: function (s) {
            var date,
                str = s ? s.replace(/\s+/g, ' ').replace(/[\-.,]/g, '/').match(regex.mdy) : s;
            if (str) {
                date = new Date( str[0] );
                return date instanceof Date && isFinite(date) ? date.getTime() : s;
            }
            return s;
        },
        type: 'numeric'
    });

    /*! extract DDMMYYYY *//* (ignore any other text)
    * demo: http://jsfiddle.net/Mottie/abkNM/4167/ */
    $.tablesorter.addParser({
        id: 'extractDDMMYYYY',
        is: function () {
            // don't auto detect this parser
            return false;
        },
        format: function (s) {
            var date,
                str = s ? s.replace(/\s+/g, ' ').replace(/[\-.,]/g, '/').match(regex.dmy) : s;
            if (str) {
                date = new Date( str[0].replace(regex.dmyreplace, '$2/$1/$3') );
                return date instanceof Date && isFinite(date) ? date.getTime() : s;
            }
            return s;
        },
        type: 'numeric'
    });

    /*! extract YYYYMMDD *//* (ignore any other text)
    * demo: http://jsfiddle.net/Mottie/abkNM/4168/ */
    $.tablesorter.addParser({
        id: 'extractYYYYMMDD',
        is: function () {
            // don't auto detect this parser
            return false;
        },
        format: function (s) {
            var date,
                str = s ? s.replace(/\s+/g, ' ').replace(/[\-.,]/g, '/').match(regex.ymd) : s;
            if (str) {
                date = new Date( str[0].replace(regex.ymdreplace, '$2/$3/$1') );
                return date instanceof Date && isFinite(date) ? date.getTime() : s;
            }
            return s;
        },
        type: 'numeric'
    });

})(jQuery);