]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Improved inspect methods all around
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 6 Nov 2007 22:39:57 +0000 (22:39 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 6 Nov 2007 22:39:57 +0000 (22:39 +0000)
lib/rbot/botuser.rb
lib/rbot/irc.rb
lib/rbot/ircbot.rb
lib/rbot/plugins.rb

index dc137154e18ca0527131ac4bb687ea73daa48d07..9f2620dc0a502fe59f6c4c63ab159d8b9a917fb6 100644 (file)
@@ -321,7 +321,7 @@ class Bot
 \r
       # Inspection\r
       def inspect\r
-        str = "<#{self.class}:#{'0x%08x' % self.object_id}"\r
+        str = self.__to_s__[0..-2]\r
         str << " (transient)" if @transient\r
         str << ":"\r
         str << " @username=#{@username.inspect}"\r
index 02835b36a4cf924971ebb2212eed339347e30b2e..86ca0fab198444fe5ebb268ebabd7220aee03415 100644 (file)
@@ -30,6 +30,10 @@ class Object
     return true if self.respond_to? :empty and self.empty?\r
     return false\r
   end\r
+\r
+  # We alias the to_s method to __to_s__ to make\r
+  # it accessible in all classes\r
+  alias :__to_s__ :to_s \r
 end\r
 \r
 # The Irc module is used to keep all IRC-related classes\r
@@ -89,7 +93,7 @@ module Irc
     # A Casemap is represented by its lower/upper mappings\r
     #\r
     def inspect\r
-      "#<#{self.class}:#{'0x%x'% self.object_id}: #{upper.inspect} ~(#{self})~ #{lower.inspect}>"\r
+      self.__to_s__[0..-2] + " #{upper.inspect} ~(#{self})~ #{lower.inspect}>"\r
     end\r
 \r
     # As a String we return our name\r
@@ -355,7 +359,7 @@ class ArrayOf < Array
   end\r
 \r
   def inspect\r
-    "#<#{self.class}[#{@element_class}]:#{'0x%x' % self.object_id}: #{super}>"\r
+    self.__to_s__[0..-2].sub(/:[^:]+$/,"[#{@element_class}]\\0") + " #{super}>"\r
   end\r
 \r
   # Private method to check the validity of the elements passed to it\r
@@ -688,7 +692,7 @@ module Irc
     # one), its casemap and the nick, user and host part\r
     #\r
     def inspect\r
-      str = "<#{self.class}:#{'0x%x' % self.object_id}:"\r
+      str = self.__to_s__[0..-2]\r
       str << " @server=#{@server}" if defined?(@server) and @server\r
       str << " @nick=#{@nick.inspect} @user=#{@user.inspect}"\r
       str << " @host=#{@host.inspect} casemap=#{casemap.inspect}"\r
@@ -1278,7 +1282,7 @@ module Irc
     alias :to_s :name\r
 \r
     def inspect\r
-      str = "<#{self.class}:#{'0x%x' % self.object_id}:"\r
+      str = self.__to_s__[0..-2]\r
       str << " on server #{server}" if server\r
       str << " @name=#{@name.inspect} @topic=#{@topic.text.inspect}"\r
       str << " @users=[#{user_nicks.sort.join(', ')}]"\r
@@ -1477,7 +1481,7 @@ module Irc
         }\r
       }\r
 \r
-      str = "<#{self.class}:#{'0x%x' % self.object_id}:"\r
+      str = self.__to_s__[0..-2]\r
       str << " @hostname=#{hostname}"\r
       str << " @channels=#{chans}"\r
       str << " @users=#{users}"\r
index 05e58de28197c414a4dc3bf7f1b26f084d006d0d..5cb9e4f3a04a699fc17adc39665c24625caea717 100644 (file)
@@ -178,6 +178,38 @@ class Bot
     myself.nick
   end
 
+  # bot inspection
+  # TODO multiserver
+  def inspect
+    ret = self.to_s[0..-2]
+    ret << ' version=' << $version.inspect
+    ret << ' botclass=' << botclass.inspect
+    ret << ' lang="' << lang.language
+    if defined?(GetText)
+      ret << '/' << locale
+    end
+    ret << '"'
+    ret << ' nick=' << nick.inspect
+    ret << ' server='
+    if server
+      ret << (server.to_s + (socket ?
+        ' [' << socket.server_uri.to_s << ']' : '')).inspect
+      unless server.channels.empty?
+        ret << " channels="
+        ret << server.channels.map { |c|
+          "%s%s" % [c.modes_of(nick).map { |m|
+            server.prefix_for_mode(m)
+          }, c.name]
+        }.inspect
+      end
+    else
+      ret << '(none)'
+    end
+    ret << ' plugins=' << plugins.inspect
+    ret << ">"
+  end
+
+
   # create a new Bot with botclass +botclass+
   def initialize(botclass, params = {})
     # Config for the core bot
index 5ad1ebb1d32628e957695ed1a484050018eda108..12fade3e211cb64db61d4f3bf094297238d90503 100644 (file)
@@ -369,6 +369,19 @@ module Plugins
       bot_associate(nil)
     end
 
+    def inspect
+      ret = self.to_s[0..-2]
+      ret << ' corebotmodules='
+      ret << @botmodules[:CoreBotModule].map { |m|
+        m.name
+      }.inspect
+      ret << ' plugins='
+      ret << @botmodules[:Plugin].map { |m|
+        m.name
+      }.inspect
+      ret << ">"
+    end
+
     # Reset lists of botmodules
     def reset_botmodule_lists
       @botmodules[:CoreBotModule].clear