Commit 4f8fe765 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

List new classes in /bin/compare output.

parent 0d289abc
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -81,19 +81,17 @@ def discard_docs(cls)
  cls
end

def read_all_classes(dir, ignore_private=false)
def read_all_classes(dir)
  map = {}
  Dir[dir+"/*.json"].each do |filename|
    print "."
    STDOUT.flush
    cls = discard_docs(read_class(filename))
    unless ignore_private && cls["private"]
    map[cls["name"]] = cls
    cls["alternateClassNames"].each do |name|
      map[name] = cls
    end
  end
  end
  puts "OK"
  map
end
@@ -237,14 +235,14 @@ def compare_classes(cls1, cls2)
end


old_classes = read_all_classes(options[:old_classes], :ignore_private)
old_classes = read_all_classes(options[:old_classes])
new_classes = read_all_classes(options[:new_classes])
ignored_members = options[:ignore] ? read_ignored_members(options[:ignore]) : {}

diff_data = []
old_classes.each_pair do |name, cls|
  # only go through classes, not alternate names
  if name == cls["name"]
  if name == cls["name"] && !cls["private"]
    if options[:remap][name]
      new_cls = new_classes[options[:remap][name]]
    else
@@ -253,13 +251,25 @@ old_classes.each_pair do |name, cls|

    diff_data << {
      :name => cls["name"],
      :found => !!new_cls || ignored_members[name],
      :found => (new_cls || ignored_members[name]) ? :both : :old,
      :new_name => new_cls && new_cls["name"],
      :diff => new_cls ? compare_classes(cls, new_cls) : [],
    }
  end
end

new_classes.each_pair do |name, cls|
  if name == cls["name"] && !cls["private"]
    unless old_classes[name]
      diff_data << {
        :name => cls["name"],
        :found => :new,
        :diff => [],
      }
    end
  end
end

# Throw away ignored members and everything except configs
diff_data.each do |cls|
  cls[:diff] = cls[:diff].find_all do |m|
@@ -303,7 +313,7 @@ EOHTML
html << "<ul>"
diff_data.sort! {|a, b| a[:name] <=> b[:name] }
diff_data.each do |cls|
  if cls[:found]
  if cls[:found] == :both
    if cls[:diff].length > 0 || options[:show_unchanged]
      html << "<li>"
      new_name = (cls[:new_name] == cls[:name] ? "" : " --> " + cls[:new_name])
@@ -332,9 +342,13 @@ diff_data.each do |cls|
      end
      html << "</li>"
    end
  else
  elsif cls[:found] == :old
    html << "<li>"
    html << "<h2>" + cls[:name] + " <b style='color:red'>not found</b></h2>"
    html << "</li>"
  elsif cls[:found] == :new
    html << "<li>"
    html << "<h2>" + cls[:name] + " <b>not found</b></h2>"
    html << "<h2>" + cls[:name] + " <b>New class</b></h2>"
    html << "</li>"
  end
end