sbfaulkner-net-irc 0.9.3 → 0.9.4

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
@@ -44,9 +44,38 @@ end
44
44
 
45
45
  include Ansi
46
46
 
47
- def prompt(text)
48
- print text
49
- STDIN.readline.chomp
47
+ begin
48
+ require 'termios'
49
+ # real implementation for toggling echo
50
+ def echo(on = true)
51
+ oldt = Termios.tcgetattr(STDIN)
52
+ newt = oldt.dup
53
+ newt.lflag &= ~Termios::ECHO
54
+ Termios.tcsetattr(STDIN, Termios::TCSANOW, newt)
55
+
56
+ # if no block is provided, return the original echo setting
57
+ return (oldt.lflag & Termios::ECHO) == Termios::ECHO unless block_given?
58
+
59
+ # otherwise yield to the block and restore the original echo setting
60
+ ret = yield
61
+ Termios.tcsetattr(STDIN, Termios::TCSANOW, oldt)
62
+ ret
63
+ end
64
+ rescue LoadError
65
+ # minimal stub in case Termios is not installed
66
+ def echo(on = true)
67
+ return true unless block_given?
68
+ yield
69
+ end
70
+ end
71
+
72
+ def prompt(text, hidden = false)
73
+ echo(false) do
74
+ print text
75
+ line = STDIN.readline.chomp
76
+ print "\n"
77
+ line
78
+ end
50
79
  end
51
80
 
52
81
  # TODO: a bit backwards... should probably be "Net::IRC.logger = logger"
@@ -61,8 +90,9 @@ server = ARGV[0] || "irc.freenode.net"
61
90
  port = ARGV[1] && ARGV[1].to_i || 6667
62
91
  user = ARGV[2] || prompt('User: ')
63
92
  full_name = ARGV[3] || ARGV[2] || prompt('Full name: ')
93
+ password = ARGV[4] || prompt('Password: ', true)
64
94
 
65
- Net::IRC.start user, full_name, server, port do |irc|
95
+ Net::IRC.start user, password, full_name, server, port do |irc|
66
96
  Thread.new do
67
97
  irc.each do |message|
68
98
  case message
@@ -120,7 +150,7 @@ Net::IRC.start user, full_name, server, port do |irc|
120
150
  irc.privmsg('nickserv', 'help')
121
151
 
122
152
  when Net::IRC::RplLoggedin, Net::IRC::RplLoggedout
123
- puts highlight(message.text, fg(CYAN))
153
+ puts highlight(message.text, fg(GREEN))
124
154
 
125
155
  when Net::IRC::Error
126
156
  puts highlight("Unhandled ERROR: #{message.class} (#{message.command})", BOLD, fg(RED))
@@ -184,7 +214,7 @@ Net::IRC.start user, full_name, server, port do |irc|
184
214
 
185
215
  when 'MSG'
186
216
  # TODO: validate arguments... support for password... etc.
187
- scanner.scan(/([\S]+)\s+(.*)/)
217
+ scanner.scan(/(\S+)\s+(.*)/)
188
218
  irc.privmsg(scanner[1], scanner[2])
189
219
  when 'PART'
190
220
  # TODO: validate arguments... support for password... etc.
@@ -195,7 +225,7 @@ Net::IRC.start user, full_name, server, port do |irc|
195
225
  else
196
226
  puts highlight("Unknown COMMAND: #{command}", BOLD, fg(RED))
197
227
  end
198
- elsif scanner.scan(/(.+)\s+(.*)/)
228
+ elsif scanner.scan(/(\S+)\s+(.*)/)
199
229
  irc.privmsg(scanner[1], scanner[2])
200
230
  else
201
231
  # TODO: error? need a concept of a current room
@@ -0,0 +1,3 @@
1
+ ---
2
+ 901: RPL_LOGGEDIN
3
+ 902: RPL_LOGGEDOUT
data/lib/net/irc.rb CHANGED
@@ -673,8 +673,8 @@ module Net
673
673
  end
674
674
 
675
675
  class << self
676
- def start(user, realname, address, port = nil, &block)
677
- new(address, port).start(user, realname, &block)
676
+ def start(user, password, realname, address, port = nil, &block)
677
+ new(address, port).start(user, password, realname, &block)
678
678
  end
679
679
  end
680
680
 
@@ -689,18 +689,18 @@ module Net
689
689
  @started
690
690
  end
691
691
 
692
- def start(user, realname, nickname = nil)
692
+ def start(user, password, realname, nickname = nil)
693
693
  raise IOError, 'IRC session already started' if started?
694
694
 
695
695
  if block_given?
696
696
  begin
697
- do_start(user, realname, nickname)
697
+ do_start(user, password, realname, nickname)
698
698
  return yield(self)
699
699
  ensure
700
700
  do_finish
701
701
  end
702
702
  else
703
- do_start(user, realname, nickname)
703
+ do_start(user, password, realname, nickname)
704
704
  return self
705
705
  end
706
706
  end
@@ -782,6 +782,10 @@ module Net
782
782
  Part.new(Array(channels).join(','))
783
783
  end.write(@socket)
784
784
  end
785
+
786
+ def pass(password)
787
+ Pass.new(password).write(@socket)
788
+ end
785
789
 
786
790
  def pong(server, target = nil)
787
791
  Pong.new(server, target).write(@socket)
@@ -800,9 +804,9 @@ module Net
800
804
  end
801
805
 
802
806
  private
803
- def do_start(user, realname, nickname = nil)
807
+ def do_start(user, password, realname, nickname = nil)
804
808
  @socket = InternetMessageIO.old_open(@address, @port)
805
- # TODO: Pass.new(password).write(@socket)
809
+ pass(password) unless password.nil? || password.empty?
806
810
  nick(user)
807
811
  user(user, realname)
808
812
  @started = true
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.3"
4
+ s.version = "0.9.4"
5
5
  s.author = "S. Brent Faulkner"
6
6
  s.email = "brentf@unwwwired.net"
7
7
  s.homepage = "http://www.unwwwired.net"
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.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - S. Brent Faulkner
@@ -9,7 +9,7 @@ autorequire: net/irc
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-13 00:00:00 -07:00
12
+ date: 2008-12-22 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15