| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- const path = require('path');
 
- const extension = require('./lib/extension');
 
- const normalize = require('./lib/normalize');
 
- const register = require('./lib/register');
 
- exports.prepare = function (extensions, filepath, cwd, nothrow) {
 
-   var option, attempt;
 
-   var attempts = [];
 
-   var err;
 
-   var onlyErrors = false;
 
-   var ext = extension(filepath);
 
-   if (Object.keys(require.extensions).indexOf(ext) !== -1) {
 
-     return true;
 
-   }
 
-   var config = normalize(extensions[ext]);
 
-   if (!config) {
 
-     if (nothrow) {
 
-       return;
 
-     } else {
 
-       throw new Error('No module loader found for "'+ext+'".');
 
-     }
 
-   }
 
-   if (!cwd) {
 
-     cwd = path.dirname(path.resolve(filepath));
 
-   }
 
-   if (!Array.isArray(config)) {
 
-     config = [config];
 
-   }
 
-   for (var i in config) {
 
-     option = config[i];
 
-     attempt = register(cwd, option.module, option.register);
 
-     error = (attempt instanceof Error) ? attempt : null;
 
-     if (error) {
 
-       attempt = null;
 
-     }
 
-     attempts.push({
 
-       moduleName: option.module,
 
-       module: attempt,
 
-       error: error
 
-     });
 
-     if (!error) {
 
-       onlyErrors = false;
 
-       break;
 
-     } else {
 
-       onlyErrors = true;
 
-     }
 
-   }
 
-   if (onlyErrors) {
 
-     err = new Error('Unable to use specified module loaders for "'+ext+'".');
 
-     err.failures = attempts;
 
-     if (nothrow) {
 
-       return err;
 
-     } else {
 
-       throw err;
 
-     }
 
-   }
 
-   return attempts;
 
- };
 
 
  |