UNPKG

chicago

Version:

A front-end JavaScript library for user-interface developers.

61 lines (53 loc) 1.59 kB
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'); }); };