chicago
Version:
A front-end JavaScript library for user-interface developers.
61 lines (53 loc) • 1.59 kB
JavaScript
module.exports = function( grunt ) {
// Custom Tasks
grunt.registerTask('create-plugin', 'Grunt task to create a Chicago plugin', function() {
function createSlug(string) {
return string
.replace( /[^a-zA-Z0-9]/g, ' ' )
.replace( /\s+/g, '-' )
.toLowerCase();
}
function camelCase( string ) {
if(string === null || string === undefined) {
return '';
}
return string.replace(/(?:^\w|[A-Z]|\b\w)/g, function(letter, index) {
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
}).replace(/\s+/g, '');
}
grunt.config.set('prompt', {
createPlugin : {
options: {
questions: [{
config: 'name',
type: 'input',
message: 'Plugin Name:',
}, {
config: 'description',
type: 'input',
message: 'Description:',
}, {
config: 'author',
type: 'input',
message: 'Author:',
}],
then: function(results) {
var template = grunt.file.read('tasks/templates/plugin.js');
var slug = createSlug( results.name );
var camel = camelCase( results.name );
var content = template
.replace(/@PLUGIN/g, results.name)
.replace(/@DESCRIPTION/g, results.description)
.replace(/@AUTHOR/g, results.author)
.replace(/@SLUG/g, slug)
.replace(/@CAMEL/g, camel)
.replace(/@YEAR/g, grunt.template.today("yyyy"))
.replace(/@VERSION/g, grunt.template.process('<%= pkg.version %>'));
grunt.file.write( 'src/plugins/' + slug + '.js', content );
}
}
}
});
grunt.task.run('prompt');
});
};