diff -r 1b096869b568 -r 1d3cfd4837a8 rake/style.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rake/style.rb Wed May 07 18:22:04 2008 +0000 @@ -0,0 +1,59 @@ +# +# Style Fixup Rake Tasks +# +# +# + +### Coding style checks and fixes +namespace :style do + + BLANK_LINE = /^\s*$/ + GOOD_INDENT = /^(\t\s*)?\S/ + + # A list of the files that have legitimate leading whitespace, etc. + PROBLEM_FILES = [ SPECDIR + 'config_spec.rb' ] + + desc "Check source files for inconsistent indent and fix them" + task :fix_indent do + files = LIB_FILES + SPEC_FILES + + badfiles = Hash.new {|h,k| h[k] = [] } + + trace "Checking files for indentation" + files.each do |file| + if PROBLEM_FILES.include?( file ) + trace " skipping problem file #{file}..." + next + end + + trace " #{file}" + linecount = 0 + file.each_line do |line| + linecount += 1 + + # Skip blank lines + next if line =~ BLANK_LINE + + # If there's a line with incorrect indent, note it and skip to the + # next file + if line !~ GOOD_INDENT + trace " Bad line %d: %p" % [ linecount, line ] + badfiles[file] << [ linecount, line ] + end + end + end + + if badfiles.empty? + log "No indentation problems found." + else + log "Found incorrect indent in #{badfiles.length} files:\n " + badfiles.each do |file, badlines| + log " #{file}:\n" + + " " + badlines.collect {|badline| "%5d: %p" % badline }.join( "\n " ) + end + end + end + +end + +