Tip: Click lines to highlight, hold ctrl/cmd to multi-select

jQuery.requires (18-Apr @ 10:50)

Useful function to include within plugins to ensure the right version of jQuery is being used.

Order based on: pre, a, b, b2, rc1...etc.

remy

Syntax Highlighted Code

  1. jQuery.extend({
  2.     compareVersions : function (have, require) {
  3.         if (typeof require == 'undefined') {
  4.             require = have;
  5.             have = jQuery.fn.jquery;
  6.         }
  7.        
  8.         function parts(val) {
  9.             // Expecting following format 1.2.3rc1, 1.2.4a, etc.
  10.             return val.replace(/[a-z]+/i, function(m) {
  11.                 return '.' + (m == 'pre' ? '0pre' : m);
  12.             }).split('.');
  13.         }
  14.        
  15.         if (require == have) return 0;
  16.        
  17.         var latest = parts(have),
  18.             required = parts(require),
  19.             i = 0;
  20.  
  21.         while (latest[i] && required[i]) {
  22.             if (latest[i] < required[i]) {
  23.                 return -1;
  24.             } else if (latest[i] > required[i]) {
  25.                 return 1;
  26.             }
  27.             i++;
  28.         }
  29.  
  30.         return (latest[i]
  31.                 ? (/^d/.test(latest[i]) ? 1 : -1)
  32.                 : (/^d/.test(required[i]) ? -1 : 1));
  33.     },
  34.     hasVersion : function() {
  35.         var ok = this.compareVersions.apply(this, arguments);
  36.         return (ok === 0 || ok === 1);
  37.     }
  38. });
  39.  

Plain Code

jQuery.extend({
    compareVersions : function (have, require) {
        if (typeof require == 'undefined') {
            require = have;
            have = jQuery.fn.jquery;
        }
        
        function parts(val) {
            // Expecting following format 1.2.3rc1, 1.2.4a, etc.
            return val.replace(/[a-z]+/i, function(m) { 
                return '.' + (m == 'pre' ? '0pre' : m);
            }).split('.');
        }
        
        if (require == have) return 0;
        
        var latest = parts(have), 
            required = parts(require), 
            i = 0;

        while (latest[i] && required[i]) {
            if (latest[i] < required[i]) {
                return -1;
            } else if (latest[i] > required[i]) {
                return 1;
            }
            i++;
        }

        return (latest[i]
                ? (/^d/.test(latest[i]) ? 1 : -1)
                : (/^d/.test(required[i]) ? -1 : 1));
    },
    hasVersion : function() { 
        var ok = this.compareVersions.apply(this, arguments);
        return (ok === 0 || ok === 1); 
    }
});

Codedump Run

Permalink: http://codedumper.com/jquery-requires