Sha256: bd186a9b0475b39f4ebf6007358a2d78d16707ebb2e7b7785990f6947e5598ea

Contents?: true

Size: 1.66 KB

Versions: 5

Compression:

Stored size: 1.66 KB

Contents

require 'irb'

module Marvin
  class Console
    
    module BaseExtensions
      def parse(line)
        Marvin::Settings.default_parser.parse(line)
      end

      def logger
        Marvin::Logger.logger
      end

      def client
        $client ||= Marvin::Settings.default_client.new(:port => 6667, :server => "irc.freenode.net")
      end

      class ServerMock < Marvin::IRC::Server::BaseConnection
        def send_line(line)
          puts ">> #{line}"
        end
        def kill_connection!
          puts "Killing connection"
        end

        def get_peername
          # Localhost, HTTP
          "\034\036\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000"
        end

        def host
          "localhost"
        end

        def port
          6667
        end

      end

      def server(reset = false)
        $server = ServerMock.new(:port => 6667, :host => "localhost") if $server.blank? || reset
        return $server
      end

      def user(reset = false)
        unless @user_created || reset
          server.receive_line "NICK SuttoL"
          server.receive_line "USER SuttoL 0 * :SuttoL"
          @user_created = true
        end
        return server.connection_implementation
      end
    end
    
    def initialize(file = $0)
      @file = file
      setup_irb
    end
    
    def setup_irb
      # This is a bit hacky, surely there is a better way?
      # e.g. some way to specify which scope irb runs in.
      eval("include Marvin::Console::BaseExtensions", TOPLEVEL_BINDING)
    end
    
    def run
      IRB.start(@file)
    end
    
    def self.run
      self.new.run
    end
    
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
Sutto-marvin-0.3.0 lib/marvin/console.rb
Sutto-marvin-0.3.2 lib/marvin/console.rb
Sutto-marvin-0.3.3 lib/marvin/console.rb
Sutto-marvin-0.3.4 lib/marvin/console.rb
Sutto-marvin-0.4.0 lib/marvin/console.rb