cinch 0.2.3 → 0.2.5
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/README.rdoc +6 -5
- data/examples/autovoice.rb +32 -0
- data/examples/{custom_types.rb → custom_patterns.rb} +3 -4
- data/examples/memo.rb +40 -0
- data/lib/cinch.rb +1 -1
- data/lib/cinch/base.rb +10 -9
- data/spec/base_spec.rb +20 -4
- metadata +6 -4
data/README.rdoc
CHANGED
@@ -105,8 +105,8 @@ This method also works for arrays, to only reply to a message sent in the foo an
|
|
105
105
|
m.reply "Hello"
|
106
106
|
end
|
107
107
|
|
108
|
-
== Named Parameter
|
109
|
-
Since version 0.2, Cinch supports named parameter
|
108
|
+
== Named Parameter Patterns
|
109
|
+
Since version 0.2, Cinch supports named parameter patterns. It means stuff like the this works:
|
110
110
|
|
111
111
|
bot.plugin("say :n-digit :text") do |m|
|
112
112
|
m.args[:n].to_i.times {
|
@@ -121,11 +121,12 @@ This would provide the following output on IRC
|
|
121
121
|
Cinch> foo bar
|
122
122
|
Cinch> foo bar
|
123
123
|
|
124
|
-
* See Cinch::Base#compile for more information and the available
|
124
|
+
* See Cinch::Base#compile for more information and the available patterns
|
125
125
|
|
126
|
-
Cinch also supports custom
|
126
|
+
Cinch also supports custom named parameter patterns. That's right, you can define you own
|
127
|
+
pattern. Just like this:
|
127
128
|
|
128
|
-
bot.
|
129
|
+
bot.add_custom_pattern(:friends, "(injekt|lee|john|bob)")
|
129
130
|
|
130
131
|
bot.plugin("I like :friend-friends", :prefix => false) do |m|
|
131
132
|
m.reply "I like #{m.args[:friend]} too!"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'cinch'
|
2
|
+
|
3
|
+
# Give this bot ops in a channel and it'll auto voice
|
4
|
+
# visitors
|
5
|
+
#
|
6
|
+
# Enable with !autovoice on
|
7
|
+
# Disable with !autovoice off
|
8
|
+
|
9
|
+
bot = Cinch.setup do
|
10
|
+
server "irc.freenode.org"
|
11
|
+
channels %w( #cinch )
|
12
|
+
end
|
13
|
+
|
14
|
+
autovoice = true
|
15
|
+
|
16
|
+
bot.on :join do |m|
|
17
|
+
unless m.nick == bot.options.nick # We shouldn't attempt to voice ourselves
|
18
|
+
bot.mode(m.channel, '+v', m.nick) if autovoice
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
bot.add_custom_pattern(:onoff, '(on|off)')
|
23
|
+
|
24
|
+
bot.plugin "autovoice :option-onoff" do |m|
|
25
|
+
case m.args[:option]
|
26
|
+
when 'on'; autovoice = true
|
27
|
+
when 'off'; autovoice = false
|
28
|
+
end
|
29
|
+
m.answer "Autovoice is now #{autovoice ? 'enabled' : 'disabled'}"
|
30
|
+
end
|
31
|
+
|
32
|
+
bot.run
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require 'cinch'
|
1
|
+
require '/home/injekt/code/cinch/lib/cinch'
|
2
2
|
|
3
3
|
bot = Cinch.setup do
|
4
4
|
server "irc.freenode.org"
|
5
5
|
channels %w{ #cinch }
|
6
6
|
end
|
7
7
|
|
8
|
-
bot.
|
9
|
-
bot.
|
8
|
+
bot.add_custom_pattern(:friends, "(injekt|lee|john|bob)")
|
9
|
+
bot.add_custom_pattern(:hex, "([\\dA-Fa-f]+?)")
|
10
10
|
|
11
11
|
bot.plugin("I like :person-friends", :prefix => false) do |m|
|
12
12
|
m.reply "I like #{m.args[:person]} too!"
|
@@ -17,4 +17,3 @@ bot.plugin("checkhex :n-hex") do |m|
|
|
17
17
|
end
|
18
18
|
|
19
19
|
bot.run
|
20
|
-
|
data/examples/memo.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'cinch'
|
4
|
+
|
5
|
+
bot = Cinch.setup do
|
6
|
+
server "irc.freenode.org"
|
7
|
+
channels %w( #cinch )
|
8
|
+
end
|
9
|
+
|
10
|
+
class Memo < Struct.new(:nick, :channel, :text, :time)
|
11
|
+
def to_s
|
12
|
+
"[#{time.asctime}] <#{channel}/#{nick}> #{text}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
@memos = {}
|
17
|
+
|
18
|
+
bot.on :privmsg do |m|
|
19
|
+
if @memos.has_key?(m.nick)
|
20
|
+
bot.privmsg m.nick, @memos[m.nick].to_s
|
21
|
+
@memos.delete(m.nick)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
bot.plugin("memo :nick-string :memo") do |m|
|
26
|
+
nick = m.args[:nick]
|
27
|
+
|
28
|
+
if @memos.key?(nick)
|
29
|
+
m.reply "There's already a memo #{nick}. You can only store one right now"
|
30
|
+
elsif nick == m.nick
|
31
|
+
m.reply "You can't leave memos for yourself.."
|
32
|
+
elsif nick == bot.options.nick
|
33
|
+
m.reply "You can't leave memos for me.."
|
34
|
+
else
|
35
|
+
@memos[nick] = Memo.new(m.nick, m.channel, m.args[:memo], Time.new)
|
36
|
+
m.reply "Added memo for #{nick}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
bot.run
|
data/lib/cinch.rb
CHANGED
data/lib/cinch/base.rb
CHANGED
@@ -62,7 +62,7 @@ module Cinch
|
|
62
62
|
|
63
63
|
@rules = Rules.new
|
64
64
|
@listeners = {}
|
65
|
-
@
|
65
|
+
@custom_patterns = {}
|
66
66
|
|
67
67
|
@irc = IRC::Socket.new(options[:server], options[:port])
|
68
68
|
@parser = IRC::Parser.new
|
@@ -135,9 +135,9 @@ module Cinch
|
|
135
135
|
|
136
136
|
# This method builds a regular expression from your rule
|
137
137
|
# and defines all named parameters, as well as dealing with
|
138
|
-
#
|
138
|
+
# patterns.
|
139
139
|
#
|
140
|
-
# So far 3
|
140
|
+
# So far 3 patterns are supported:
|
141
141
|
#
|
142
142
|
# * word - matches [a-zA-Z_]+
|
143
143
|
# * string - matches \w+
|
@@ -197,8 +197,8 @@ module Cinch
|
|
197
197
|
when 'upper'; "([A-Z]+?)"
|
198
198
|
when 'lower'; "([a-z]+?)"
|
199
199
|
else
|
200
|
-
if @
|
201
|
-
@
|
200
|
+
if @custom_patterns.include?(type)
|
201
|
+
@custom_patterns[type]
|
202
202
|
else
|
203
203
|
"([^\x00\r\n]+?)"
|
204
204
|
end
|
@@ -220,15 +220,16 @@ module Cinch
|
|
220
220
|
# port 6667
|
221
221
|
# end
|
222
222
|
#
|
223
|
-
# bot.
|
223
|
+
# bot.add_custom_pattern(:number, "([0-9])")
|
224
224
|
#
|
225
225
|
# bot.plugin("getnum :foo-number") do |m|
|
226
226
|
# m.reply "Your number was: #{m.args[:foo]}"
|
227
227
|
# end
|
228
|
-
def
|
229
|
-
@
|
228
|
+
def add_custom_pattern(name, pattern)
|
229
|
+
@custom_patterns[name.to_s] = pattern.to_s
|
230
230
|
end
|
231
|
-
alias :
|
231
|
+
alias :add_custom_type :add_custom_pattern # backwards
|
232
|
+
alias :add_pattern :add_custom_pattern
|
232
233
|
|
233
234
|
# Run run run
|
234
235
|
def run
|
data/spec/base_spec.rb
CHANGED
@@ -82,19 +82,35 @@ describe "Cinch::Base" do
|
|
82
82
|
keys.should be_empty
|
83
83
|
end
|
84
84
|
|
85
|
-
it "should convert a digit
|
85
|
+
it "should convert a digit pattern" do
|
86
86
|
rule, keys = @base.compile(":foo-digit")
|
87
87
|
rule.should == "^(\\d+?)$"
|
88
88
|
end
|
89
89
|
|
90
|
-
it "should convert a string
|
90
|
+
it "should convert a string pattern" do
|
91
91
|
rule, keys = @base.compile(":foo-string")
|
92
92
|
rule.should == "^(\\w+?)$"
|
93
93
|
end
|
94
94
|
|
95
|
-
it "should convert a word
|
95
|
+
it "should convert a word pattern" do
|
96
96
|
rule, keys = @base.compile(":foo-word")
|
97
|
-
rule.should == "^([a-zA-
|
97
|
+
rule.should == "^([a-zA-Z_]+?)$"
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should convert a lowercase pattern" do
|
101
|
+
rule, keys = @base.compile(":foo-lower")
|
102
|
+
rule.should == "^([a-z]+?)$"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should convert an uppercase pattern" do
|
106
|
+
rule, keys = @base.compile(":foo-upper")
|
107
|
+
rule.should == "^([A-Z]+?)$"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should convert a custom pattern" do
|
111
|
+
@base.add_custom_pattern(:people, "(foo|bar|baz)")
|
112
|
+
rule, keys = @base.compile(":foo-people")
|
113
|
+
rule.should == "^(foo|bar|baz)$"
|
98
114
|
end
|
99
115
|
|
100
116
|
it "should automatically add start and end anchors" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 5
|
9
|
+
version: 0.2.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Lee 'injekt' Jarvis
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-28 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -59,9 +59,11 @@ files:
|
|
59
59
|
- lib/cinch/irc.rb
|
60
60
|
- examples/join_part.rb
|
61
61
|
- examples/msg.rb
|
62
|
-
- examples/
|
62
|
+
- examples/memo.rb
|
63
|
+
- examples/custom_patterns.rb
|
63
64
|
- examples/seen.rb
|
64
65
|
- examples/hello.rb
|
66
|
+
- examples/autovoice.rb
|
65
67
|
- examples/named-param-types.rb
|
66
68
|
has_rdoc: true
|
67
69
|
homepage: http://rdoc.injekt.net/cinch
|