@@ -6,7 +6,8 @@ module.exports = {
66 rewrite : rewrite ,
77 rewriteFile : rewriteFile ,
88 appName : appName ,
9- processDirectory : processDirectory
9+ processDirectory : processDirectory ,
10+ relativeRequire : relativeRequire
1011} ;
1112
1213function rewriteFile ( args ) {
@@ -74,6 +75,23 @@ function appName (self) {
7475 return suffix ? self . _ . classify ( suffix ) : '' ;
7576}
7677
78+ function destinationPath ( self , filepath ) {
79+ filepath = path . normalize ( filepath ) ;
80+ if ( ! path . isAbsolute ( filepath ) ) {
81+ filepath = path . join ( self . destinationRoot ( ) , filepath ) ;
82+ }
83+
84+ return filepath ;
85+ }
86+
87+ function relativeRequire ( self , to , fr ) {
88+ fr = destinationPath ( self , fr ) ;
89+ to = destinationPath ( self , to ) ;
90+ return path . relative ( path . dirname ( fr ) , to )
91+ . replace ( / ^ (? ! \. \. ) ( .* ) / , './$1' )
92+ . replace ( / [ \/ \\ ] i n d e x \. j s $ / , '' ) ;
93+ }
94+
7795function filterFile ( template ) {
7896 // Find matches for parans
7997 var filterMatches = template . match ( / \( ( [ ^ ) ] + ) \) / g) ;
@@ -109,6 +127,9 @@ function processDirectory (self, source, destination) {
109127
110128 files . forEach ( function ( f ) {
111129 var filteredFile = filterFile ( f ) ;
130+ if ( self . basename ) {
131+ filteredFile . name = filteredFile . name . replace ( 'basename' , self . basename ) ;
132+ }
112133 if ( self . name ) {
113134 filteredFile . name = filteredFile . name . replace ( 'name' , self . name ) ;
114135 }
@@ -133,7 +154,9 @@ function processDirectory (self, source, destination) {
133154 if ( copy ) {
134155 self . copy ( src , dest ) ;
135156 } else {
157+ self . filePath = dest ;
136158 self . template ( src , dest ) ;
159+ delete self . filePath ;
137160 }
138161 }
139162 } ) ;
0 commit comments