[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Hash of Arrays nItems problem

hoyhoy

3/17/2006 10:11:00 PM

I'm having a bit of problem using a hash of arrays. It appears that
nitems are wrong for the individual elements are wrong when I do this:

#!/usr/bin/env ruby
$:.unshift(File.join('..', 'lib'))
require 'http-access2'

h = HTTPAccess2::Client.new()
element = Hash.new([])

while urlstr = ARGV.shift
response = h.get(urlstr) { |data|

data.gsub(/<(description|title|link)>(.+)<\/(description|title|link)>/)
{
print $1,"\n"
element[$1].push($2.gsub(/\s\s+/m," "))
}
}
end

print "site description ---> ", site_description, "\n"
print "site title ---------> ", site_title, "\n"
print "description.nitems -> ", element['description'].nitems, "\n"
print "title.nitems -------> ", element['title'].nitems, "\n"

site_description = element['description'].shift
site_title = element['title'].shift

while element['description'].nitems > 0
print element['title'].shift.gsub(/\n+/, ""),"\n"
print element['description'].shift.gsub(/\n+/, ""),"\n\n"
end

% ruby rss.rb http://involution.c...
site description ---> involution.com
site title ---------> http://invo...
description.nitems -> 30
title.nitems -------> 30

There are 10 of each links, putting a print in the hget enclosure shows
that only 10 descriptions, links, and titles are added, but the
individual array sizes are reported as 30. What am I doing wrong?

Tony

3 Answers

Robert Klemme

3/19/2006 12:32:00 PM

0

hoyhoy@gmail.com wrote:
> I'm having a bit of problem using a hash of arrays. It appears that
> nitems are wrong for the individual elements are wrong when I do this:
>
> #!/usr/bin/env ruby
> $:.unshift(File.join('..', 'lib'))
> require 'http-access2'
>
> h = HTTPAccess2::Client.new()
> element = Hash.new([])

You want

element = Hash.new {|h,k| h[k] = []}

Otherwise you'll be adding to the *same* single array instance for *all*
elements.

Kind regards

robert

hoyhoy

3/19/2006 10:56:00 PM

0

Oh, snap. Thanks robert. I will name my first son Robert in your
honor. Thanks a million.

Tony Perrie
http://invo...

Robert Klemme

3/20/2006 9:36:00 AM

0

hoyhoy@gmail.com wrote:
> Oh, snap. Thanks robert. I will name my first son Robert in your
> honor. Thanks a million.

You're welcome. And I feel humbled.

Kind regards

robert