Combine script now handles relative includes in subdirectories
This is a bit of a kluge, specific to our scenerio, but it works.protolib
parent
ad5291eb8d
commit
913a497492
|
@ -47,6 +47,6 @@ exports.require = function( module )
|
||||||
*
|
*
|
||||||
* @return {udnefined}
|
* @return {udnefined}
|
||||||
*/
|
*/
|
||||||
exports.testCase = require( __dirname + '/inc-testcase.js' );
|
exports.testCase = require( './inc-testcase.js' );
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,7 @@ for module in $cat_modules; do
|
||||||
echo "( function( module, __dirname )"
|
echo "( function( module, __dirname )"
|
||||||
echo "{"
|
echo "{"
|
||||||
echo " var exports = module.exports = {};"
|
echo " var exports = module.exports = {};"
|
||||||
|
echo " __cwd = '$( dirname "$module" )';"
|
||||||
|
|
||||||
# add the module, removing trailing commas
|
# add the module, removing trailing commas
|
||||||
cat $filename | $RMTRAIL
|
cat $filename | $RMTRAIL
|
||||||
|
@ -171,6 +172,7 @@ if [ "$INC_TEST" ]; then
|
||||||
echo "( function( module, __dirname )"
|
echo "( function( module, __dirname )"
|
||||||
echo "{"
|
echo "{"
|
||||||
echo " var exports = module.exports = {};"
|
echo " var exports = module.exports = {};"
|
||||||
|
echo " __cwd = '.';"
|
||||||
|
|
||||||
# write out current test to make debugging easier in browsers with very
|
# write out current test to make debugging easier in browsers with very
|
||||||
# little debugging support
|
# little debugging support
|
||||||
|
|
|
@ -26,7 +26,7 @@ module.common = module['test/common'] = { exports: {
|
||||||
|
|
||||||
testCase: function()
|
testCase: function()
|
||||||
{
|
{
|
||||||
return require( 'test/inc-testcase' ).apply( this, arguments );
|
return require( '/test/inc-testcase' ).apply( this, arguments );
|
||||||
}
|
}
|
||||||
} };
|
} };
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*/
|
*/
|
||||||
var easejs = {};
|
var easejs = {};
|
||||||
|
|
||||||
( function( ns_exports )
|
( function( ns_exports, __cwd )
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* CommonJS module exports
|
* CommonJS module exports
|
||||||
|
@ -42,15 +42,26 @@ var easejs = {};
|
||||||
*/
|
*/
|
||||||
var require = function( module_id )
|
var require = function( module_id )
|
||||||
{
|
{
|
||||||
// remove the './' directory prefix (every module is currently included
|
// anything that is not an absolute require path will be prefixed
|
||||||
// via a relative path), stupidly remove ../'s and remove .js extensions
|
// with __cwd, which is set by the combined module; this allows
|
||||||
var id_clean = module_id.replace( /^\.?\/|[^/]*?\/\.\.\/|\.js$/, '' );
|
// including relative paths (but note that this also means that
|
||||||
|
// modules that perform ad-hoc conditional requires after another
|
||||||
|
// module has been processed may not work properly; we don't do
|
||||||
|
// this, though)
|
||||||
|
var id_norm = ( module_id.substr( 0, 1 ) === '/' )
|
||||||
|
? module_id
|
||||||
|
: __cwd + '/' + module_id;
|
||||||
|
|
||||||
|
// strip `../`, poorly strip `./` (for example, it would also strip
|
||||||
|
// `foo./`, but we know that this won't ever be the case with our
|
||||||
|
// files), and strip leading `/`
|
||||||
|
var id_clean = id_norm.replace( /([^\/]+\/\.\.\/|\.\/|^\/)/g, '' );
|
||||||
|
|
||||||
// attempt to retrieve the module
|
// attempt to retrieve the module
|
||||||
var mod = module[ id_clean ];
|
var mod = module[ id_clean ];
|
||||||
if ( mod === undefined )
|
if ( mod === undefined )
|
||||||
{
|
{
|
||||||
throw "[ease.js] Undefined module: " + module_id;
|
throw "[ease.js] Undefined module: " + id_clean;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mod.exports;
|
return mod.exports;
|
||||||
|
@ -65,5 +76,5 @@ var easejs = {};
|
||||||
ns_exports.Interface = module['interface'].exports;
|
ns_exports.Interface = module['interface'].exports;
|
||||||
ns_exports.Trait = module['Trait'].exports;
|
ns_exports.Trait = module['Trait'].exports;
|
||||||
ns_exports.version = module['version'].exports;
|
ns_exports.version = module['version'].exports;
|
||||||
} )( easejs );
|
} )( easejs, '.' );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue