Skip to content

Commit 3fcd8e9

Browse files
committed
feat(gen): add relativeRequire and other template helpers
1 parent fb915b2 commit 3fcd8e9

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

script-base.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ var Generator = module.exports = function Generator() {
1515
this.appname = this._.slugify(this._.humanize(this.appname));
1616
this.scriptAppName = this._.camelize(this.appname) + angularUtils.appName(this);
1717

18-
this.cameledName = this._.camelize(this.name);
19-
this.classedName = this._.classify(this.name);
18+
var name = this.name.replace(/\//g, '-');
19+
20+
this.cameledName = this._.camelize(name);
21+
this.classedName = this._.classify(name);
22+
23+
this.basename = path.basename(this.name);
24+
this.dirname = (this.name.indexOf('/') >= 0) ? path.dirname(this.name) : this.name;
2025

2126
// dynamic assertion statement
2227
this.does = this.is = function(foo) {
@@ -27,6 +32,12 @@ var Generator = module.exports = function Generator() {
2732
}
2833
}.bind(this);
2934

35+
// dynamic relative require path
36+
this.relativeRequire = function(to, fr) {
37+
fr = fr || this.filePath;
38+
return angularUtils.relativeRequire(this, to, fr);
39+
}.bind(this);
40+
3041
this.filters = this.config.get('filters');
3142
this.sourceRoot(path.join(__dirname, '/templates'));
3243
};

util.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

1213
function 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(/[\/\\]index\.js$/, '');
93+
}
94+
7795
function 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

Comments
 (0)