Sutto-marvin 0.1.0.20081014
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/marvin +60 -0
- data/config/settings.yml.sample +13 -0
- data/config/setup.rb +15 -0
- data/handlers/hello_world.rb +14 -0
- data/handlers/logging_handler.rb +87 -0
- data/handlers/tweet_tweet.rb +19 -0
- data/lib/marvin/abstract_client.rb +250 -0
- data/lib/marvin/abstract_parser.rb +19 -0
- data/lib/marvin/base.rb +121 -0
- data/lib/marvin/command_handler.rb +62 -0
- data/lib/marvin/core_ext.rb +11 -0
- data/lib/marvin/data_store.rb +73 -0
- data/lib/marvin/drb_handler.rb +7 -0
- data/lib/marvin/exception_tracker.rb +16 -0
- data/lib/marvin/exceptions.rb +8 -0
- data/lib/marvin/irc/abstract_server.rb +4 -0
- data/lib/marvin/irc/client.rb +107 -0
- data/lib/marvin/irc/event.rb +29 -0
- data/lib/marvin/irc/socket_client.rb +63 -0
- data/lib/marvin/irc.rb +8 -0
- data/lib/marvin/loader.rb +55 -0
- data/lib/marvin/logger.rb +22 -0
- data/lib/marvin/middle_man.rb +105 -0
- data/lib/marvin/parsers/regexp_parser.rb +94 -0
- data/lib/marvin/parsers.rb +7 -0
- data/lib/marvin/settings.rb +73 -0
- data/lib/marvin/test_client.rb +60 -0
- data/lib/marvin/util.rb +30 -0
- data/lib/marvin.rb +33 -0
- data/script/run +18 -0
- metadata +85 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require 'active_support'
|
3
|
+
|
4
|
+
module Marvin
|
5
|
+
# Marvin::TestClient is a simple client used for testing
|
6
|
+
# Marvin::Base derivatives in a non-network-reliant setting.
|
7
|
+
class TestClient < AbstractClient
|
8
|
+
attr_accessor :incoming_commands, :outgoing_commands, :last_sent, :dispatched_events, :connection_open
|
9
|
+
|
10
|
+
cattr_accessor :instances
|
11
|
+
self.instances = []
|
12
|
+
|
13
|
+
DispatchedEvents = Struct.new(:name, :options)
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
super
|
17
|
+
self.incoming_commands = []
|
18
|
+
self.outgoing_commands = []
|
19
|
+
self.dispatched_events = []
|
20
|
+
self.connection_open = false
|
21
|
+
self.instances << self
|
22
|
+
end
|
23
|
+
|
24
|
+
def connection_open?
|
25
|
+
self.connection_open
|
26
|
+
end
|
27
|
+
|
28
|
+
def send_line(*args)
|
29
|
+
self.outgoing_commands += args
|
30
|
+
self.last_sent = args.last
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_command(name, *args)
|
34
|
+
options = args.extract_options!
|
35
|
+
host_mask = options.delete(:host_mask) || ":WiZ!jto@tolsun.oulu.fi"
|
36
|
+
name = name.to_s.upcase
|
37
|
+
args = args.flatten.compact
|
38
|
+
irc_command = "#{host_mask} #{name} #{args.join(" ").strip}"
|
39
|
+
self.receive_line irc_command
|
40
|
+
end
|
41
|
+
|
42
|
+
def dispatch_event(name, opts = {})
|
43
|
+
self.dispatched_events << [name, opts]
|
44
|
+
super(name, opts = {})
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.run
|
48
|
+
self.instances.each do |i|
|
49
|
+
i.connection_open = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.stop
|
54
|
+
self.instances.each do |i|
|
55
|
+
i.connection_open = false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
data/lib/marvin/util.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Marvin
|
2
|
+
class Util
|
3
|
+
class << self
|
4
|
+
|
5
|
+
# Return the channel-name version of a string by
|
6
|
+
# appending "#" to the front if it doesn't already
|
7
|
+
# start with it.
|
8
|
+
def channel_name(name)
|
9
|
+
return name.to_s[0..0] == "#" ? name.to_s : "##{name}"
|
10
|
+
end
|
11
|
+
alias chan channel_name
|
12
|
+
|
13
|
+
def arguments(input)
|
14
|
+
prefix, *ending = input.split(":")
|
15
|
+
prefix = prefix.split(" ")
|
16
|
+
prefix << ending.join(":").strip
|
17
|
+
return prefix
|
18
|
+
end
|
19
|
+
|
20
|
+
# Specifies the last parameter of a response, used to
|
21
|
+
# specify parameters which have spaces etc (for example,
|
22
|
+
# the actual message part of a response).
|
23
|
+
def last_param(section)
|
24
|
+
section && ":#{section.to_s.strip} "
|
25
|
+
end
|
26
|
+
alias lp last_param
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/marvin.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) # Append the current working dir to the front of the line.
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'active_support'
|
5
|
+
require 'marvin/core_ext'
|
6
|
+
|
7
|
+
# Make all exceptions available
|
8
|
+
require 'marvin/exceptions'
|
9
|
+
|
10
|
+
module Marvin
|
11
|
+
autoload :Util, 'marvin/util'
|
12
|
+
autoload :AbstractClient, 'marvin/abstract_client'
|
13
|
+
autoload :Base, 'marvin/base'
|
14
|
+
autoload :ClientMixin, 'marvin/client_mixin'
|
15
|
+
autoload :Settings, 'marvin/settings'
|
16
|
+
autoload :Logger, 'marvin/logger'
|
17
|
+
autoload :IRC, 'marvin/irc'
|
18
|
+
autoload :TestClient, 'marvin/test_client'
|
19
|
+
autoload :Loader, 'marvin/loader'
|
20
|
+
autoload :MiddleMan, 'marvin/middle_man'
|
21
|
+
autoload :DRBHandler, 'marvin/drb_handler'
|
22
|
+
autoload :DataStore, 'marvin/data_store'
|
23
|
+
autoload :ExceptionTracker, 'marvin/exception_tracker'
|
24
|
+
# Parsers
|
25
|
+
autoload :AbstractParser, 'marvin/abstract_parser'
|
26
|
+
autoload :Parsers, 'marvin/parsers.rb'
|
27
|
+
|
28
|
+
# Default Handlers
|
29
|
+
autoload :CommandHandler, 'marvin/command_handler'
|
30
|
+
|
31
|
+
Settings.setup # Load Settings etc.
|
32
|
+
|
33
|
+
end
|
data/script/run
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
# Set the root of Marvin
|
4
|
+
|
5
|
+
if File.exist?(File.dirname(__FILE__) + "/../lib/marvin.rb")
|
6
|
+
$:.unshift(File.dirname(__FILE__) + "/../lib/")
|
7
|
+
end
|
8
|
+
|
9
|
+
MARVIN_ROOT = File.join(File.dirname(__FILE__), "..")
|
10
|
+
# And Require Marvin.
|
11
|
+
require 'marvin'
|
12
|
+
|
13
|
+
trap "SIGINT" do
|
14
|
+
Marvin::Loader.stop!
|
15
|
+
exit
|
16
|
+
end
|
17
|
+
|
18
|
+
Marvin::Loader.run!
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: Sutto-marvin
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.20081014
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Darcy Laycock
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-08-05 00:00:00 -07:00
|
13
|
+
default_executable: marvin
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Marvin is a Ruby IRC library / framework for ultimate awesomeness and with an evented design.
|
17
|
+
email: sutto@sutto.net
|
18
|
+
executables:
|
19
|
+
- marvin
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/marvin
|
26
|
+
- lib/marvin/abstract_client.rb
|
27
|
+
- lib/marvin/base.rb
|
28
|
+
- lib/marvin/command_handler.rb
|
29
|
+
- lib/marvin/core_ext.rb
|
30
|
+
- lib/marvin/data_store.rb
|
31
|
+
- lib/marvin/drb_handler.rb
|
32
|
+
- lib/marvin/exception_tracker.rb
|
33
|
+
- lib/marvin/exceptions.rb
|
34
|
+
- lib/marvin/irc
|
35
|
+
- lib/marvin/irc/client.rb
|
36
|
+
- lib/marvin/irc/event.rb
|
37
|
+
- lib/marvin/irc/socket_client.rb
|
38
|
+
- lib/marvin/irc.rb
|
39
|
+
- lib/marvin/loader.rb
|
40
|
+
- lib/marvin/logger.rb
|
41
|
+
- lib/marvin/middle_man.rb
|
42
|
+
- lib/marvin/settings.rb
|
43
|
+
- lib/marvin/test_client.rb
|
44
|
+
- lib/marvin/util.rb
|
45
|
+
- lib/marvin.rb
|
46
|
+
- bin/marvin
|
47
|
+
- config/settings.yml
|
48
|
+
- config/settings.yml.sample
|
49
|
+
- config/setup.rb
|
50
|
+
- handlers/hello_world.rb
|
51
|
+
- handlers/logging_handler.rb
|
52
|
+
- handlers/tweet_tweet.rb
|
53
|
+
- script/run
|
54
|
+
- lib/marvin/parsers/regexp_parser.rb
|
55
|
+
- lib/marvin/parsers.rb
|
56
|
+
- lib/marvin/irc/abstract_server.rb
|
57
|
+
- lib/marvin/abstract_parser.rb
|
58
|
+
has_rdoc: true
|
59
|
+
homepage: http://github.com/sutto/marvin
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
version:
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: "0"
|
76
|
+
version:
|
77
|
+
requirements:
|
78
|
+
- install the eventmachine gem to get better client support
|
79
|
+
rubyforge_project:
|
80
|
+
rubygems_version: 1.2.0
|
81
|
+
signing_key:
|
82
|
+
specification_version: 2
|
83
|
+
summary: Ruby IRC Library / Framework
|
84
|
+
test_files: []
|
85
|
+
|