[#24183] "yield called out of block" — Mark Slagell <ms@...>

Having just talked with a nuby in email, I believe this error message

27 messages 2001/11/02
[#24243] Re: "yield called out of block" — matz@... (Yukihiro Matsumoto) 2001/11/03

Hi,

[#24223] Too much eval evil? (tell me why I shouldn't do this) — gandy@... (Thomas Gandy)

I've been doodling with Ruby (experimenting with it in order to figure

13 messages 2001/11/02

[#24335] Joys of eval — Albert Wagner <alwagner@...>

A few weeks ago I posted a request for help with regexp, split, scan, et.

30 messages 2001/11/04
[#24337] Re: Joys of eval — Sean Middleditch <elanthis@...> 2001/11/04

On Sun, 2001-11-04 at 13:29, Albert Wagner wrote:

[#24338] Re: Joys of eval — Albert Wagner <alwagner@...> 2001/11/04

On Sunday 04 November 2001 12:43 pm, you wrote:

[#24339] Re: Joys of eval — Sean Middleditch <elanthis@...> 2001/11/04

On Sun, 2001-11-04 at 14:01, Albert Wagner wrote:

[#24340] Re: Joys of eval — Todd Gillespie <toddg@...> 2001/11/04

On Mon, 5 Nov 2001, Sean Middleditch wrote:

[#24351] Re: Joys of eval — Sean Middleditch <elanthis@...> 2001/11/04

On Sun, 2001-11-04 at 14:31, Todd Gillespie wrote:

[#24466] Why is ruby slow (compared to perl) — "Aqil Azmi" <aazmi@...>

Hello,

29 messages 2001/11/06
[#24688] Re: Why is ruby slow (compared to perl) — Sean Russell <ser@...> 2001/11/08

Niko Schwarz wrote:

[#24694] Re: Why is ruby slow (compared to perl) — Robert Feldt <feldt@...> 2001/11/08

On Fri, 9 Nov 2001, Sean Russell wrote:

[#24511] kill rdtool? — Stefan Nobis <stefan@...>

Hi.

51 messages 2001/11/07
[#24530] RE: kill rdtool? — "Mark Hahn" <mchahn@...> 2001/11/07

[#24534] Re: kill rdtool? — Pierre-Charles David <Pierre-Charles.David@...> 2001/11/07

Mark Hahn wrote:

[#24535] Re: kill rdtool? — "Mark Hahn" <mchahn@...> 2001/11/07

[#24536] Re: kill rdtool? — Eric Lee Green <eric@...> 2001/11/07

On Wednesday 07 November 2001 09:34 am, Mark Hahn wrote:

[#24538] Re: kill rdtool? — "Mark Hahn" <mchahn@...> 2001/11/07

[#24540] Re: kill rdtool? — Eric Lee Green <eric@...> 2001/11/07

On Wednesday 07 November 2001 10:04 am, Mark Hahn wrote:

[#24541] Re: kill rdtool? — "Mark Hahn" <mchahn@...> 2001/11/07

[#24542] Re: kill rdtool? — Eric Lee Green <eric@...> 2001/11/07

On Wednesday 07 November 2001 10:14 am, Mark Hahn wrote:

[#24666] I've ported the python nntplib class to Ruby. I will be adding comments to it soon. Here it is for public commentary and criticism — jheard <jheard@...>

require 'socket'

9 messages 2001/11/08

[#24698] ruby and webservices — Markus Jais <info@...>

hello

46 messages 2001/11/08
[#24715] Re: ruby and webservices — ptkwt@...1.aracnet.com (Phil Tomson) 2001/11/09

In article <9setsu$1378d4$1@ID-75083.news.dfncis.de>,

[#24730] Re: ruby and webservices — "Rich Kilmer" <rich@...> 2001/11/09

Actually...its me.

[#24801] Re: XML libraries (Re: Re: ruby and webservices) — Tobias Reif <tobiasreif@...> 2001/11/09

Yukihiro Matsumoto wrote:

[#24861] Re: XML libraries (Re: Re: ruby and webservices) — TAKAHASHI Masayoshi <maki@...> 2001/11/11

Hi,

[#24877] Re: XML libraries (Re: Re: ruby and webservices) — Bob Hutchison <hutch@...> 2001/11/11

On 01/11/11 2:20 AM, "TAKAHASHI Masayoshi" <maki@open-news.com> wrote:

[#24700] Strange behaviour of Array#[] — Michael Neumann <neumann@...>

Hi,

12 messages 2001/11/08

[#24750] BUG: net/telnet.rb gives select invalid argument excepition — Ville Mattila <mulperi@...>

20 messages 2001/11/09

[#24810] Ruby-Tk; feature/bug/misunderstanding? mouse-location during when a key is pressed in the presence of TkMenubutton — Armin Roehrl <armin@...>

Hi,

8 messages 2001/11/09

[#24820] ANN: Triple-R - The Rubicon Results Repository — Dave Thomas <Dave@...>

16 messages 2001/11/10

[#24926] XML support in the standard lib — Tobias Reif <tobiasreif@...>

Hi,

128 messages 2001/11/12
[#24928] Re: XML support in the standard lib — Bob Hutchison <hutch@...> 2001/11/12

[#25011] Re: XML support in the standard lib; what exactly? — Tobias Reif <tobiasreif@...> 2001/11/13

PaulC wrote:

[#25014] Re: XML support in the standard lib; what exactly? — Tobias Reif <tobiasreif@...> 2001/11/13

P.S.

[#25023] Re: XML support in the standard lib; what exactly? — Bob Hutchison <hutch@...> 2001/11/13

On 01/11/13 9:56 AM, "Tobias Reif" <tobiasreif@pinkjuice.com> wrote:

[#25027] Re: XML support in the standard lib; what exactly? — Tobias Reif <tobiasreif@...> 2001/11/13

Bob Hutchison wrote:

[#25037] Re: XML support in the standard lib; what exactly? — Bob Hutchison <hutch@...> 2001/11/13

On 01/11/13 11:21 AM, "Tobias Reif" <tobiasreif@pinkjuice.com> wrote:

[#25018] Re: XML support in the standard lib; what exactly? — "Nat Pryce" <nat.pryce@...13media.com> 2001/11/13

The DOM is a pretty awkward API to both use and implement. An API based on

[#25126] Re: XML support in the standard lib; what exactly? — "James Britt (rubydev)" <james@...> 2001/11/14

>

[#25138] Re: XML support in the standard lib; what exactly? — "Simon St.Laurent" <simonstl@...> 2001/11/14

On Tue, 2001-11-13 at 20:53, James Britt (rubydev) wrote:

[#25151] Re: XML support in the standard lib; whatexactly? — "James Britt (rubydev)" <james@...> 2001/11/14

[#25202] Re: XML support in the standard lib;whatexactly? — "Nat Pryce" <nat.pryce@...13media.com> 2001/11/14

From: "Simon St.Laurent" <simonstl@simonstl.com>

[#25231] Re: XML support in the standard lib;whatexactly? — "James Britt (rubydev)" <james@...> 2001/11/15

[#25250] Re: XML support in the standard lib;whatexactly? — Tobias Reif <tobiasreif@...> 2001/11/15

James Britt (rubydev) wrote:

[#25251] Re: XML support in the standard lib;whatexactly? — Robert Feldt <feldt@...> 2001/11/15

On Thu, 15 Nov 2001, Tobias Reif wrote:

[#25020] Re: XML support in the standard lib; what exactly? — Robert Feldt <feldt@...> 2001/11/13

On Wed, 14 Nov 2001, Nat Pryce wrote:

[#25059] Re: XML support in the standard lib; what exactly? — Sean Russell <ser@...> 2001/11/13

Robert Feldt wrote:

[#25078] Re: XML support in the standard lib; what exactly? — Robert Feldt <feldt@...> 2001/11/13

On Wed, 14 Nov 2001, Sean Russell wrote:

[#25080] Re: XML support in the standard lib; what exactly? — Tobias Reif <tobiasreif@...> 2001/11/13

Hi all XMLers,

[#25102] Re: XML support in the standard lib; what exactly? — David Alan Black <dblack@...> 2001/11/13

Hello --

[#25157] Re: XML support in the standard lib; what exactly? — Tobias Reif <tobiasreif@...> 2001/11/14

Dave Thomas wrote:

[#25170] Re: XML support in the standard lib; what exactly? — chad fowler <chadfowler@...> 2001/11/14

[#24948] Refactoring tool for Ruby... — Stephan K舂per <Stephan.Kaemper@...>

Just being curious if someone has worked on a refactoring tool for

12 messages 2001/11/12

[#24955] Teach your kid math w/ruby — pete@... (Peter J. Kernan)

14 messages 2001/11/12

[#24958] Linux Magazine article — Dave Thomas <Dave@...>

53 messages 2001/11/12
[#26103] Re: Linux Magazine article — "Bill Kelly" <billk@...> 2001/11/22

[#26116] Re: Linux Magazine article — Jos Backus <josb@...> 2001/11/22

On Thu, Nov 22, 2001 at 10:20:04AM +0900, Bill Kelly wrote:

[#25029] Set class in Ruby — Yuri Leikind <YuriLeikind@...>

Hello all Ruby coders,

18 messages 2001/11/13

[#25082] exiting blox — Niko Schwarz <niko.schwarz@...>

Hi there,

17 messages 2001/11/13

[#25101] ANN: REXML 1.1a3 — Sean Russell <ser@...>

Hiho,

23 messages 2001/11/13

[#25276] GC question — Tony Smith <tony@...>

Hi there!

20 messages 2001/11/15
[#25777] Ruby in windows — "Mark Hahn" <mchahn@...> 2001/11/18

[#25788] RE: Ruby in windows — "Mark Hahn" <mchahn@...> 2001/11/18

This is what I get from command line:

[#25291] Re: ANN: REXML 1.1a3 — Ben Schumacher <BSchumacher@...>

Tobias Reif wrote:

24 messages 2001/11/15

[#25383] Arrays, iterators, and map/collect — "Hal E. Fulton" <hal9000@...>

Hello all...

12 messages 2001/11/16

[#25432] Why not xmlparser? (was: Re: XML support in the standard lib;whatexactly?) — "Christian Boos" <cboos@...>

32 messages 2001/11/16
[#25678] RE: Why not xmlparser? (was: Re: XML support in the standard lib;whatexactly?) — "James Britt (rubydev)" <james@...> 2001/11/16

> I may have missed something, but the original question that started the

[#25722] RE: Why not xmlparser? (was: Re: XML support in the standard lib;whatexactly?) — Sean Russell <ser@...> 2001/11/17

James Britt (rubydev) wrote:

[#25732] Re: Why not xmlparser? (was: Re: XML support in the standard lib;whatexactly?) — "James Britt (rubydev)" <james@...> 2001/11/17

>

[#25850] Re: Why not xmlparser? (was: Re: XML support in the standard lib;whatexactly?) — Sean Russell <ser@...> 2001/11/19

James Britt (rubydev) wrote:

[#25689] Would like feedback on script to remove unused import statements in java — "Thomas R. Corbin" <tc@...>

I use this script all the time when developing in java, it really helps a

20 messages 2001/11/17
[#25829] Re: Would like feedback on script to remove unused import statements in java — "Ralph Mason" <ralph.mason@...> 2001/11/19

Is there any documentation on this anywhere?

[#25830] Re: Would like feedback on script to remove unused import statements in java — ts <decoux@...> 2001/11/19

>>>>> "R" == Ralph Mason <ralph.mason@telogis.com> writes:

[#25916] Why the appended '\n' in IO.readlines — Jim Freeze <jim@...> 2001/11/20

Hi

[#25753] Misunderstanding or bug? — Dave Thomas <Dave@...>

18 messages 2001/11/18

[#25808] KDE or GNOME curiosity question... — Robert Hicks <bobhicks@...>

I was just curious which desktop (of the two mentioned in the subject)

80 messages 2001/11/19
[#26360] Re: [OT] Re: KDE or GNOME curiosity question... — "Bill Kelly" <billk@...> 2001/11/24

[#26374] Re: [OT] Re: KDE or GNOME curiosity question... — "Mark Hahn" <mchahn@...> 2001/11/24

[#26518] Re: [OT] Re: KDE or GNOME curiosity question... — Paul Brannan <pbrannan@...> 2001/11/26

> How hard would it be to have an option to use reference counting in a

[#26544] Re: [OT] Re: KDE or GNOME curiosity question... — "mark hahn" <mchahn@...> 2001/11/26

> Circular references will cause the object to stay around indefinitely

[#26746] Re: [OT] Re: KDE or GNOME curiosity question... — matz@... (Yukihiro Matsumoto) 2001/11/28

Hi,

[#26825] RE: Ref Counting (was KDE or GNOME curiosity question...) — "Mark Hahn" <mchahn@...> 2001/11/28

[#26827] Re: Ref Counting (was KDE or GNOME curiosity question...) — "Matt Armstrong" <matt+dated+1007407366.0f6d51@...> 2001/11/28

"Mark Hahn" <mchahn@facelink.com> writes:

[#25861] A bug invoking a method with send? — chr_news@... (chr_news@...)

Hi,

12 messages 2001/11/19

[#25907] String#== : Why not error with different type? — furufuru@... (Ryo Furue)

Hi there,

17 messages 2001/11/20

[#25954] a quick question — Tobias DiPasquale <anany@...>

Hi all,

21 messages 2001/11/20
[#25959] PocketPC — "Chad Fowler" <chadfowler@...> 2001/11/20

Has anyone gotten Ruby running (perhaps in some limited form) on the

[#26006] R: Re: Hello World considered harmful — Alessandro Caruso <a.caruso@...>

I thought the main reason people are moving towards Ruby instead of keep

19 messages 2001/11/21
[#26023] Re: R: Re: Hello World considered harmful — Dave Thomas <Dave@...> 2001/11/21

Alessandro Caruso <a.caruso@creditonline.it> writes:

[#26029] Re: R: Re: Hello World considered harmful — Erik B虍fors <erik@...> 2001/11/21

On Wed, 2001-11-21 at 15:31, Dave Thomas wrote:

[#26126] Conformance Test of XML Parsers in Ruby(20011122) — TAKAHASHI Masayoshi <maki@...>

Hi all,

27 messages 2001/11/22
[#26128] Re: Conformance Test of XML Parsers in Ruby(20011122) — Tobias Reif <tobiasreif@...> 2001/11/22

TAKAHASHI Masayoshi wrote:

[#26134] Re: Conformance Test of XML Parsers in Ruby(20011122) — David Alan Black <dblack@...> 2001/11/22

Hello --

[#26145] Re: Conformance Test of XML Parsers in Ruby(20011122) — Kevin Smith <kevinbsmith@...> 2001/11/22

--- David Alan Black <dblack@candle.superlink.net

[#26181] Re: NQXML Conformance (was Re: Conformance Test of XML Parsers in Ruby(20011122)) — martin@... (Martin v. Loewis) 2001/11/22

Jim Menard <jimm@io.com> writes:

[#26141] Passing class names to constructors. — Hugh Sasse Staff Elec Eng <hgs@...>

If I want to create a variable number of objects, all of

14 messages 2001/11/22

[#26205] Book "Rub in 21 days" Table of contents online — Markus Jais <mjais@...>

hi

17 messages 2001/11/23

[#26214] generating and serving SVG — Tobias Reif <tobiasreif@...>

Hi,

39 messages 2001/11/23
[#26215] Re: generating and serving SVG — Robert Feldt <feldt@...> 2001/11/23

On Fri, 23 Nov 2001, Tobias Reif wrote:

[#26270] Table: Ruby versus Smalltalk, Objective-C, C++, Java; — Armin Roehrl <armin@...>

Hi,

28 messages 2001/11/24

[#26293] The results are in... — Dave Thomas <Dave@...>

28 messages 2001/11/24
[#26365] Re: The results are in... — Albert Wagner <alwagner@...> 2001/11/24

<snip>

[#26377] Re: The results are in... — Robert Feldt <feldt@...> 2001/11/24

On Sun, 25 Nov 2001, Albert Wagner wrote:

[#26389] Re: The results are in... — Albert Wagner <alwagner@...> 2001/11/25

On Saturday 24 November 2001 05:03 pm, you wrote:

[#26391] Re: The results are in... — Robert Feldt <feldt@...> 2001/11/25

On Sun, 25 Nov 2001, Albert Wagner wrote:

[#26337] Re: Table: Ruby versus Smalltalk, Objective-C, C++, Java; — "john%johnknight.com@..." <john%johnknight.com@...>

16 messages 2001/11/24

[#26362] Selector Namespaces: A Standard Feature for Smalltalk? — "David Simmons" <david.simmons@...>

Here is an incentive for classic Smalltalk evolution...

26 messages 2001/11/24

[#26537] Ruby vs. Python: Decisions, Decisions — "Bob Calco" <rcalco@...>

Everyone:

32 messages 2001/11/26

[#26557] Re: Ruby vs. Python: Decisions, Decisions — "Mike Wilson" <wmwilson01@...>

21 messages 2001/11/26

[#26651] Vote in the current poll! — Robert Feldt <feldt@...>

Hi,

26 messages 2001/11/27
[#26685] Re: Vote in the current poll! — ptkwt@...1.aracnet.com (Phil Tomson) 2001/11/27

In article <Pine.GSO.4.21.0111271419390.9896-100000@godzilla.ce.chalmers.se>,

[#26702] Re: Vote in the current poll! — Robert Feldt <feldt@...> 2001/11/27

On Wed, 28 Nov 2001, Phil Tomson wrote:

[#26752] Anyone know of a Regexp pattern random string generator? — "Ross Shaw" <rshaw1961@...>

I'm looking for some Ruby that given a Regexp pattern will generate a random

10 messages 2001/11/28

[#26782] RE: overload possible? — Wyss Clemens <WYS@...>

No, UNLESS you ask Guy Decoux (ts) to give you his *extension*

31 messages 2001/11/28
[#26791] Re: overload possible? — ts <decoux@...> 2001/11/28

>>>>> "W" == Wyss Clemens <WYS@helbling.ch> writes:

[#26792] Re: overload possible? — Robert Feldt <feldt@...> 2001/11/28

On Wed, 28 Nov 2001, ts wrote:

[#26847] Re: overload possible? — "Harry Ohlsen" <harryo@...> 2001/11/28

Here's a slightly better version, which also fixes the problem that

[#26860] Re: overload possible? — nobu.nokada@... 2001/11/29

At Thu, 29 Nov 2001 08:13:36 +0900,

[#26861] Re: overload possible? — "Rich Kilmer" <rich@...> 2001/11/29

excellent idea...how about this refactoring...

[#26894] short article draft for review — Tobias Reif <tobiasreif@...>

Hi,

26 messages 2001/11/29
[#26898] Re: short article draft for review — David Alan Black <dblack@...> 2001/11/29

Hi --

[#26899] Re: short article draft for review — Tobias Reif <tobiasreif@...> 2001/11/29

David,

[#26902] Re: short article draft for review — David Alan Black <dblack@...> 2001/11/29

Hi --

[#26973] thoughts on virtual base classes, interfaces — ptkwt@...1.aracnet.com (Phil Tomson)

16 messages 2001/11/29

[#26976] first class functions in Ruby — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>

In the thread on language design, I mentioned a wish for functions as first

15 messages 2001/11/29

[#26984] Can someone explain TupleSpaces? — ptkwt@...1.aracnet.com (Phil Tomson)

I looked at the examples that came with drb, but I'm still not quite

16 messages 2001/11/29

[#27054] Using Enumerable — Peter Hickman <peter@...>

Im trying to write my own each method for a 'sort of' range class that

19 messages 2001/11/30
[#27057] Re: Using Enumerable — David Alan Black <dblack@...> 2001/11/30

Hello --

[#27060] Re: Using Enumerable — Peter Hickman <peter@...> 2001/11/30

Thanks to all who replied, like all ruby it was alot simpler than I

[#27066] Musing — Dave Thomas <Dave@...>

32 messages 2001/11/30
[#27079] RE: Musing — "Rich Kilmer" <rich@...> 2001/11/30

Do it Dude!

[ruby-talk:24793] Re: I've ported the python nntplib class to Ruby. more bugfixes.

From: jheard <jheard@...>
Date: 2001-11-09 19:28:26 UTC
List: ruby-talk #24793
#########################################################################################################
# 
# nntp.rb - an NNTP client implementing RFC 977 - the Network News Transfer Protocol
# ported from the Python code by Jefferson Heard
#
# this software is released under the terms of the GNU Library General Public License verson 2 or greater
# or whatever license our benevolent dictatorm Matsumoto-san, chooses.
#
# (C) 2001, Jefferson Heard
#
# Revision History:
#   11-7-2001: Initial revision
#   11-9-2001: made getresp, getlongresp, shortcmd, longcmd protected
#              and made getline, startparse, and putline private
#
##########################################################################################################

require 'socket'

module Net

# Exceptions raised by NNTP

class NNTPError < RuntimeError; end
class NNTPReplyError < NNTPError; end
class NNTPTemporaryError < NNTPError; end
class NNTPPermanentError < NNTPError; end
class NNTPDataError < NNTPError; end

class NNTP
  NNTP_PORT = 119
  LONGRESP = ['100', '215', '220', '221', '222', '224', '230', '231', '282']
  CRLF = "\r\n"

  def initialize(host, port=NNTP_PORT, user=nil, password=nil, readermode=nil)
    @debuglevel = 0
    @host = host
    if port then @port = port else @port = NNTP_PORT end
    @socket = TCPSocket.new @host, @port
    @welcome = getresp
    readermode_afterauth = false

    if readermode
      begin
      @welcome = shortcmd('mode reader')
      rescue NNTPPermanentError
      rescue NNTPTemporaryError 
        if user and $!.response[0...3] == '480'
          readermode_afterauth = true
        else 
          raise
        end
      end
    end
      
    if user
      resp = shortcmd "authinfo user #{user}"
      if resp[0...3] == '381' # then we need a password
        raise NNTPReplyError, resp, caller unless password
        resp = shortcmd "authinfo pass #{password}"
        raise NNTPPermanentError, resp, caller unless resp[0...3] == '281'
      end
    end

    if readermode_afterauth
    begin
      @welcome = shortcmd('mode reader')
      rescue NNTPPermanentError
    end
    end
    
  end

  def welcome
    puts "*welcome*, #{@welcome}" if @debuglevel > 0
    return @welcome
  end

  attr_writer :debuglevel

  def putline(line)
    
    print "*put* #{line}" if @debuglevel > 1
    @socket.send "#{line}\r\n", 0
  end

  def putcmd(cmd)
    puts "*cmd* #{cmd}" if @debuglevel > 0 
    @socket.send "#{cmd}\r\n", 0
  end

  def getline
    puts "*getline*" if @debuglevel > 1
    line = ''
    line.concat @socket.recv 1 until line.length > 2 and line[-1] == "\n" or line[-2..-1] == CRLF 
    line = line[0...-2] if line[-2..-1] == CRLF
    line = line[0...-1] if CRLF.include? line[-1] 
    return line
  end

  def getresp
    resp = getline
    puts "*getresp* #{resp}" if @debuglevel > 0
    c = resp[0]
    case c
      when c == '4' then raise NNTPTemporaryError, resp, caller
      when c == '5' then raise NNTPPermanentError, resp, caller
      when '123'.include?(c) then raise NNTPProtocolError, resp, caller
    end
    return resp
  end

  def getlongresp   
    resp = getresp
    raise NNTPReplyError, resp, caller unless LONGRESP.include? resp[0...3]
    list = []
    while true
      line = getline
      break if line == '.'
      line = line[1..-1] if line[0...2] == '..'
      list << line
    end
    return resp, list
  end

  def shortcmd(line)
    putcmd line
    return getresp
  end

  def longcmd(line)
    putcmd line
    return getlongresp
  end

  def newgroups(date, time)
    return longcmd "NEWGROUPS #{date.to_s} #{time.to_s}"
  end

  def newnews(group, date, time)
    return longcmd "NEWNEWS #{group} #{date.to_s} #{time.to_s}"
  end

  def list
    resp, list = longcmd "LIST" 
    list.each_index {|ix| 
      list[ix] = list[ix].split " "
    }
    return resp, list
  end

  def group(name)
    resp = shortcmd "GROUP #{name}"
    raise NNTPReplyError, resp, caller unless resp[0...3] == '211'
    words = resp.split " "
    count, first, last = 0
    n = words.length
    if n>1
      count = words[0]
      if n>2
        first = words[1]
        if n>3
          last = words[2]
          if n>4
            name = words[3].downcase
          end
       end
     end
    end
    return resp, count, first, last, name
  end

  def help
    return longcmd "HELP"
  end

  def startparse(resp)
    raise NNTPReplyError, resp, caller if resp[0...2] == '22'
    words = resp.split " "
    nr = 0
    id = ''
    n = words.length
    if n>1
      nr = words[0]
      if n>2
        id = words[1]
      end
    end
    return resp, nr, id
  end

  def statcmd(line)
    resp = shortcmd line
    return startparse.resp
  end
  
  def stat(id)
    return statcmd "STAT #{id}"
  end
 
  def next
    return statcmd "NEXT"
  end
  
  def last
    return statcmd "LAST"
  end

  def articlecmd(line)
    resp, list = longcmd line
    resp, nr, id = startparse(resp)
    return resp, nr, id, list
  end

  def head(id)
    return artcmd "HEAD #{id}"
  end      

  def body(id)
    return artcmd "BODY #{id}"
  end

  def article(id)
    return artcmd "ARTICLE #{id}"
  end
 
  def slave(id)
    return shortcmd "SLAVE"
  end

  def xhdr(hdr, str)
    pat = Regexp.new '^([0-9]+)?(.*)\n?'
    resp, lines = longcmd "XHDR #{hdr} #{str}"
    lines.each_index {|ix|
      line = lines[ix]
      m = pat.match line
      lines[i] = m[1..2]
    }
    return resp, lines
  end

  def xover(start, ed)
    begin
    resp, lines = lingcmd "XOVER #{start}-#{ed}"
    xover_lines = []
    lines.each {|line|
      elements = line.split "\t"
      elements[5].split! " "
      0.upto(7) {|ix| xover_lines << element[ix]}
    }
    return resp, xover_lines
    rescue RuntimeError
      raise NNTPDataError line, caller
    end
  end

  def xgtitle(group) 
    line_pat = Regexp.new "^([^\t]+)[\t]+(.*)$"
    resp, raw_lines = longcmd "XGTITLE #{group}"
    lines = []
    raw_lines.each {|line|
      match = line_pat.match line.strip
      lines << match[1..2] if match
    }
    return resp, lines
  end
  
  def date
    resp = shortcmd "DATE"
    raise NNTPReplyError unless resp[0...3] == '111'
    resp.split! " "
    raise NNTPDataError unless resp.length == 2
    date = resp[1][2...8]
    time = resp[1][-6..-1]
    raise NNTPDataError resp, caller unless date.length == 6 and time.length == 6
    return resp, date, time
  end

  def post(f)
    resp = shortcmd "POST"
    raise NNTPReplyError unless resp[0] == 3
    lines = f.readlines
    lines.each {|line| 
       line.chop!
       line = '.' + line if line[0] == '.'
       putline line
    }
    putline '.'
    return getresp
  end

  def quit
    resp = shortcmd "QUIT"
    @socket.close_read
    @socket.close_write
    return resp
  end

  private :shortcmd, :startparse, :getline, :putline
  protected :shortcmd, :longcmd, :getresp, :getlongresp
end

end

if __FILE__ == $0 
   s = Net::NNTP.new('news.prodigy.net', 119, 'giddybug', 'sycamore')
   resp, count, first, last, name = s.group('comp.lang.ruby')
   puts resp
   puts "group #{name} has #{count} articles, range #{first} to #{last}"
   resp, subs = s.xhdr('subject', "#{first}-#{last}")
   puts resp
   subs.each do |sub| puts sub end
   resp = s.quit
   puts resp
end



In This Thread