simple-ioc
Version:
Simple Inversion of Control for node.js
30 lines • 855 B
JavaScript
var path = require( 'path' );
module.exports = function( parentModule ) {
var pub = {};
var getParentFilename = function( stepsBack ) {
var prepareStackTraceBackup = Error.prepareStackTrace,
err = new Error(),
filename = module.filename;
Error.prepareStackTrace = function( err, stack ) { return stack.map( function( item ) {
return item.getFileName();
} ); };
var stack = err.stack;
Error.prepareStackTrace = prepareStackTraceBackup;
while( stack.length ) {
if( !stepsBack )
return filename;
var top = stack.shift();
if( top !== filename ) {
stepsBack--;
filename = top;
}
}
};
pub.resolveName = function( stepsBack ) {
return getParentFilename( stepsBack ).split( '/' ).pop();
};
pub.resolvePath = function( stepsBack ) {
return path.dirname( getParentFilename( stepsBack ) );
};
return pub;
};