Author: nornagon
Date: 2005-07-06 21:43:50 -0400 (Wed, 06 Jul 2005)
New Revision: 850

Modified:
   trunk/clients/ravish/ravish2.rb
Log:
Ravish has a config file.

Modified: trunk/clients/ravish/ravish2.rb
===================================================================
--- trunk/clients/ravish/ravish2.rb     2005-07-07 00:17:12 UTC (rev 849)
+++ trunk/clients/ravish/ravish2.rb     2005-07-07 01:43:50 UTC (rev 850)
@@ -4,6 +4,7 @@
 $:.unshift "lib"
 
 require 'term/visual'
+require 'yaml'
 require 'haver'
 
 Thread.abort_on_exception = true
@@ -45,7 +46,18 @@
                        |k| "A-#{k}" } => :switch_window
        }
 
-       def initialize server, port=7575
+       ConfDefaults = {
+               'server'        => 'hardison.net',
+               'port'          => 7575,
+               'nick'          => 'RavishUser',
+       }
+
+       ConfFile = '.ravishrc'
+
+       def initialize conffile = ConfFile
+               @conffile = conffile
+               loadconf
+               at_exit { saveconf }
                @term = Term::Visual.new
                @term.palette.setcolors Palette
                @term.global_prefix = self.method :global_prefix
@@ -62,13 +74,13 @@
                                @term.bind k, v
                        end
                }
-               @servwin = Window.new(@term.create_window('title' => server), 
:server,
-                               'server' => server, 'port' => port, 'name' => 
server)
+               @servwin = Window.new(@term.create_window(
+                       'title' => "Ravish v0.1.2 - Haver client in Ruby"), 
:server,
+                               'server' => @conf['server'], 'port' => 
@conf['port'],
+                               'name' => @conf['server'])
                @windows = [EMAIL PROTECTED]
                statbar_wheel
-               @server = server
-               @port = port
-               @haver = Haver::Client.new server
+               @haver = Haver::Client.new @conf['server']
                @haver.add_observer self
                @haver.start
        end
@@ -97,10 +109,10 @@
        def update type, *args
                case type
                when :connecting
-                       srvmsg "Connecting to [EMAIL PROTECTED]:[EMAIL 
PROTECTED]"
+                       srvmsg "Connecting to [EMAIL 
PROTECTED]'server']}:[EMAIL PROTECTED]'port']}..."
                when :connected
                        srvmsg 'Connected.'
-                       @haver.msg 'HAVER', 'Ravish/0.1.0'
+                       @haver.msg 'HAVER', 'Ravish/0.1.2'
                when :link_failed
                        srvmsg "Link failed: #{args[0]}"
                when :message_sent
@@ -120,6 +132,29 @@
 
        ## HELPER METHODS ##
 
+       def loadconf [EMAIL PROTECTED]
+               if File.exists?(file) and File.readable?(file)
+                       File.open(file) { |cf|
+                               c = YAML.load cf
+                               if c.respond_to?(:to_hash)
+                                       @conf = ConfDefaults.merge(c)
+                               else
+                                       @conf = ConfDefaults
+                               end
+                       }
+               else
+                       @conf = ConfDefaults
+               end
+       end
+
+       def saveconf [EMAIL PROTECTED]
+               if !File.exists?(file) or File.writable?(file)
+                       File.open(file, 'w') { |cf|
+                               YAML.dump @conf, cf
+                       }
+               end
+       end
+
        def srvmsg *args
                args.each { |arg|
                        @servwin.window.addline arg, ServerPrefix
@@ -214,7 +249,7 @@
 
        def ev_HAVER server, version
                srvmsg "Server #{server} running #{version}"
-               @haver.msg 'IDENT', 'nornagon'
+               @haver.msg 'IDENT', @conf['nick']
                activity @servwin, 2
        end
 
@@ -362,6 +397,6 @@
        alias_method :user_LIST, :user_NAMES
 end
 
-ravish = Ravish.new 'hardison.net'
+ravish = Ravish.new
 
 EventManager.instance.run


Reply via email to