# File lib/gauntlet_rubyparser.rb, line 15 def initialize super self.data = Hash.new { |h,k| h[k] = {} } old_data = load_yaml data_file self.data.merge! old_data end
# File lib/gauntlet_rubyparser.rb, line 52 def broke name, file, msg warn "bad" self.data[name][file] = msg self.dirty = true end
# File lib/gauntlet_rubyparser.rb, line 35 def diff_pp o1, o2 require 'pp' File.open("/tmp/a.#{$$}", "w") do |f| PP.pp o1, f end File.open("/tmp/b.#{$$}", "w") do |f| PP.pp o2, f end %xdiff -u /tmp/a.#{$$} /tmp/b.#{$$}` ensure File.unlink "/tmp/a.#{$$}" rescue nil File.unlink "/tmp/b.#{$$}" rescue nil end
# File lib/gauntlet_rubyparser.rb, line 58 def process path, name begin $stderr.print " #{path}: " rp = RubyParser.new r2r = Ruby2Ruby.new old_ruby = File.read(path) begin old_sexp = rp.process old_ruby rescue Racc::ParseError => e self.data[name][path] = :unparsable self.dirty = true return end new_ruby = r2r.process old_sexp.deep_clone begin new_sexp = rp.process new_ruby rescue Racc::ParseError => e broke name, path, "couldn't parse new_ruby: #{e.message.strip}" return end if old_sexp != new_sexp then broke name, path, diff_pp(old_sexp, new_sexp) return end self.data[name][path] = true self.dirty = true warn "good" rescue Interrupt puts "User cancelled" exit 1 rescue Exception => e broke name, path, " UNKNOWN ERROR: #{e}: #{e.message.strip}" end end
# File lib/gauntlet_rubyparser.rb, line 100 def run name warn name Dir["**/*.rb"].sort.each do |path| next if path =~ %rgemspec.rb/ # HACK next if data[name][path] == true process path, name end if self.data[name].values.all? { |v| v == true } then warn " ALL GOOD!" self.data[name] = true self.dirty = true end end
# File lib/gauntlet_rubyparser.rb, line 23 def should_skip? name if $f then if Hash === data[name] then ! data[name].empty? else data[name] end else data[name] == true # yes, == true on purpose end end