[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

FasterCSV.foreach lineno?

Bil Kleb

4/24/2008 11:51:00 AM

OK, so I can't think my way out of a paper this morning.

Can I access FasterCVS#lineno while inside a foreach?

For example,

$ cat << EOF > csv_file
one
two
three
EOF

$ ruby -rubygems -e'require "fastercsv";FasterCSV.foreach("csv_file") {|r| puts "lineno somehow"}'

Thanks,
--
Bil Kleb
http://fun3d.lar...
4 Answers

Rob Biedenharn

4/24/2008 12:47:00 PM

0

On Apr 24, 2008, at 7:55 AM, Bil Kleb wrote:

> OK, so I can't think my way out of a paper this morning.
>
> Can I access FasterCVS#lineno while inside a foreach?
>
> For example,
>
> $ cat << EOF > csv_file
> one
> two
> three
> EOF
>
> $ ruby -rubygems > -e'require "fastercsv";FasterCSV.foreach("csv_file")> {|r| puts "lineno somehow"}'
>
> Thanks,
> --
> Bil Kleb
> http://fun3d.lar...

Bil,

Since it looks like the answer to your first question is "No.", what
if you defined:

class FasterCSV
def self.foreach_with_lineno(path, options = Hash.new, &block)
open(path, options) do |csv|
csv.each {|line| block[line, csv.lineno]}
end
end
end

irb> FasterCSV.foreach_with_lineno("csv_file") {|r,l| puts "#{l}: #{r}"}
1: one
2: two
3: three
=> nil

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com


James Gray

4/24/2008 1:08:00 PM

0

On Apr 24, 2008, at 6:55 AM, Bil Kleb wrote:

> OK, so I can't think my way out of a paper this morning.
>
> Can I access FasterCVS#lineno while inside a foreach?

No, but you can switch to an each() iterator and get at it that way
(just as you would with an IO object):

$ cat data.csv
one
two
three
$ cat fcsv_example.rb
#!/usr/bin/env ruby -wKU

require "rubygems"
require "faster_csv"

FCSV.open("data.csv") do |csv|
csv.each do |row|
puts "#{csv.lineno}: #{row}"
end
end
$ ruby fcsv_example.rb
1: one
2: two
3: three

Hope that helps.

James Edward Gray II

Bil

4/24/2008 3:20:00 PM

0

On Apr 24, 9:07 am, James Gray <ja...@grayproductions.net> wrote:
>
> No, but you can switch to an each() iterator and get at it that way  
> [..]
> Hope that helps.

Yes, thanks.

Regards,
--
http://twitter.co...

P.S. My comp.lang.ruby newsfeed didn't carry either of your replies.

James Gray

4/24/2008 3:32:00 PM

0

On Apr 24, 2008, at 10:25 AM, Bil wrote:

> P.S. My comp.lang.ruby newsfeed didn't carry either of your replies.

They seem to have reached Usenet OK:

http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/9a14022...

James Edward Gray II