[#86984] Attempted roadmap of future instance variables.... — "David A. Black" <dblack@...>

Hi --

81 messages 2003/12/02
[#86998] Re: Attempted roadmap of future instance variables.... — Steve Tuckner <STUCKNER@...> 2003/12/02

So what is the relationship between @_ vars and @vars that are defined in a

[#87001] Re: Attempted roadmap of future instance variables.... — "David A. Black" <dblack@...> 2003/12/02

Hi --

[#87006] Re: Attempted roadmap of future instance variables.... — Steve Tuckner <STUCKNER@...> 2003/12/02

Maybe I am being dense, so bear with me...

[#87011] Re: Attempted roadmap of future instance variables.... — Lyle Johnson <lyle@...> 2003/12/02

Steve Tuckner wrote:

[#87013] Re: Attempted roadmap of future instance variables.... — Steve Tuckner <STUCKNER@...> 2003/12/02

OK so the jist of it is that @_var variables are stored with the class of

[#87095] Re: Attempted roadmap of future instance variables.... — "Robert Klemme" <bob.news@...> 2003/12/03

[#87098] Re: Attempted roadmap of future instance variables.... — "David A. Black" <dblack@...> 2003/12/03

Hi --

[#87102] Re: Attempted roadmap of future instance variables.... — ts <decoux@...> 2003/12/03

>>>>> "D" == David A Black <dblack@wobblini.net> writes:

[#87244] Re: Attempted roadmap of future instance variables.... — "Christoph" <chr_mail@...> 2003/12/05

ts wrote:

[#87275] Re: Attempted roadmap of future instance variables.... — ts <decoux@...> 2003/12/05

>>>>> "C" == Christoph <chr_mail@gmx.net> writes:

[#87286] Re: Attempted roadmap of future instance variables.... — "Christoph" <chr_mail@...> 2003/12/05

ts wrote:

[#87290] Re: Attempted roadmap of future instance variables.... — "David A. Black" <dblack@...> 2003/12/05

Hi --

[#87308] Re: Attempted roadmap of future instance variables.... — Austin Ziegler <austin@...> 2003/12/05

On Fri, 5 Dec 2003 22:56:41 +0900, David A. Black wrote:

[#87310] Re: Attempted roadmap of future instance variables.... — "Christoph" <chr_mail@...> 2003/12/05

Austin Ziegler wrote:

[#87314] Re: Attempted roadmap of future instance variables.... — "T. Onoma" <transami@...> 2003/12/05

On Friday 05 December 2003 05:40 pm, Christoph wrote:

[#87318] Re: Attempted roadmap of future instance variables.... — matz@... (Yukihiro Matsumoto) 2003/12/05

Hi,

[#87335] Re: Attempted roadmap of future instance variables.... — Nathaniel Talbott <nathaniel@...> 2003/12/05

On Dec 5, 2003, at 12:15, Yukihiro Matsumoto wrote:

[#87320] Re: Attempted roadmap of future instance variables.... — Austin Ziegler <austin@...> 2003/12/05

On Sat, 6 Dec 2003 01:40:42 +0900, Christoph wrote:

[#87322] Re: Attempted roadmap of future instance variables.... — "T. Onoma" <transami@...> 2003/12/05

On Friday 05 December 2003 06:41 pm, Austin Ziegler wrote:

[#87066] What's the best way to create methods dealing with an object of a certain class? — Leif K-Brooks <eurleif@...>

I want to add a method to be run on Strings. Currently, I'm just adding

14 messages 2003/12/03
[#87072] Re: What's the best way to create methods dealing with an object of a certain class? — Lyle Johnson <lyle@...> 2003/12/03

Leif K-Brooks wrote:

[#87083] Some Regexp — orlovdn@... (Dmitry N Orlov)

I want to get array from file like this:

20 messages 2003/12/03

[#87203] sorting — vanjac12@... (Van Jacques)

I'm not sure where to post about this problem, so

18 messages 2003/12/04

[#87233] Generalized break? — Hal Fulton <hal9000@...>

I hate to bring up possible language changes, since there is

14 messages 2003/12/04

[#87255] WeakRef and Object#hash — Samuel Tesla <samuel@...>

I'm trying to implement a weak key hash to use for generic objects.

37 messages 2003/12/05
[#87259] Dumb question to which I ought to know the answer by now — "Mark J. Reed" <markjreed@...> 2003/12/05

Is there an assignment version of Hash#values_at, so I can assign

[#87266] Re: Dumb question to which I ought to know the answer by now — Austin Ziegler <austin@...> 2003/12/05

On Fri, 5 Dec 2003 12:42:05 +0900, Mark J. Reed wrote:

[#87333] Re: Attempted roadmap of future instance variables.... — "Weirich, James" <James.Weirich@...>

From: David A. Black [mailto:dblack@wobblini.net]

18 messages 2003/12/05
[#87337] Re: Attempted roadmap of future instance variables.... — Chris Thomas <chris@...> 2003/12/05

[#87402] Re: Attempted roadmap of future instance variables.... — matz@... (Yukihiro Matsumoto) 2003/12/06

Hi,

[#87382] Idea: Linux PIM in Ruby — Hal Fulton <hal9000@...>

On my wishlist of top 20 things I'd like to do: A PIM for Linux.

30 messages 2003/12/06
[#87407] Re: Idea: Linux PIM in Ruby — Lyle Johnson <lyle@...> 2003/12/06

Hal Fulton wrote:

[#87409] rbbr-0.5.0 — Masao Mutoh <mutoh@...>

Hi,

18 messages 2003/12/06

[#87430] Ideas for replacing $0==__FILE__ — Hal Fulton <hal9000@...>

I've accepted now that my "generalized break" was a bad idea. In

26 messages 2003/12/06
[#87720] Re: Ideas for replacing $0==__FILE__ — Eric Hodel <drbrain@...7.net> 2003/12/10

Hal Fulton (hal9000@hypermetrics.com) wrote:

[#87723] Re: Ideas for replacing $0==__FILE__ — Hal Fulton <hal9000@...> 2003/12/10

Eric Hodel wrote:

[#87726] Re: Ideas for replacing $0==__FILE__ — Eric Hodel <drbrain@...7.net> 2003/12/10

Hal Fulton (hal9000@hypermetrics.com) wrote:

[#87459] Trying to create a Ruby daemon — Samuel Kvarnbrink <samuel.kvarnbrink@...>

Hi,

11 messages 2003/12/07

[#87553] format money — saggmannen@... (saggmannen)

Hello, is there a way to format "Money"-style floats in ruby. E.g:

25 messages 2003/12/08

[#87587] Adjusting the Scope of Blocks — Mark Cox <mark_cox@...>

Hi,

22 messages 2003/12/09
[#87606] Re: Adjusting the Scope of Blocks — "Robert Klemme" <bob.news@...> 2003/12/09

[#87620] Re: Adjusting the Scope of Blocks — "David A. Black" <dblack@...> 2003/12/09

Hi --

[#87626] ANN: REXML 2.7.2 — ser@... (Sean Russell)

Hi,

18 messages 2003/12/09

[#87638] Inheriting variables, super, and "not super"? — Hugh Sasse Staff Elec Eng <hgs@...>

Is there a way in a method to say

11 messages 2003/12/09

[#87706] Docs for Socket, OpenSSL, etc — "James F. Hranicky" <jfh@...>

Are there any plans to add docs for modules like Socket and OpenSSL, etc to

23 messages 2003/12/10
[#87766] Re: Docs for Socket, OpenSSL, etc — Simon Strandgaard <neoneye@...> 2003/12/11

On Wed, 10 Dec 2003 23:20:21 +0900, James F. Hranicky wrote:

[#87769] Re: Docs for Socket, OpenSSL, etc — "James F. Hranicky" <jfh@...> 2003/12/11

On Thu, 11 Dec 2003 20:57:00 +0900

[#87780] Re: Docs for Socket, OpenSSL, etc — Dave Thomas <dave@...> 2003/12/11

[#87781] Re: Docs for Socket, OpenSSL, etc — "James F. Hranicky" <jfh@...> 2003/12/11

On Fri, 12 Dec 2003 00:07:28 +0900

[#87775] prog for g.c.d. of 2 integers — vanjac12@... (Van Jacques)

Topics from mathematics make good practice programs, IMO.

13 messages 2003/12/11

[#87783] problems with racc: $end token — "Luke A. Kanies" <luke@...>

Hello,

14 messages 2003/12/11
[#87789] Re: problems with racc: $end token — Jim Freeze <jim@...> 2003/12/11

On Friday, 12 December 2003 at 0:42:30 +0900, Luke A. Kanies wrote:

[#87819] Ruby-Talk Subject Matters — "T. Onoma" <transami@...>

Out of curiosity, how do others feel about "suggestive" threads? Do you feel

15 messages 2003/12/11

[#87856] Simple issue giving problems — Brad <coish@...>

Hello all,

17 messages 2003/12/11

[#88031] inplace assignment — "T. Onoma" <transami@...>

is there anyway, anyway at all, ugly hacks accepted, of doing inplace

40 messages 2003/12/14
[#88032] Re: inplace assignment — Hal Fulton <hal9000@...> 2003/12/14

T. Onoma wrote:

[#88034] Re: inplace assignment — "T. Onoma" <transami@...> 2003/12/14

On Sunday 14 December 2003 05:51 am, Hal Fulton wrote:

[#88037] Re: inplace assignment — Hal Fulton <hal9000@...> 2003/12/14

T. Onoma wrote:

[#88041] Re: inplace assignment — "T. Onoma" <transami@...> 2003/12/14

On Sunday 14 December 2003 07:49 am, Hal Fulton wrote:

[#88056] Re: inplace assignment — "David A. Black" <dblack@...> 2003/12/14

On Sun, 14 Dec 2003, T. Onoma wrote:

[#88059] Re: inplace assignment — "T. Onoma" <transami@...> 2003/12/14

On Sunday 14 December 2003 03:59 pm, David A. Black wrote:

[#88064] Re: inplace assignment — "David A. Black" <dblack@...> 2003/12/14

On Mon, 15 Dec 2003, T. Onoma wrote:

[#88077] All there is to know about Duck Typing (was: inplace assignment) — "T. Onoma" <transami@...> 2003/12/14

Alright, a number of things related to Duck Tpying have been popping up and I

[#88081] Re: All there is to know about Duck Typing (was: inplace assignment) — "David Naseby" <david.naseby@...> 2003/12/14

> -----Original Message-----

[#88147] extremely strange segfault — "Luke A. Kanies" <luke@...>

Hi all,

14 messages 2003/12/15

[#88150] UnboundMethods Useless? — "T. Onoma" <transami@...>

Urrrr.....

34 messages 2003/12/15
[#88239] Re: UnboundMethods Useless? — Dan Doel <djd15@...> 2003/12/16

You can do stuff like this:

[#88309] Re: UnboundMethods Useless? — "T. Onoma" <transami@...> 2003/12/17

On Tuesday 16 December 2003 08:54 pm, Dan Doel wrote:

[#88322] Re: UnboundMethods Useless? — Chad Fowler <chad@...> 2003/12/17

On Wed, 17 Dec 2003, T. Onoma wrote:

[#88323] Re: UnboundMethods Useless? — ts <decoux@...> 2003/12/17

>>>>> "C" == Chad Fowler <chad@chadfowler.com> writes:

[#88327] Re: UnboundMethods Useless? — "T. Onoma" <transami@...> 2003/12/17

On Wednesday 17 December 2003 01:21 pm, ts wrote:

[#88328] Re: UnboundMethods Useless? — ts <decoux@...> 2003/12/17

>>>>> "T" == T Onoma <transami@runbox.com> writes:

[#88332] Re: UnboundMethods Useless? — "T. Onoma" <transami@...> 2003/12/17

On Wednesday 17 December 2003 01:59 pm, ts wrote:

[#88333] Re: UnboundMethods Useless? — "David A. Black" <dblack@...> 2003/12/17

On Wed, 17 Dec 2003, T. Onoma wrote:

[#88336] Re: UnboundMethods Useless? — Peter <Peter.Vanbroekhoven@...> 2003/12/17

> I don't know what you mean by (ir)reversible, but the point is that

[#88337] Re: UnboundMethods Useless? — ts <decoux@...> 2003/12/17

>>>>> "P" == Peter <Peter.Vanbroekhoven@cs.kuleuven.ac.be> writes:

[#88159] Re: Extracting multiple lines from a file — "Berger, Daniel" <djberge@...>

> -----Original Message-----

18 messages 2003/12/15
[#88161] Re: Extracting multiple lines from a file — "Ron Coutts" <rcoutts@...> 2003/12/15

[#88166] Re: Extracting multiple lines from a file — "Mark J. Reed" <markjreed@...> 2003/12/15

On Tue, Dec 16, 2003 at 07:16:23AM +0900, Ron Coutts wrote:

[#88199] Re: Extracting multiple lines from a file — Derek Lewis <lewisd@...00f.net> 2003/12/16

On Tue, 16 Dec 2003, Mark J. Reed wrote:

[#88172] Copying methods from one class to another — "T. Onoma" <transami@...>

Is there any way to copy a method from one class to another?

22 messages 2003/12/16
[#88174] Re: Copying methods from one class to another — Jamis Buck <jgb3@...> 2003/12/16

T. Onoma wrote:

[#88183] Re: Copying methods from one class to another — "T. Onoma" <transami@...> 2003/12/16

On Tuesday 16 December 2003 05:23 am, Jamis Buck wrote:

[#88189] Re: Copying methods from one class to another — "David A. Black" <dblack@...> 2003/12/16

On Tue, 16 Dec 2003, T. Onoma wrote:

[#88191] Re: Copying methods from one class to another — "T. Onoma" <transami@...> 2003/12/16

On Tuesday 16 December 2003 02:51 pm, David A. Black wrote:

[#88195] Re: Copying methods from one class to another — Hacksaw <hacksaw@...> 2003/12/16

Sorry to step into the middle of a conversation, but what does this mean:

[#88211] Newbie questions — jfrapper@... (Jim Frapper)

I was wondering what the equivalent tools were to perldoc(ri is not)

44 messages 2003/12/16
[#88259] Re: Newbie questions — Chad Fowler <chad@...> 2003/12/16

On Wed, 17 Dec 2003, Jim Frapper wrote:

[#88266] Re: Newbie questions — Gavin Sinclair <gsinclair@...> 2003/12/16

On Wednesday, December 17, 2003, 8:10:19 AM, Chad wrote:

[#88270] Re: Newbie questions — Daniel Carrera <dcarrera@...> 2003/12/16

>

[#88271] Re: Newbie questions — "Luke A. Kanies" <luke@...> 2003/12/16

On Wed, 17 Dec 2003, Daniel Carrera wrote:

[#88272] Re: Newbie questions — Daniel Carrera <dcarrera@...> 2003/12/16

On Wed, Dec 17, 2003 at 07:07:45AM +0900, Luke A. Kanies wrote:

[#88280] Re: Newbie questions — "Luke A. Kanies" <luke@...> 2003/12/16

On Wed, 17 Dec 2003, Daniel Carrera wrote:

[#88370] Re: Newbie questions — Derek Lewis <lewisd@...00f.net> 2003/12/17

[#88220] Re: Newbie questions — "Berger, Daniel" <djberge@...>

> -----Original Message-----

31 messages 2003/12/16
[#88224] Re: Newbie questions — Hal Fulton <hal9000@...> 2003/12/16

Berger, Daniel wrote:

[#88227] Re: Newbie questions — Thomas Adam <thomas_adam16@...> 2003/12/16

--- Hal Fulton <hal9000@hypermetrics.com> wrote:

[#88228] Re: Newbie questions — Hal Fulton <hal9000@...> 2003/12/16

Thomas Adam wrote:

[#88289] Very odd IO problem — Brad <coish@...>

All:

18 messages 2003/12/17

[#88414] Yukihiro - Please ensure backwards compatibility — jobeicus@... (Joseph Benik)

having recently migrated one of my machines from a 1.6 flavor to the

14 messages 2003/12/18

[#88494] How to return more than one result from a method? — Tim Hunter <cyclists@...>

I'm trying to code a method that has two result values. The values are

14 messages 2003/12/19

[#88581] replacing two EOL chars by one — xah@... (Xah Lee)

i have a bunch of java files that has spaced-out formatting that i

23 messages 2003/12/20

[#88643] Ruby 1.8.1 preview4 — matz@... (Yukihiro Matsumoto)

Hi,

32 messages 2003/12/22

[#88731] RubyGems and dependencies — sera@... (Francis Hwang)

Two RubyGems questions about dependencies:

16 messages 2003/12/23

[#88781] TkText freezes — quillion <me@...>

Hello all,

21 messages 2003/12/24

[#88814] ruby 1.8.1 — matz@... (Yukihiro Matsumoto)

Merry Christmas,

25 messages 2003/12/24

[#88936] Inconsistent value of uninitialized variable — Gavin Sinclair <gsinclair@...>

The following statement, free of all context, generates an error:

10 messages 2003/12/28

[#88954] An addition to Array (or Enumerable)? — Harry Ohlsen <harryo@...>

Yesterday, I wanted to get the output from "ls -l some_file" and pull out just the file size and the file name. As I start writing this, I realise, of course, that I'd have been better off just using the File#size method, but I still think the issue I hit is interesting.

12 messages 2003/12/28

[#89015] ruby-dev summary 22273-22434 — "Takaaki Tateishi" <ttate@...>

Hello,

16 messages 2003/12/30
[#89016] Re: ruby-dev summary 22273-22434 — Austin Ziegler <austin@...> 2003/12/30

On Wed, 31 Dec 2003 00:45:11 +0900, Takaaki Tateishi wrote:

Re: rubynuby code critique request

From: Derek Lewis <lewisd@...00f.net>
Date: 2003-12-08 18:22:50 UTC
List: ruby-talk #87552
I may be a bit off here, but this project sounds very similar to one I've
been working on for some time.  I just recently rewrote it in ruby, which
was my first major experience with ruby.
You may be interested in taking a look, either for ideas, or (I hope ;))
if you want to help. :)

http://www.rubyforge.org/projects/rcoaster

I'm expecting to make another release, with XOSD support, sometime in the
next couple weeks.

On Mon, 8 Dec 2003, Robert Klemme wrote:

>
>
> "Jeff Dickens" <dickens@dreamgeardotcom.butdontspamme> schrieb im
> Newsbeitrag
> news:aVaAb.156105$Ec1.6116265@bgtnsc05-news.ops.worldnet.att.net...
> > I tried using the wiki at rubygarden.org but it just made a mess...
> probably
> > not designed for things this big.
> >
> > Anyhow, here's a (longish) program I've written as my first "real" ruby
> > program.  I'm reading from the "Programming Ruby" book at
> rubycentral.com,
> > and what do you know, I actually do have a jukebox of sorts.  Actually
> it's
> > a radio station I do some work for.  So I expanded the example code
> some.
> > Have a look and poke some holes.
> >
> > It reads a file that looks like this:
> >
> >   18 And Life; Skid Row
> >   19th Nervous Breakdown; Rolling Stones
> >   2000 Light Years From Home; Rolling Stones
> >   20th Centry Fox; Doors
> >   2112 (Parts 1-7); Rush
> >   29 Palms; Robert Plant
> >   30 Days In The Hole; Humble Pie
> >   5:15; Who
> >   867-5309; Tommy Tutone
> >   #9 Dream; John Lennon
> >   Abacab; Genesis
> >   Adam Raised a Cain; Bruce Springsteen
> >   A Day In The Life; Beatles
> >   A Face In The Crowd; Tom Petty
> >   After Midnight; Eric Clapton
> >   After The Gold Rush; Neil Young
> >   Against The Wind; Bob Seger
> >   A Hard Day's Night; Beatles
> >
> >
> > It reads the file and can create a word list that could be used for a
> > full-text search, a listing by artist, and a listing by artist in HTML
> with
> > a clickable index.
> >
> > Here's the code.  Your input is appreciated.
> >
> > #!/usr/local/bin/ruby -w
> >
> > require 'optparse'
> >
> >
> > class SongList
> >   def initialize
> >     @songs = Array.new
> >     @index = WordIndex.new
> >     @aindex = ArtistIndex.new
> >   end
> >   def append(aSong)
>
> Formatting the names is not a responsibility of the list.  This should be
> done either in the Song or during reading.
>
> >     aSong.name.sub!(/\s+$/,'')    # lose leading and trailing
> >     aSong.artist.sub!(/\s+$/,'')  # whitespace
> >     aSong.name.sub!(/^\s+/,'')
> >     aSong.artist.sub!(/^\s+/,'')
>
>
> >     @songs.push(aSong)
> >     @index.index(aSong, aSong.name, aSong.artist)
> >     @aindex.aindex(aSong, aSong.artist)
> >     self
> >   end
> >   def [](key)
> >     return @songs[key] if key.kind_of?(Integer)
> >     return @songs.find { |aSong| aSong.name == key }
> >   end
>
> Can be delegated to the indexes:
> >   def lookup(aWord)
> >     @index.lookup(aWord)
> >   end
> >   def wordlist
> >     @index.wordlist
> >   end
>
> >   def wordindex(outFile)
> >     @index.wordlist.each do |aWord|
> >       outFile.puts aWord
> >       @index.lookup(aWord).each do |aSong|
> >         outFile.puts "\t" + aSong.name + "; " + aSong.artist
> >       end
> >     end
> >   end
>
> Can be delegated to the indexes:
> >   def alookup(artist)
> >     @aindex.alookup(artist)
> >   end
> >   def listartists
> >     @aindex.listartists
> >   end
>
> >   def listsongs(outFile)
> >     @aindex.listartists.each do |anArtist|
> >       outFile.puts anArtist
> >       @aindex.alookup(anArtist).sort \
> >       {|a,b| a.name <=> b.name}.each do |aSong|
> >         outFile.puts "\t" + aSong.name
> >       end
> >     end
> >   end
>
> I'd put the HTML methods into antoher class because this is view specific,
> i.e. you might want to do other presentations as well:
> >   def html(outFile)
> >     outFile.print "<a name=\"top\" id=\"top\"></a>\n"
> >     @aindex.listartists.each do |anArtist|
> >       safeKey = anArtist.gsub(/[\s\.\-\,\/\\\']/, '')
> >       outFile.print "<a href=\"##{safeKey}\">"
> >       outFile.print "<div class=\"artistx\">#{anArtist}</div></a>\n"
> >     end
> >     @aindex.listartists.each do |anArtist|
> >       safeKey = anArtist.gsub(/[\s\.\-\,\/\\\']/, '')
> >       htmlDetail(outFile, anArtist, safeKey)
> >     end
> >   end
> >
> >   def htmlDetail(outFile, anArtist, safeKey)
> >     outFile.print "<div class=\"artist\">"
> >     outFile.print "<a name=\"#{safeKey}\" id=\"#{safeKey}\">"
> >     outFile.print "#{anArtist}</a>\n"
> >     outFile.print "<a href=\"#top\" class=\"toplink\">top</a></div>\n"
> >     @aindex.alookup(anArtist).sort \
> >     {|a,b| a.name <=> b.name}.each do |aSong|
> >       outFile.print "\t<div class=\"song\">"
> >       outFile.print "#{aSong.name}</div>\n"
> >     end
> >   end
> >
> > end #class SongList
>
> Index classes are not needed when using Hash's features:
> > class WordIndex
> >   def initialize
> >     @index = Hash.new(nil)
> >   end
> >   def index(anObject, *phrases)
> >     phrases.each do |aPhrase|
> >       aPhrase.scan(/\w[-\w]+/) do |aWord|   # extract each word
> >         aWord.downcase!
> >         @index[aWord] = [] if @index[aWord].nil?
> >         @index[aWord].push(anObject)
> >       end
> >     end
> >   end
> >   def lookup(aWord)
> >     @index[aWord.downcase]
> >   end
> >   def wordlist
> >     @index.keys.sort
> >   end
> > end
> >
> > class ArtistIndex
> >   def initialize
> >     @aindex = Hash.new(nil)
> >   end
> >   def aindex (anObject, artist)
> >     @aindex[artist] = [] if @aindex[artist].nil?
> >     @aindex[artist].push(anObject)
> >   end
> >   def alookup(artist)
> >     @aindex[artist]
> >   end
> >   def listartists
> >     @aindex.keys.sort
> >   end
> > end
> >
>
> Ok.
> > class Song
> >   def initialize(name, artist)
> >     @name = name
> >     @artist = artist
> >   end
> >   attr_reader :name, :artist
> >   def to_s
> >     "Song: #{@name}--#{@artist}"
> >   end
> > end
> >
> > def build_data(inFile); # Read the data and build structures
>
> # don't use a global var here, just return the SongList
> >   $songs = SongList.new # inFile is an open file descriptor
> >   inFile.each do |line|
> >     name, artist = line.chomp.split(/\s*;\s*/)
> >     unless name and artist
> >       puts "input data format error"
>
> better use an exception here and don't terminate the whole script:
> >       exit
> >     end
> >     $songs.append Song.new(name, artist)
> >   end
> > end
> >
> >
> > #---------------Main Begins Here--------------------------
> >
> >
> > $0 = File.basename($0)
> >
> > vars = {}
> > ARGV.options do
> >   |opts|
> >   opts.banner = "\nUsage: #{$0} [options] [input filename]\n\n" \
> >   "Reads from stdin if [input filename] is \n" \
> >   "not present.\n\n" \
> >   "Data format is \"Song Title; Artist\"\n\n"
> >
> >   opts.on_head("Options:")
> >
> >   opts.on("-w", "--wordindex WORDINDEXFILE", String,
> >    "Generate Word Index",
> >    "in WORDINDEXFILE") {|vars[:wordIndexFile]|}
> >
> >   opts.on("-g", "--generatehtml HTMLFILE", String,
> >    "Generate HTML File",
> >    "in HTMLFILE") {|vars[:htmlFile]|}
> >
> >   opts.on("-l", "--list LISTFILE", String,
> >    "Generate List File",
> >    "in LISTFILE") {|vars[:listFile]|}
> >
> >   opts.on_tail("-h", "--help", "show this message") {puts opts; exit}
> >
> >   opts.parse!
> >   end
> >
> > if vars.length < 1
> >   puts "Nothing to do"
> >   puts ARGV.options
> >   exit
> > end
> >
> > if ARGV.length > 1
> >   puts "Too many arguments"
> >   exit
> > end
> >
> > if ARGV.length == 1
> >   then
> >   unless FileTest.readable?(ARGV[0]) # test if input file exists
> >     puts ARGV[0] + " not readable"
> >     exit
> >   end
> >   inFile=File.open(ARGV[0])  # open inputfile
> >   build_data(inFile)  # and read/build data
> >   inFile.close
> >   else
> >   build_data($stdin)  # just use stdin if no input file
> > end
> >
> > if vars[:wordIndexFile]  # Generate word index file if -w
>
> better use block form, it's safer:
> >   outFile = File.new(vars[:wordIndexFile], "w")
> >   $songs.wordindex(outFile)
> >   outFile.close
>
> File.open(vars[:wordIndexFile], "w") do |outFile|
>   $songs.wordindex(outFile)
> end
>
> > end
> >
> > if vars[:listFile]  # Generate listing file if -l
> >   outFile = File.new(vars[:listFile], "w")
> >   $songs.listsongs(outFile)
> >   outFile.close
> > end
> >
> > if vars[:htmlFile]  # Generate html file if -g
> >   outFile = File.new(vars[:htmlFile], "w")
> >   $songs.html(outFile)
> >   outFile.close
> > end
>
> That's how I would start as a quick solution.  Disadvantages:
>
>  - it's not complete
>
> require 'set'
>
> # special class to prevent lookups from creating entries
> class Index < Hash
>   def insert(key, value)
>     ( self[key] ||= Set.new ) << value
>   end
> end
>
> class Song
>   attr_accessor :artist, :title
>
>   def initialize(title, artist)
>     @artist, @title = artist, title
>   end
>
>   def eql_impl?( s )
>     title == s.sitle && artist == s.artist
>   end
>
>   alias :eql? :eql_impl?
>   alias :== :eql_impl?
>
>   def hash
>     title.hash ^ artist.hash
>   end
>
>   private :eql_impl?
> end
>
>
> class SongList
>   def create_index
>     # Hash.new {|h,k|h[k]=Set.new}
>     Index.new
>   end
>
>   attr_reader :artist_index, :word_index, :songs
>
>   def initialize
>     @artist_index = create_index
>     @word_index = create_index
>     @songs = Set.new
>   end
>
>   def add(song)
>     songs << song
>     artist_index.insert( song.artist, song )
>
>     [song.artist, song.title].each do |str|
>       str.scan( /\w+/ ) {|word| word_index.insert( word, song ) }
>     end
>   end
>
>   def load(file)
>     File.open( file ) do |io|
>       io.each_line do |line|
>         if /^\s*\b(.*)\b\s*;\s*\b(.*)\b\s*$/ =~ line
>           add Song.new($1, $2)
>         end
>       end
>     end
>   end
>
>   def self.load(file)
>     sl = self.new
>     sl.load( file )
>     sl
>   end
> end
>
> # simple test
> sl = SongList.load( "songs.txt" )
> p sl
> p sl.word_index[ "A" ]
>
>
> Kind regards
>
>     robert
>
>

Derek Lewis

===================================================================
      Java Web-Application Developer

      Email    : email@lewisd.com
      Cellular : 604.312.2846
      Website  : http://www.lewisd.com

 "If you've got a 5000-line JSP page that has "all in one" support
 for three input forms and four follow-up screens, all controlled
 by "if" statements in scriptlets, well ... please don't show it
 to me :-).  Its almost dinner time, and I don't want to lose my
 appetite :-)."
      - Craig R. McClanahan


In This Thread

Prev Next