1 | makePath = require './make-path'
|
2 | CouldNotLoad = require './could-not-load'
|
3 |
|
4 | findModule = (base, fileName, callers) ->
|
5 | fullPath = makePath base, fileName, callers
|
6 | try
|
7 | instance: require fullPath
|
8 | path: fullPath
|
9 | catch e
|
10 | if callers.length > 0
|
11 | findModule base, fileName, callers[0..-2]
|
12 | else
|
13 | throw e
|
14 |
|
15 | tryFind = (base, fileName, callers) ->
|
16 | try
|
17 | instance: require fileName
|
18 | path: fileName
|
19 | catch e
|
20 | if e.code == 'MODULE_NOT_FOUND'
|
21 | try
|
22 | findModule(base, fileName, callers)
|
23 | catch e2
|
24 | throw new CouldNotLoad base, fileName, callers
|
25 | else
|
26 | instance: {}
|
27 | path: makePath base, fileName, callers
|
28 |
|
29 |
|
30 | exports.instance = (base, fileName, callers) ->
|
31 | tryFind(base, fileName, callers).instance
|
32 |
|
33 | exports.path = (base, fileName, callers) ->
|
34 | tryFind(base, fileName, callers).path
|