dragoon 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/TODO +5 -0
- data/lib/dragoon.rb +15 -12
- data/lib/dragoon/core_ext.rb +6 -0
- data/lib/dragoon/event_manager.rb +3 -1
- data/lib/dragoon/version.rb +1 -1
- metadata +4 -4
data/TODO
CHANGED
@@ -45,6 +45,11 @@ Helpful links
|
|
45
45
|
- http://www.paperplanes.de/2011/4/25/eventmachine-how-does-it-work.html (EM vs lower level socket prog, ie select, poll)
|
46
46
|
- http://cia.vc/doc/
|
47
47
|
- https://www6.software.ibm.com/developerworks/education/l-rubysocks/l-rubysocks-a4.pdf
|
48
|
+
- http://stackoverflow.com/questions/231647/how-do-i-set-the-socket-timeout-in-ruby
|
49
|
+
- http://peasleer.wordpress.com/2006/11/14/non-blocking-networking-in-ruby/
|
50
|
+
- http://www.troubleshooters.com/codecorn/sockets/ (socket read blocking in C)
|
51
|
+
|
52
|
+
- http://tomayko.com/writings/unicorn-is-unix
|
48
53
|
|
49
54
|
Ncurses
|
50
55
|
|
data/lib/dragoon.rb
CHANGED
@@ -23,7 +23,6 @@ module Dragoon
|
|
23
23
|
|
24
24
|
def_delegators :@event_manager, :on, :dispatch
|
25
25
|
|
26
|
-
DEFAULT_PORT = 6667
|
27
26
|
CONFIG_FILE = File.expand_path("~/.dragoon")
|
28
27
|
|
29
28
|
def initialize
|
@@ -37,18 +36,20 @@ module Dragoon
|
|
37
36
|
if File.exist?(CONFIG_FILE)
|
38
37
|
puts("*** Loading config file #{CONFIG_FILE}")
|
39
38
|
config = JSON.parse(File.read(CONFIG_FILE))
|
39
|
+
@network = config["network"]
|
40
|
+
@port = config["port"]
|
40
41
|
@nickname = config["nickname"]
|
41
42
|
@password = config["password"]
|
42
|
-
@network = config["network"]
|
43
43
|
@channels = config["channels"]
|
44
44
|
@keywords = config["keywords"]
|
45
45
|
else
|
46
46
|
|
47
47
|
config = (<<-EOF).gsub(/^\s{10}/,"")
|
48
48
|
{
|
49
|
+
"network": "chat.freenode.net",
|
50
|
+
"port": "6667",
|
49
51
|
"nickname": "fenix#{rand(10)}#{rand(10)}#{rand(10)}",
|
50
52
|
"password": "",
|
51
|
-
"network": "chat.freenode.net",
|
52
53
|
"channels": [
|
53
54
|
"#ubuntu",
|
54
55
|
"#ruby",
|
@@ -111,11 +112,11 @@ module Dragoon
|
|
111
112
|
end
|
112
113
|
|
113
114
|
on :privmsg do |msg|
|
114
|
-
if
|
115
|
+
if growlnotify_supported?
|
115
116
|
if keyword = @keywords.detect { |keyword| msg.text.include?(keyword) }
|
116
117
|
system("growlnotify " +
|
117
118
|
"-t \"#{msg.channel} - #{keyword}\" " +
|
118
|
-
"-m \"#{
|
119
|
+
"-m \"#{msg.privmsg.escape_double_quotes}\"")
|
119
120
|
end
|
120
121
|
end
|
121
122
|
puts "#{colorize(msg.channel)} <#{msg.nickname}> #{highlight_keywords(msg.privmsg,@keywords)}"
|
@@ -133,22 +134,24 @@ module Dragoon
|
|
133
134
|
end
|
134
135
|
|
135
136
|
def connect
|
136
|
-
puts "*** Connecting to #{@network} on port #{
|
137
|
+
puts "*** Connecting to #{@network} on port #{@port}"
|
137
138
|
puts "*** Press Ctrl + c to stop the program"
|
138
|
-
TCPSocket.new(@network,
|
139
|
-
end
|
140
|
-
|
141
|
-
def escape_double_quotes(text)
|
142
|
-
text.gsub("\"", "\\\"")
|
139
|
+
TCPSocket.new(@network, @port)
|
143
140
|
end
|
144
141
|
|
145
142
|
def stop
|
146
|
-
@socket.close
|
147
143
|
puts
|
148
144
|
puts "*** Program stopped"
|
145
|
+
@socket.close
|
149
146
|
exit
|
150
147
|
end
|
151
148
|
|
149
|
+
private
|
150
|
+
|
151
|
+
def growlnotify_supported?
|
152
|
+
@growlnotify_supported ||= system("which growlnotify > /dev/null")
|
153
|
+
end
|
154
|
+
|
152
155
|
end
|
153
156
|
end
|
154
157
|
|
data/lib/dragoon/core_ext.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
module Dragoon
|
2
|
+
# only supports a very basic one-to-one mapping of events
|
3
|
+
# currently no support for event heirarchy
|
2
4
|
class EventManager
|
3
5
|
|
4
6
|
attr_reader :handlers
|
5
7
|
|
6
8
|
def dispatch(event)
|
7
|
-
if @handlers.include?(event.name)
|
9
|
+
if @handlers.include?(event.name)
|
8
10
|
@handlers[event.name].call(event.message)
|
9
11
|
end
|
10
12
|
end
|
data/lib/dragoon/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dragoon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Reginald Tan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-02-
|
18
|
+
date: 2012-02-05 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rspec
|