<commit_before>/*global module:false*/
module.exports = function(grunt) {
	// Project configuration.
	grunt.initConfig({
	    pkg: grunt.file.readJSON('package.json'),
	    meta: {
			banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' +
				'* <%= pkg.homepage %>/\n' +
				'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>; Licensed <%= pkg.license %> */\n'
	    },
		dirs: {
			build: 'build/'
		},
		clean: {
			build: '<%= dirs.build %>'
		},
		jsdoc: {
			F: {
				src: ['js/**'],
				dest: '<%= dirs.build %>jsdoc'
			}
		},
		copy: {
			examples: {
				files: {
					src: ['examples/*'],
					dest: '<%= dirs.build %>examples'
				}
			}
		},
		concat: {
			options: {
				banner: '<%= meta.banner %>'
			},
			js: {
				src: [
					'js/Class/Class.js',

					'js/F/F.js',
					'js/F/F.Utilities.js',
					'js/F/F.EventEmitter.js',
					'js/F/F.View.js',
					'js/F/F.Component.js',
					'js/F/F.ModelComponent.js',
					'js/F/F.CollectionComponent.js',
				
					'js/F/components/*'
				],
				dest: '<%= dirs.build %>js/F/F.js'
			}
		},
		uglify: {
			options: {
				banner: '<%= meta.banner %>'
			},
			js: {
				files: {
					'<%= dirs.build %>js/F/F.min.js': '<%= dirs.build %>js/F/F.js'
				}
			}
		},
		watch: {
			copyExamples: {
				files: '<config:copy.examples.src>',
				tasks: 'copy:examples'
			},
			jshint: {
				files: '<config:jshint.files>',
				tasks: 'jshint'
			},
			concatjs: {
				files: 'js/**',
				tasks: 'concat:js'
			},
			uglify: {
				files: '<config:concat.js.dest>',
				tasks: 'uglify'
			}
		},
		jshint: {
			Gruntfile: 'Gruntfile.js',
			source: 'js/**/*.js',
			options: {
				eqeqeq: true,
				immed: true,
				latedef: true,
				newcap: true,
				noarg: true,
				sub: true,
				undef: true,
				boss: true,
				eqnull: true,
				browser: true,
				smarttabs: true,
				predef: [
					'F',			// component framework
					'Class',		// modified version of Crockford's new_constructor
					'$',			// jQuery
					'jQuery',		// jQuery
					'console',		// console.log...
					'Backbone',		// Backbone
					'_',			// Underscore
					'Handlebars'	// Handlebars
				]
			}
		}
	});
    
	// Default task
	grunt.registerTask('default', ['clean','jshint','copy','concat','uglify','jsdoc']);
	
	grunt.registerTask('build', ['clean','jshint','copy','concat','uglify']);
	
	grunt.registerTask('dev', ['clean','jshint','copy','concat']);
	
	grunt.loadTasks('tasks');
	grunt.loadNpmTasks('grunt-contrib-uglify');
	grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-copy');
};<commit_msg>Fix watch and copy tasks<commit_after>/*global module:false*/
module.exports = function(grunt) {
	// Project configuration.
	grunt.initConfig({
	    pkg: grunt.file.readJSON('package.json'),
	    meta: {
			banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' +
				'* <%= pkg.homepage %>/\n' +
				'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>; Licensed <%= pkg.license %> */\n'
	    },
		dirs: {
			build: 'build/'
		},
		clean: {
			build: '<%= dirs.build %>'
		},
		jsdoc: {
			F: {
				src: ['js/**'],
				dest: '<%= dirs.build %>jsdoc'
			}
		},
		copy: {
			examples: {
				files: {
					'<%= dirs.build %>/': 'examples/**/*'
				}
			}
		},
		concat: {
			options: {
				banner: '<%= meta.banner %>'
			},
			js: {
				src: [
					'js/Class/Class.js',

					'js/F/F.js',
					'js/F/F.Utilities.js',
					'js/F/F.EventEmitter.js',
					'js/F/F.View.js',
					'js/F/F.Component.js',
					'js/F/F.ModelComponent.js',
					'js/F/F.CollectionComponent.js',
				
					'js/F/components/*'
				],
				dest: '<%= dirs.build %>js/F/F.js'
			}
		},
		uglify: {
			options: {
				banner: '<%= meta.banner %>'
			},
			js: {
				files: {
					'<%= dirs.build %>js/F/F.min.js': '<%= dirs.build %>js/F/F.js'
				}
			}
		},
		jshint: {
			Gruntfile: 'Gruntfile.js',
			source: 'js/**/*.js',
			options: {
				eqeqeq: true,
				immed: true,
				latedef: true,
				newcap: true,
				noarg: true,
				sub: true,
				undef: true,
				boss: true,
				eqnull: true,
				browser: true,
				smarttabs: true,
				predef: [
					'F',			// component framework
					'Class',		// modified version of Crockford's new_constructor
					'$',			// jQuery
					'jQuery',		// jQuery
					'console',		// console.log...
					'Backbone',		// Backbone
					'_',			// Underscore
					'Handlebars'	// Handlebars
				]
			}
		},
		watch: {
			copyExamples: {
				files: ['examples/**/*'],
				tasks: ['copy:examples']
			},
			jshint: {
				files: ['Gruntfile.js', 'js/**/*.js'],
				tasks: ['jshint']
			},
			concatjs: {
				files: ['js/**/*.js'],
				tasks: ['concat:js']
			},
			uglify: {
				files: ['<config:concat.js.dest>'],
				tasks: ['uglify']
			}
		}
	});
    
	// Default task
	grunt.registerTask('default', ['clean','jshint','copy','concat','uglify','jsdoc']);
	
	grunt.registerTask('build', ['clean','jshint','copy','concat','uglify']);
	
	grunt.registerTask('dev', ['clean','jshint','copy','concat']);
	
	grunt.loadTasks('tasks');
	grunt.loadNpmTasks('grunt-contrib-uglify');
	grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-copy');
};
{'fraction_non_alphanumeric': 0.22666425470332852, 'fraction_numerical': 0.0, 'mean_word_length': 2.425650557620818, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5745861', 'n_tokens_mistral': 2787, 'n_tokens_neox': 2167, 'n_words': 318}