On Feb 6, 2009, at 8:32 AM, Mmcolli00 Mom wrote:

> Can this be done with Ruby? (this may be a shot in the dark)

Anything can be done with Ruby.  ;)

> Say you have a text file with a lot of data and you want to group  
> all of
> your data by a specific value. Is there a way to code something in  
> ruby
> similar to a query that you would create using sql. Can this even be
> done using Ruby? And if so, is there a library that you can refer me  
> to?
> If not, do you know any alternative ways? Thanks, MC

I'll show some pure Ruby code below that seems to do what you want,  
but if you really want a query language you have several options.   
Personally, I would use the Amalgalite gem to get SQLite.  You would  
then just read the data and write it into a database.  You can then  
query it in anyway you like.

> example of text:
>
> auto, model
> car, honda
> truck, chevy
> car, nissan
> truck, toyota
> truck, ford
>
>
> how i'd like it to look:
>
> car, honda, nissan,
> truck, chevy, toyota, ford

Here's some code that does that:

#!/usr/bin/env ruby -wKU

headers = DATA.gets.strip.split(/,\s*/)

related = { }
DATA.each do |row|
   fields = Hash[*headers.zip(row.strip.split(/,\s*/)).flatten]
   (related[fields["auto"]] ||= [ ]) << fields["model"]
end

related.keys.sort.each do |key|
   puts(([key] + related[key]).join(", "))
end

__END__
auto, model
car, honda
truck, chevy
car, nissan
truck, toyota
truck, ford

Hope it helps.

James Edward Gray II