sbfaulkner-net-irc 0.9.2 → 0.9.3

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/bin/nicl CHANGED
@@ -46,16 +46,19 @@ include Ansi
46
46
 
47
47
  def prompt(text)
48
48
  print text
49
- readline.chomp
49
+ STDIN.readline.chomp
50
50
  end
51
-
51
+
52
+ # TODO: a bit backwards... should probably be "Net::IRC.logger = logger"
53
+ logger = Net::IRC.logger
54
+
52
55
  Net::IRC.logger.level = Logger::DEBUG
53
56
  Net::IRC.logger.datetime_format = "%Y/%m/%d %H:%M:%S"
54
57
 
55
58
  Thread.abort_on_exception = true
56
59
 
57
60
  server = ARGV[0] || "irc.freenode.net"
58
- port = ARGV[1] || 6667
61
+ port = ARGV[1] && ARGV[1].to_i || 6667
59
62
  user = ARGV[2] || prompt('User: ')
60
63
  full_name = ARGV[3] || ARGV[2] || prompt('Full name: ')
61
64
 
@@ -115,6 +118,9 @@ Net::IRC.start user, full_name, server, port do |irc|
115
118
 
116
119
  when Net::IRC::ErrNeedreggednick
117
120
  irc.privmsg('nickserv', 'help')
121
+
122
+ when Net::IRC::RplLoggedin, Net::IRC::RplLoggedout
123
+ puts highlight(message.text, fg(CYAN))
118
124
 
119
125
  when Net::IRC::Error
120
126
  puts highlight("Unhandled ERROR: #{message.class} (#{message.command})", BOLD, fg(RED))
@@ -168,9 +174,9 @@ Net::IRC.start user, full_name, server, port do |irc|
168
174
  end
169
175
  end
170
176
 
171
- while line = readline
177
+ while line = STDIN.readline
172
178
  scanner = StringScanner.new(line.chomp)
173
- if command = scanner.scan(/\/([[:alpha:]]+)\s*/) && scanner[1]
179
+ if command = scanner.scan(/\/(\S+)\s*/) && scanner[1]
174
180
  case command.upcase
175
181
  when 'JOIN'
176
182
  # TODO: validate arguments... support for password... etc.
@@ -178,7 +184,7 @@ Net::IRC.start user, full_name, server, port do |irc|
178
184
 
179
185
  when 'MSG'
180
186
  # TODO: validate arguments... support for password... etc.
181
- scanner.scan(/(.+)\s+(.*)/)
187
+ scanner.scan(/([\S]+)\s+(.*)/)
182
188
  irc.privmsg(scanner[1], scanner[2])
183
189
  when 'PART'
184
190
  # TODO: validate arguments... support for password... etc.
@@ -0,0 +1,14 @@
1
+ ---
2
+ 14: RPL_YOURCOOKIE
3
+ 220: RPL_STATSPLINE
4
+ 224: RPL_STATSFLINE
5
+ 225: RPL_STATSDLINE
6
+ 246: RPL_STATSULINE
7
+ 247: RPL_STATSXLINE
8
+ 249: RPL_STATSDEBUG
9
+ 265: RPL_LOCALUSERS
10
+ 266: RPL_GLOBALUSERS
11
+ 385: RPL_NOTOPERANYMORE
12
+ 479: ERR_BADCHANNAME
13
+ 484: ERR_DESYNC
14
+ 503: ERR_GHOSTEDCLIENT
data/lib/net/irc.rb CHANGED
@@ -23,7 +23,7 @@ module Net
23
23
 
24
24
  PORT_DEFAULT = 6667
25
25
 
26
- VERSION = "0.9.2"
26
+ VERSION = "0.9.3"
27
27
 
28
28
  class CTCP
29
29
  attr_accessor :source, :target, :keyword, :parameters
@@ -147,7 +147,7 @@ module Net
147
147
  attr_reader :prefix
148
148
  attr_accessor :command, :parameters
149
149
 
150
- COMMAND_MAPS = %w(rfc1459 rfc2812 isupport hybrid ircu)
150
+ COMMAND_MAPS = %w(rfc1459 rfc2812 isupport hybrid ircu hyperion)
151
151
 
152
152
  def initialize(*args)
153
153
  raise ArgumentError, "wrong number of arguments (#{args.size} for 2)" if args.size < 2
@@ -486,6 +486,34 @@ module Net
486
486
  super(nil, 'ERR_NEEDREGGEDNICK', target, channel, text)
487
487
  end
488
488
  end
489
+
490
+ # 901 <target> <id> <username> <hostname> :You are now logged in. (id <id>, username <username>, hostname <hostname>)
491
+ class ReplyWithRegistryParameters < ReplyWithTarget
492
+ attr_accessor :id, :username, :hostname
493
+
494
+ def initialize(prefix, command, target, id, username, hostname, text)
495
+ @id = id
496
+ @username = username
497
+ @hostname = hostname
498
+
499
+ super(prefix, command, target, id, username, hostname, text)
500
+ end
501
+ end
502
+
503
+ # 901 <target> <id> <username> <hostname> :You are now logged in. (id <id>, username <username>, hostname <hostname>)
504
+ class RplLoggedin < ReplyWithRegistryParameters
505
+ def initialize(target, id, username, hostname, text)
506
+ super(nil, 'RPL_LOGGED_IN', target, id, username, hostname, text)
507
+ end
508
+ end
509
+
510
+ # 902 <target> <id> <username> <hostname> :You are now logged out. (id <id>, username <username>, hostname <hostname>)
511
+ class RplLoggedout < ReplyWithRegistryParameters
512
+ def initialize(target, id, username, hostname, text)
513
+ super(nil, 'RPL_LOGGED_OUT', target, id, username, hostname, text)
514
+ end
515
+ end
516
+
489
517
 
490
518
  # JOIN ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )
491
519
  # / "0"
data/lib/net/ircu.yml ADDED
@@ -0,0 +1,54 @@
1
+ ---
2
+ 8: RPL_SNOMASK
3
+ 9: RPL_STATMEMTOT
4
+ 10: RPL_STATMEM
5
+ 15: RPL_MAP
6
+ 16: RPL_MAPMORE
7
+ 17: RPL_MAPEND
8
+ 217: RPL_STATSPLINE
9
+ 228: RPL_STATSQLINE
10
+ 236: RPL_STATSVERBOSE
11
+ 237: RPL_STATSENGINE
12
+ 238: RPL_STATSFLINE
13
+ 246: RPL_STATSTLINE
14
+ 247: RPL_STATSGLINE
15
+ 248: RPL_STATSULINE
16
+ 250: RPL_STATSCONN
17
+ 270: RPL_PRIVS
18
+ 271: RPL_SILELIST
19
+ 272: RPL_ENDOFSILELIST
20
+ 275: RPL_STATSDLINE
21
+ 280: RPL_GLIST
22
+ 281: RPL_ENDOFGLIST
23
+ 282: RPL_JUPELIST
24
+ 283: RPL_ENDOFJUPELIST
25
+ 284: RPL_FEATURE
26
+ 330: RPL_WHOISACCOUNT
27
+ 333: RPL_TOPICWHOTIME
28
+ 334: RPL_LISTUSAGE
29
+ 338: RPL_WHOISACTUALLY
30
+ 340: RPL_USERIP
31
+ 354: RPL_WHOSPCRPL
32
+ 391: RPL_TIME
33
+ 416: ERR_QUERYTOOLONG
34
+ 437: ERR_BANNICKCHANGE
35
+ 438: ERR_NICKTOOFAST
36
+ 439: ERR_TARGETTOOFAST
37
+ 468: ERR_INVALIDUSERNAME
38
+ 477: ERR_NEEDREGGEDNICK
39
+ 493: ERR_NOFEATURE
40
+ 494: ERR_BADFEATURE
41
+ 495: ERR_BADLOGTYPE
42
+ 496: ERR_BADLOGSYS
43
+ 497: ERR_BADLOGVALUE
44
+ 498: ERR_ISOPERLCHAN
45
+ 511: ERR_SILELISTFULL
46
+ 513: ERR_BADPING
47
+ 514: ERR_INVALID_ERROR
48
+ 515: ERR_BADEXPIRE
49
+ 516: ERR_DONTCHEAT
50
+ 517: ERR_DISABLED
51
+ 518: ERR_LONGMASK
52
+ 519: ERR_TOOMANYUSERS
53
+ 520: ERR_MASKTOOWIDE
54
+ 524: ERR_QUARANTINED
@@ -0,0 +1,2 @@
1
+ ---
2
+ 5: RPL_ISUPPORT
@@ -0,0 +1,134 @@
1
+ ---
2
+ 200: RPL_TRACELINK
3
+ 201: RPL_TRACECONNECTING
4
+ 202: RPL_TRACEHANDSHAKE
5
+ 203: RPL_TRACEUNKNOWN
6
+ 204: RPL_TRACEOPERATOR
7
+ 205: RPL_TRACEUSER
8
+ 206: RPL_TRACESERVER
9
+ 208: RPL_TRACENEWTYPE
10
+ 209: RPL_TRACECLASS
11
+ 211: RPL_STATSLINKINFO
12
+ 212: RPL_STATSCOMMANDS
13
+ 213: RPL_STATSCLINE
14
+ 214: RPL_STATSNLINE
15
+ 215: RPL_STATSILINE
16
+ 216: RPL_STATSKLINE
17
+ 217: RPL_STATSQLINE
18
+ 218: RPL_STATSYLINE
19
+ 219: RPL_ENDOFSTATS
20
+ 221: RPL_UMODEIS
21
+ 231: RPL_SERVICEINFO
22
+ 232: RPL_ENDOFSERVICES
23
+ 233: RPL_SERVICE
24
+ 234: RPL_SERVLIST
25
+ 235: RPL_SERVLISTEND
26
+ 241: RPL_STATSLLINE
27
+ 242: RPL_STATSUPTIME
28
+ 243: RPL_STATSOLINE
29
+ 244: RPL_STATSHLINE
30
+ 251: RPL_LUSERCLIENT
31
+ 252: RPL_LUSEROP
32
+ 253: RPL_LUSERUNKNOWN
33
+ 254: RPL_LUSERCHANNELS
34
+ 255: RPL_LUSERME
35
+ 256: RPL_ADMINME
36
+ 257: RPL_ADMINLOC1
37
+ 258: RPL_ADMINLOC2
38
+ 259: RPL_ADMINEMAIL
39
+ 261: RPL_TRACELOG
40
+ 300: RPL_NONE
41
+ 301: RPL_AWAY
42
+ 302: RPL_USERHOST
43
+ 303: RPL_ISON
44
+ 305: RPL_UNAWAY
45
+ 306: RPL_NOWAWAY
46
+ 311: RPL_WHOISUSER
47
+ 312: RPL_WHOISSERVER
48
+ 313: RPL_WHOISOPERATOR
49
+ 314: RPL_WHOWASUSER
50
+ 315: RPL_ENDOFWHO
51
+ 316: RPL_WHOISCHANOP
52
+ 317: RPL_WHOISIDLE
53
+ 318: RPL_ENDOFWHOIS
54
+ 319: RPL_WHOISCHANNELS
55
+ 321: RPL_LISTSTART
56
+ 322: RPL_LIST
57
+ 323: RPL_LISTEND
58
+ 324: RPL_CHANNELMODEIS
59
+ 331: RPL_NOTOPIC
60
+ 332: RPL_TOPIC
61
+ 341: RPL_INVITING
62
+ 342: RPL_SUMMONING
63
+ 351: RPL_VERSION
64
+ 352: RPL_WHOREPLY
65
+ 353: RPL_NAMREPLY
66
+ 361: RPL_KILLDONE
67
+ 362: RPL_CLOSING
68
+ 363: RPL_CLOSEEND
69
+ 364: RPL_LINKS
70
+ 365: RPL_ENDOFLINKS
71
+ 366: RPL_ENDOFNAMES
72
+ 367: RPL_BANLIST
73
+ 368: RPL_ENDOFBANLIST
74
+ 369: RPL_ENDOFWHOWAS
75
+ 371: RPL_INFO
76
+ 372: RPL_MOTD
77
+ 373: RPL_INFOSTART
78
+ 374: RPL_ENDOFINFO
79
+ 375: RPL_MOTDSTART
80
+ 376: RPL_ENDOFMOTD
81
+ 381: RPL_YOUREOPER
82
+ 382: RPL_REHASHING
83
+ 384: RPL_MYPORTIS
84
+ 391: RPL_TIME
85
+ 392: RPL_USERSSTART
86
+ 393: RPL_USERS
87
+ 394: RPL_ENDOFUSERS
88
+ 395: RPL_NOUSERS
89
+ 401: ERR_NOSUCHNICK
90
+ 402: ERR_NOSUCHSERVER
91
+ 403: ERR_NOSUCHCHANNEL
92
+ 404: ERR_CANNOTSENDTOCHAN
93
+ 405: ERR_TOOMANYCHANNELS
94
+ 406: ERR_WASNOSUCHNICK
95
+ 407: ERR_TOOMANYTARGETS
96
+ 409: ERR_NOORIGIN
97
+ 411: ERR_NORECIPIENT
98
+ 412: ERR_NOTEXTTOSEND
99
+ 413: ERR_NOTOPLEVEL
100
+ 414: ERR_WILDTOPLEVEL
101
+ 421: ERR_UNKNOWNCOMMAND
102
+ 422: ERR_NOMOTD
103
+ 423: ERR_NOADMININFO
104
+ 424: ERR_FILEERROR
105
+ 431: ERR_NONICKNAMEGIVEN
106
+ 432: ERR_ERRONEUSNICKNAME
107
+ 433: ERR_NICKNAMEINUSE
108
+ 436: ERR_NICKCOLLISION
109
+ 441: ERR_USERNOTINCHANNEL
110
+ 442: ERR_NOTONCHANNEL
111
+ 443: ERR_USERONCHANNEL
112
+ 444: ERR_NOLOGIN
113
+ 445: ERR_SUMMONDISABLED
114
+ 446: ERR_USERSDISABLED
115
+ 451: ERR_NOTREGISTERED
116
+ 461: ERR_NEEDMOREPARAMS
117
+ 462: ERR_ALREADYREGISTRED
118
+ 463: ERR_NOPERMFORHOST
119
+ 464: ERR_PASSWDMISMATCH
120
+ 465: ERR_YOUREBANNEDCREEP
121
+ 466: ERR_YOUWILLBEBANNED
122
+ 467: ERR_KEYSET
123
+ 471: ERR_CHANNELISFULL
124
+ 472: ERR_UNKNOWNMODE
125
+ 473: ERR_INVITEONLYCHAN
126
+ 474: ERR_BANNEDFROMCHAN
127
+ 475: ERR_BADCHANNELKEY
128
+ 481: ERR_NOPRIVILEGES
129
+ 482: ERR_CHANOPRIVSNEEDED
130
+ 483: ERR_CANTKILLSERVER
131
+ 491: ERR_NOOPERHOST
132
+ 492: ERR_NOSERVICEHOST
133
+ 501: ERR_UMODEUNKNOWNFLAG
134
+ 502: ERR_USERSDONTMATCH
data/net-irc.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  SPEC = Gem::Specification.new do |s|
2
2
  # identify the gem
3
3
  s.name = "net-irc"
4
- s.version = "0.9.2"
4
+ s.version = "0.9.3"
5
5
  s.author = "S. Brent Faulkner"
6
6
  s.email = "brentf@unwwwired.net"
7
7
  s.homepage = "http://www.unwwwired.net"
@@ -9,7 +9,20 @@ SPEC = Gem::Specification.new do |s|
9
9
  s.platform = Gem::Platform::RUBY
10
10
  # description of gem
11
11
  s.summary = "a ruby implementation of the IRC client protocol"
12
- s.files = %w(bin/nicl lib/net/irc.rb lib/net/rfc2812.yml MIT-LICENSE Rakefile README.markdown net-irc.gemspec)
12
+ s.files = %w(
13
+ bin/nicl
14
+ lib/net/irc.rb
15
+ lib/net/hybrid.yml
16
+ lib/net/hyperion.yml
17
+ lib/net/ircu.yml
18
+ lib/net/isupport.yml
19
+ lib/net/rfc1459.yml
20
+ lib/net/rfc2812.yml
21
+ MIT-LICENSE
22
+ net-irc.gemspec
23
+ Rakefile
24
+ README.markdown
25
+ )
13
26
  s.require_path = "lib"
14
27
  s.autorequire = "net/irc"
15
28
  # s.test_file = "test/net-irc.rb"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sbfaulkner-net-irc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - S. Brent Faulkner
@@ -24,11 +24,16 @@ extra_rdoc_files:
24
24
  files:
25
25
  - bin/nicl
26
26
  - lib/net/irc.rb
27
+ - lib/net/hybrid.yml
28
+ - lib/net/hyperion.yml
29
+ - lib/net/ircu.yml
30
+ - lib/net/isupport.yml
31
+ - lib/net/rfc1459.yml
27
32
  - lib/net/rfc2812.yml
28
33
  - MIT-LICENSE
34
+ - net-irc.gemspec
29
35
  - Rakefile
30
36
  - README.markdown
31
- - net-irc.gemspec
32
37
  has_rdoc: true
33
38
  homepage: http://www.unwwwired.net
34
39
  post_install_message: