1 | var fs = require('fs');
|
2 | var join = require('path').join;
|
3 | var resolve = require('path').resolve;
|
4 |
|
5 | var requireDirectory = function(m, path, exclude){
|
6 | var delegate = function(){ return true; };
|
7 | if(exclude instanceof RegExp){
|
8 | delegate = function(path){
|
9 | if(exclude.test(path)){
|
10 | return false;
|
11 | }else{
|
12 | return true;
|
13 | }
|
14 | };
|
15 | }else if(exclude && {}.toString.call(exclude) === '[object Function]'){
|
16 | delegate = exclude;
|
17 | }
|
18 |
|
19 | var retval = {};
|
20 | path = resolve(path);
|
21 | fs.readdirSync(path).forEach(function(filename){
|
22 | var joined = join(path, filename);
|
23 | if(delegate(joined)){
|
24 | if(fs.statSync(joined).isDirectory()){
|
25 | retval[filename] = requireDirectory(m, joined, delegate);
|
26 | }else{
|
27 | var name = filename.substring(0, filename.lastIndexOf('.'));
|
28 | retval[name] = m.require(joined);
|
29 | }
|
30 | }
|
31 | });
|
32 | return retval;
|
33 | };
|
34 |
|
35 | module.exports = requireDirectory;
|