elaborate underscore initialization so that it works seamlessly on CommonJS, as well as in the browser

This commit is contained in:
Jeremy Ashkenas
2009-10-28 23:53:40 -04:00
parent 4f783846de
commit a82a01ebfc
2 changed files with 22 additions and 12 deletions

View File

@@ -8,15 +8,25 @@
(function() {
var root = (typeof window != 'undefined') ? window : exports;
/*------------------------- Baseline setup ---------------------------------*/
var previousUnderscore = root._;
// Are we running in CommonJS or in the browser?
var commonJS = (typeof window === 'undefined' && typeof exports !== 'undefined');
// Save the previous value of the "_" variable.
var previousUnderscore = commonJS ? null : window._;
// Keep the identity function around for default iterators.
var identity = function(value) { return value; };
var _ = root._ = {};
_.VERSION = '0.2.0';
// Create a safe reference to the Underscore object for the functions below.
var _ = {};
// Export the Underscore object for CommonJS, assign it globally otherwise.
commonJS ? _ = exports : window._ = _;
// Current version.
_.VERSION = '0.2.1';
/*------------------------ Collection Functions: ---------------------------*/
@@ -417,7 +427,7 @@
// Run Underscore.js in noConflict mode, returning the '_' variable to its
// previous owner. Returns a reference to the Underscore object.
_.noConflict = function() {
root._ = previousUnderscore;
if (!commonJS) window._ = previousUnderscore;
return this;
};
@@ -452,10 +462,6 @@
_.inject = _.reduce;
_.filter = _.select;
_.every = _.all;
_.some = _.any;
/*------------------------- Export for ServerJS ----------------------------*/
if (typeof exports != 'undefined') exports = _;
_.some = _.any;
})();