]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
* tidying up 'help ignored plugins' output
authorDmitry Kim <dmitry point kim at gmail point com>
Tue, 20 Mar 2007 01:14:35 +0000 (01:14 +0000)
committerDmitry Kim <dmitry point kim at gmail point com>
Tue, 20 Mar 2007 01:14:35 +0000 (01:14 +0000)
lib/rbot/plugins.rb

index 80ac2f1cc5a4e2933bc73246eb950788de18d5df..7b476da93a5819bdbfb359a5e9c73a8d99aa8a77 100644 (file)
@@ -531,15 +531,19 @@ module Plugins
         }.join("\n")
       when /ignored?\s*plugins?/
         return "no plugins were ignored" if @ignored.empty?
-        return @ignored.inject(Array.new) { |list, p|
-          case p[:reason]
-          when :loaded
-            list << "#{p[:name]} in #{p[:dir]} (overruled by previous)"
-          else
-            list << "#{p[:name]} in #{p[:dir]} (#{p[:reason].to_s})"
-          end
-          list
-        }.join(", ")
+
+        tmp = Hash.new
+        @ignored.each do |p|
+          reason = p[:loaded] ? 'overruled by previous' : p[:reason].to_s
+          ((tmp[p[:dir]] ||= Hash.new)[reason] ||= Array.new).push(p[:name])
+        end
+
+        return tmp.map do |dir, reasons|
+          s = reasons.map { |r, list|
+            list.map { |_| _.sub(/\.rb$/, '') }.join(', ') + " (#{r})"
+          }.join('; ')
+          "in #{dir}: #{s}"
+        end.join('; ')
       when /^(\S+)\s*(.*)$/
         key = $1
         params = $2