rake/style.rb
changeset 1 1d3cfd4837a8
--- /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
+
+