Skip to content

Commit

Permalink
feat(gen): allow app names to have custom suffix
Browse files Browse the repository at this point in the history
Allow app names to have a custom suffix with app-suffix option. By
default, it uses 'App'

Breaks existing app names that began with a capital letter
  • Loading branch information
eddiemonge committed Oct 24, 2013
1 parent 889befb commit 09f0f7b
Show file tree
Hide file tree
Showing 63 changed files with 194 additions and 165 deletions.
9 changes: 9 additions & 0 deletions app/index.js
@@ -1,6 +1,7 @@
'use strict';
var path = require('path');
var util = require('util');
var angularUtils = require('../util.js');
var spawn = require('child_process').spawn;
var yeoman = require('yeoman-generator');

Expand All @@ -9,6 +10,14 @@ var Generator = module.exports = function Generator(args, options) {
yeoman.generators.Base.apply(this, arguments);
this.argument('appname', { type: String, required: false });
this.appname = this.appname || path.basename(process.cwd());
this.appname = this._.camelize(this._.slugify(this._.humanize(this.appname)));

this.option('app-suffix', {
desc: 'Allow a custom suffix to be added to the module name',
type: String,
required: 'false'
});
this.scriptAppName = this.appname + angularUtils.appName(this);

args = ['main'];

Expand Down
2 changes: 1 addition & 1 deletion route/index.js
Expand Up @@ -23,7 +23,7 @@ Generator.prototype.rewriteAppJs = function () {
needle: '.otherwise',
splicable: [
" templateUrl: 'views/" + this.name + ".html'" + (coffee ? "" : "," ),
" controller: '" + this._.classify(this.name) + "Ctrl'"
" controller: '" + this.classedName + "Ctrl'"
]
};

Expand Down
5 changes: 5 additions & 0 deletions script-base.js
Expand Up @@ -12,6 +12,11 @@ var Generator = module.exports = function Generator() {
} catch (e) {
this.appname = path.basename(process.cwd());
}
this.appname = this._.slugify(this._.humanize(this.appname));
this.scriptAppName = this._.camelize(this.appname) + angularUtils.appName(this);

this.cameledName = this._.camelize(this.name);
this.classedName = this._.classify(this.name);

if (typeof this.env.options.appPath === 'undefined') {
try {
Expand Down
2 changes: 1 addition & 1 deletion templates/coffeescript-min/app.coffee
@@ -1,6 +1,6 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App', [<%= angularModules %>])
angular.module('<%= scriptAppName %>', [<%= angularModules %>])
.config ['$routeProvider', ($routeProvider) ->
$routeProvider
.when '/',
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript-min/controller.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.controller '<%= _.classify(name) %>Ctrl', ['$scope', ($scope) ->
angular.module('<%= scriptAppName %>')
.controller '<%= classedName %>Ctrl', ['$scope', ($scope) ->
$scope.awesomeThings = [
'HTML5 Boilerplate'
'AngularJS'
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript-min/decorator.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module("<%= _.camelize(appname) %>App").config ["$provide", ($provide) ->
$provide.decorator "<%= _.camelize(name) %>", ($delegate) ->
angular.module("<%= scriptAppName").config ["$provide", ($provide) ->
$provide.decorator "<%= cameledName %>", ($delegate) ->
# decorate the $delegate
$delegate
]
6 changes: 3 additions & 3 deletions templates/coffeescript-min/directive.coffee
@@ -1,9 +1,9 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.directive '<%= _.camelize(name) %>', [->
angular.module('<%= scriptAppName %>')
.directive '<%= cameledName %>', [->
template: '<div></div>'
restrict: 'E'
link: (scope, element, attrs) ->
element.text 'this is the <%= _.camelize(name) %> directive'
element.text 'this is the <%= cameledName %> directive'
]
6 changes: 3 additions & 3 deletions templates/coffeescript-min/filter.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.filter '<%= _.camelize(name) %>', [() ->
angular.module('<%= scriptAppName %>')
.filter '<%= cameledName %>', [() ->
(input) ->
'<%= _.camelize(name) %> filter: ' + input
'<%= cameledName %> filter: ' + input
]
4 changes: 2 additions & 2 deletions templates/coffeescript-min/service/constant.coffee
@@ -1,4 +1,4 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.constant '<%= _.camelize(name) %>', 42
angular.module('<%= scriptAppName %>')
.constant '<%= cameledName %>', 42
4 changes: 2 additions & 2 deletions templates/coffeescript-min/service/factory.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.factory '<%= _.camelize(name) %>', [() ->
angular.module('<%= scriptAppName %>')
.factory '<%= cameledName %>', [() ->
# Service logic
# ...

Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript-min/service/provider.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.provider '<%= _.camelize(name) %>', [->
angular.module('<%= scriptAppName %>')
.provider '<%= cameledName %>', [->

# Private variables
salutation = 'Hello'
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript-min/service/service.coffee
@@ -1,5 +1,5 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.service '<%= _.classify(name) %>', () ->
angular.module('<%= scriptAppName %>')
.service '<%= classedName %>', () ->
# AngularJS will instantiate a singleton by calling "new" on this function
4 changes: 2 additions & 2 deletions templates/coffeescript-min/service/value.coffee
@@ -1,4 +1,4 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.value '<%= _.camelize(name) %>', 42
angular.module('<%= scriptAppName %>')
.value '<%= cameledName %>', 42
8 changes: 4 additions & 4 deletions templates/coffeescript-min/spec/controller.coffee
@@ -1,17 +1,17 @@
'use strict'

describe 'Controller: <%= _.classify(name) %>Ctrl', () ->
describe 'Controller: <%= classedName %>Ctrl', () ->

# load the controller's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

<%= _.classify(name) %>Ctrl = {}
<%= classedName %>Ctrl = {}
scope = {}

# Initialize the controller and a mock scope
beforeEach inject ($controller, $rootScope) ->
scope = $rootScope.$new()
<%= _.classify(name) %>Ctrl = $controller '<%= _.classify(name) %>Ctrl', {
<%= classedName %>Ctrl = $controller '<%= classedName %>Ctrl', {
$scope: scope
}

Expand Down
6 changes: 3 additions & 3 deletions templates/coffeescript-min/spec/directive.coffee
@@ -1,9 +1,9 @@
'use strict'

describe 'Directive: <%= _.camelize(name) %>', () ->
describe 'Directive: <%= cameledName %>', () ->

# load the directive's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

scope = {}

Expand All @@ -13,4 +13,4 @@ describe 'Directive: <%= _.camelize(name) %>', () ->
it 'should make hidden element visible', inject ($compile) ->
element = angular.element '<<%= _.dasherize(name) %>></<%= _.dasherize(name) %>>'
element = $compile(element) scope
expect(element.text()).toBe 'this is the <%= _.camelize(name) %> directive'
expect(element.text()).toBe 'this is the <%= cameledName %> directive'
12 changes: 6 additions & 6 deletions templates/coffeescript-min/spec/filter.coffee
@@ -1,15 +1,15 @@
'use strict'

describe 'Filter: <%= _.camelize(name) %>', () ->
describe 'Filter: <%= cameledName %>', () ->

# load the filter's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

# initialize a new instance of the filter before each test
<%= _.camelize(name) %> = {}
<%= cameledName %> = {}
beforeEach inject ($filter) ->
<%= _.camelize(name) %> = $filter '<%= _.camelize(name) %>'
<%= cameledName %> = $filter '<%= cameledName %>'

it 'should return the input prefixed with "<%= _.camelize(name) %> filter:"', () ->
it 'should return the input prefixed with "<%= cameledName %> filter:"', () ->
text = 'angularjs'
expect(<%= _.camelize(name) %> text).toBe ('<%= _.camelize(name) %> filter: ' + text)
expect(<%= cameledName %> text).toBe ('<%= cameledName %> filter: ' + text)
12 changes: 6 additions & 6 deletions templates/coffeescript-min/spec/service.coffee
@@ -1,14 +1,14 @@
'use strict'

describe 'Service: <%= _.classify(name) %>', () ->
describe 'Service: <%= classedName %>', () ->

# load the service's module
beforeEach module '<%= _.classify(appname) %>App'
beforeEach module '<%= scriptAppName %>App'

# instantiate service
<%= _.classify(name) %> = {}
beforeEach inject (_<%= _.classify(name) %>_) ->
<%= _.classify(name) %> = _<%= _.classify(name) %>_
<%= classedName %> = {}
beforeEach inject (_<%= classedName %>_) ->
<%= classedName %> = _<%= classedName %>_

it 'should do something', () ->
expect(!!<%= _.classify(name) %>).toBe true
expect(!!<%= classedName %>).toBe true
2 changes: 1 addition & 1 deletion templates/coffeescript/app.coffee
@@ -1,6 +1,6 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App', [<%= angularModules %>])
angular.module('<%= scriptAppName %>', [<%= angularModules %>])
.config ($routeProvider) ->
$routeProvider
.when '/',
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript/controller.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.controller '<%= _.classify(name) %>Ctrl', ($scope) ->
angular.module('<%= scriptAppName %>')
.controller '<%= classedName %>Ctrl', ($scope) ->
$scope.awesomeThings = [
'HTML5 Boilerplate'
'AngularJS'
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript/decorator.coffee
@@ -1,6 +1,6 @@
'use strict'

angular.module("<%= _.camelize(appname) %>App").config ($provide) ->
$provide.decorator "<%= _.camelize(name) %>", ($delegate) ->
angular.module("<%= scriptAppName").config ($provide) ->
$provide.decorator "<%= cameledName %>", ($delegate) ->
# decorate the $delegate
$delegate
6 changes: 3 additions & 3 deletions templates/coffeescript/directive.coffee
@@ -1,9 +1,9 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.directive('<%= _.camelize(name) %>', () ->
angular.module('<%= scriptAppName %>')
.directive('<%= cameledName %>', () ->
template: '<div></div>'
restrict: 'E'
link: (scope, element, attrs) ->
element.text 'this is the <%= _.camelize(name) %> directive'
element.text 'this is the <%= cameledName %> directive'
)
6 changes: 3 additions & 3 deletions templates/coffeescript/filter.coffee
@@ -1,6 +1,6 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.filter '<%= _.camelize(name) %>', () ->
angular.module('<%= scriptAppName %>')
.filter '<%= cameledName %>', () ->
(input) ->
'<%= _.camelize(name) %> filter: ' + input
'<%= cameledName %> filter: ' + input
4 changes: 2 additions & 2 deletions templates/coffeescript/service/constant.coffee
@@ -1,4 +1,4 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.constant '<%= _.camelize(name) %>', 42
angular.module('<%= scriptAppName %>')
.constant '<%= cameledName %>', 42
4 changes: 2 additions & 2 deletions templates/coffeescript/service/factory.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.factory '<%= _.camelize(name) %>', () ->
angular.module('<%= scriptAppName %>')
.factory '<%= cameledName %>', () ->
# Service logic
# ...

Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript/service/provider.coffee
@@ -1,7 +1,7 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.provider '<%= _.camelize(name) %>', [->
angular.module('<%= scriptAppName %>')
.provider '<%= cameledName %>', [->

# Private variables
salutation = 'Hello'
Expand Down
4 changes: 2 additions & 2 deletions templates/coffeescript/service/service.coffee
@@ -1,5 +1,5 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.service '<%= _.classify(name) %>', () ->
angular.module('<%= scriptAppName %>')
.service '<%= classedName %>', () ->
# AngularJS will instantiate a singleton by calling "new" on this function
4 changes: 2 additions & 2 deletions templates/coffeescript/service/value.coffee
@@ -1,4 +1,4 @@
'use strict'

angular.module('<%= _.camelize(appname) %>App')
.value '<%= _.camelize(name) %>', 42
angular.module('<%= scriptAppName %>')
.value '<%= cameledName %>', 42
8 changes: 4 additions & 4 deletions templates/coffeescript/spec/controller.coffee
@@ -1,17 +1,17 @@
'use strict'

describe 'Controller: <%= _.classify(name) %>Ctrl', () ->
describe 'Controller: <%= classedName %>Ctrl', () ->

# load the controller's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

<%= _.classify(name) %>Ctrl = {}
<%= classedName %>Ctrl = {}
scope = {}

# Initialize the controller and a mock scope
beforeEach inject ($controller, $rootScope) ->
scope = $rootScope.$new()
<%= _.classify(name) %>Ctrl = $controller '<%= _.classify(name) %>Ctrl', {
<%= classedName %>Ctrl = $controller '<%= classedName %>Ctrl', {
$scope: scope
}

Expand Down
6 changes: 3 additions & 3 deletions templates/coffeescript/spec/directive.coffee
@@ -1,9 +1,9 @@
'use strict'

describe 'Directive: <%= _.camelize(name) %>', () ->
describe 'Directive: <%= cameledName %>', () ->

# load the directive's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

scope = {}

Expand All @@ -13,4 +13,4 @@ describe 'Directive: <%= _.camelize(name) %>', () ->
it 'should make hidden element visible', inject ($compile) ->
element = angular.element '<<%= _.dasherize(name) %>></<%= _.dasherize(name) %>>'
element = $compile(element) scope
expect(element.text()).toBe 'this is the <%= _.camelize(name) %> directive'
expect(element.text()).toBe 'this is the <%= cameledName %> directive'
12 changes: 6 additions & 6 deletions templates/coffeescript/spec/filter.coffee
@@ -1,15 +1,15 @@
'use strict'

describe 'Filter: <%= _.camelize(name) %>', () ->
describe 'Filter: <%= cameledName %>', () ->

# load the filter's module
beforeEach module '<%= _.camelize(appname) %>App'
beforeEach module '<%= scriptAppName %>'

# initialize a new instance of the filter before each test
<%= _.camelize(name) %> = {}
<%= cameledName %> = {}
beforeEach inject ($filter) ->
<%= _.camelize(name) %> = $filter '<%= _.camelize(name) %>'
<%= cameledName %> = $filter '<%= cameledName %>'

it 'should return the input prefixed with "<%= _.camelize(name) %> filter:"', () ->
it 'should return the input prefixed with "<%= cameledName %> filter:"', () ->
text = 'angularjs'
expect(<%= _.camelize(name) %> text).toBe ('<%= _.camelize(name) %> filter: ' + text)
expect(<%= cameledName %> text).toBe ('<%= cameledName %> filter: ' + text)
12 changes: 6 additions & 6 deletions templates/coffeescript/spec/service.coffee
@@ -1,14 +1,14 @@
'use strict'

describe 'Service: <%= _.classify(name) %>', () ->
describe 'Service: <%= classedName %>', () ->

# load the service's module
beforeEach module '<%= _.classify(appname) %>App'
beforeEach module '<%= scriptAppName %>App'

# instantiate service
<%= _.classify(name) %> = {}
beforeEach inject (_<%= _.classify(name) %>_) ->
<%= _.classify(name) %> = _<%= _.classify(name) %>_
<%= classedName %> = {}
beforeEach inject (_<%= classedName %>_) ->
<%= classedName %> = _<%= classedName %>_

it 'should do something', () ->
expect(!!<%= _.classify(name) %>).toBe true
expect(!!<%= classedName %>).toBe true

0 comments on commit 09f0f7b

Please sign in to comment.